15be15d8f23d0aa745e941b2be2faba51afebdf2
[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 UnsignedBolt12Invoice;
11 class Bolt12Invoice;
12 class BlindedPayInfo;
13 class DelayedPaymentOutputDescriptor;
14 class StaticPaymentOutputDescriptor;
15 class SpendableOutputDescriptor;
16 class ChannelSigner;
17 class EcdsaChannelSigner;
18 class WriteableEcdsaChannelSigner;
19 class Recipient;
20 class EntropySource;
21 class NodeSigner;
22 class SignerProvider;
23 class InMemorySigner;
24 class KeysManager;
25 class PhantomKeysManager;
26 class BackgroundProcessor;
27 class GossipSync;
28 class DefaultRouter;
29 class Router;
30 class ScorerAccountingForInFlightHtlcs;
31 class InFlightHtlcs;
32 class RouteHop;
33 class BlindedTail;
34 class Path;
35 class Route;
36 class RouteParameters;
37 class PaymentParameters;
38 class Payee;
39 class RouteHint;
40 class RouteHintHop;
41 class Score;
42 class LockableScore;
43 class WriteableScore;
44 class MultiThreadedLockableScore;
45 class MultiThreadedScoreLock;
46 class ChannelUsage;
47 class FixedPenaltyScorer;
48 class ProbabilisticScorer;
49 class ProbabilisticScoringFeeParameters;
50 class ProbabilisticScoringDecayParameters;
51 class BestBlock;
52 class Listen;
53 class Confirm;
54 class ChannelMonitorUpdateStatus;
55 class Watch;
56 class Filter;
57 class WatchedOutput;
58 class InitFeatures;
59 class NodeFeatures;
60 class ChannelFeatures;
61 class Bolt11InvoiceFeatures;
62 class OfferFeatures;
63 class InvoiceRequestFeatures;
64 class Bolt12InvoiceFeatures;
65 class BlindedHopFeatures;
66 class ChannelTypeFeatures;
67 class Offer;
68 class Amount;
69 class Quantity;
70 class NodeId;
71 class NetworkGraph;
72 class ReadOnlyNetworkGraph;
73 class NetworkUpdate;
74 class P2PGossipSync;
75 class ChannelUpdateInfo;
76 class ChannelInfo;
77 class DirectedChannelInfo;
78 class EffectiveCapacity;
79 class RoutingFees;
80 class NodeAnnouncementInfo;
81 class NodeAlias;
82 class NodeInfo;
83 class ChannelDerivationParameters;
84 class AnchorDescriptor;
85 class HTLCDescriptor;
86 class BumpTransactionEvent;
87 class Input;
88 class Utxo;
89 class CoinSelection;
90 class CoinSelectionSource;
91 class WalletSource;
92 class Wallet;
93 class BumpTransactionEventHandler;
94 class FailureCode;
95 class ChannelManager;
96 class ChainParameters;
97 class CounterpartyForwardingInfo;
98 class ChannelCounterparty;
99 class ChannelDetails;
100 class ChannelShutdownState;
101 class RecentPaymentDetails;
102 class PhantomRouteHints;
103 class ChannelManagerReadArgs;
104 class ChannelHandshakeConfig;
105 class ChannelHandshakeLimits;
106 class MaxDustHTLCExposure;
107 class ChannelConfig;
108 class ChannelConfigUpdate;
109 class UserConfig;
110 class APIError;
111 class ChannelMonitorUpdate;
112 class MonitorEvent;
113 class HTLCUpdate;
114 class Balance;
115 class ChannelMonitor;
116 class ExpandedKey;
117 class CustomMessageHandler;
118 class IgnoringMessageHandler;
119 class ErroringMessageHandler;
120 class MessageHandler;
121 class SocketDescriptor;
122 class PeerHandleError;
123 class PeerManager;
124 class RapidGossipSync;
125 class Persister;
126 class UnsignedInvoiceRequest;
127 class InvoiceRequest;
128 class DecodeError;
129 class Init;
130 class ErrorMessage;
131 class WarningMessage;
132 class Ping;
133 class Pong;
134 class OpenChannel;
135 class OpenChannelV2;
136 class AcceptChannel;
137 class AcceptChannelV2;
138 class FundingCreated;
139 class FundingSigned;
140 class ChannelReady;
141 class TxAddInput;
142 class TxAddOutput;
143 class TxRemoveInput;
144 class TxRemoveOutput;
145 class TxComplete;
146 class TxSignatures;
147 class TxInitRbf;
148 class TxAckRbf;
149 class TxAbort;
150 class Shutdown;
151 class ClosingSignedFeeRange;
152 class ClosingSigned;
153 class UpdateAddHTLC;
154 class OnionMessage;
155 class UpdateFulfillHTLC;
156 class UpdateFailHTLC;
157 class UpdateFailMalformedHTLC;
158 class CommitmentSigned;
159 class RevokeAndACK;
160 class UpdateFee;
161 class ChannelReestablish;
162 class AnnouncementSignatures;
163 class NetAddress;
164 class UnsignedGossipMessage;
165 class UnsignedNodeAnnouncement;
166 class NodeAnnouncement;
167 class UnsignedChannelAnnouncement;
168 class ChannelAnnouncement;
169 class UnsignedChannelUpdate;
170 class ChannelUpdate;
171 class QueryChannelRange;
172 class ReplyChannelRange;
173 class QueryShortChannelIds;
174 class ReplyShortChannelIdsEnd;
175 class GossipTimestampFilter;
176 class ErrorAction;
177 class LightningError;
178 class CommitmentUpdate;
179 class ChannelMessageHandler;
180 class RoutingMessageHandler;
181 class OnionMessageHandler;
182 class Level;
183 class Record;
184 class Logger;
185 class FutureCallback;
186 class Future;
187 class Sleeper;
188 class OffersMessageHandler;
189 class OffersMessage;
190 class HTLCClaim;
191 class CounterpartyCommitmentSecrets;
192 class TxCreationKeys;
193 class ChannelPublicKeys;
194 class HTLCOutputInCommitment;
195 class ChannelTransactionParameters;
196 class CounterpartyChannelTransactionParameters;
197 class DirectedChannelTransactionParameters;
198 class HolderCommitmentTransaction;
199 class BuiltCommitmentTransaction;
200 class ClosingTransaction;
201 class TrustedClosingTransaction;
202 class CommitmentTransaction;
203 class TrustedCommitmentTransaction;
204 class ShutdownScript;
205 class InvalidShutdownScript;
206 class Bolt12ParseError;
207 class Bolt12SemanticError;
208 class BroadcasterInterface;
209 class ConfirmationTarget;
210 class FeeEstimator;
211 class OnionMessageContents;
212 class CustomOnionMessageContents;
213 class PaymentPurpose;
214 class PathFailure;
215 class ClosureReason;
216 class HTLCDestination;
217 class PaymentFailureReason;
218 class Event;
219 class MessageSendEvent;
220 class MessageSendEventsProvider;
221 class OnionMessageProvider;
222 class EventsProvider;
223 class EventHandler;
224 class FilesystemPersister;
225 class Bolt11ParseError;
226 class ParseOrSemanticError;
227 class Bolt11Invoice;
228 class SignedRawBolt11Invoice;
229 class RawBolt11Invoice;
230 class RawDataPart;
231 class PositiveTimestamp;
232 class SiPrefix;
233 class Currency;
234 class Sha256;
235 class Description;
236 class PayeePubKey;
237 class ExpiryTime;
238 class MinFinalCltvExpiryDelta;
239 class Fallback;
240 class Bolt11InvoiceSignature;
241 class PrivateRoute;
242 class CreationError;
243 class Bolt11SemanticError;
244 class SignOrCreationError;
245 class OutPoint;
246 class BigSize;
247 class Hostname;
248 class TransactionU16LenLimited;
249 class UntrustedString;
250 class PrintableString;
251 class CustomMessageReader;
252 class Type;
253 class PaymentError;
254 class UtxoLookupError;
255 class UtxoResult;
256 class UtxoLookup;
257 class UtxoFuture;
258 class OnionMessenger;
259 class MessageRouter;
260 class DefaultMessageRouter;
261 class OnionMessagePath;
262 class Destination;
263 class SendError;
264 class CustomOnionMessageHandler;
265 class BlindedPath;
266 class BlindedHop;
267 class GraphSyncError;
268 class InvoiceError;
269 class ErroneousField;
270 class MonitorUpdateId;
271 class Persist;
272 class LockedChannelMonitor;
273 class ChainMonitor;
274 class CResult_LockedChannelMonitorNoneZ;
275 class CResult_TransactionU16LenLimitedNoneZ;
276 class CVec_C2Tuple_BlindedPayInfoBlindedPathZZ;
277 class CResult_PhantomRouteHintsDecodeErrorZ;
278 class CResult_FundingCreatedDecodeErrorZ;
279 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
280 class CVec_C2Tuple_u32TxOutZZ;
281 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
282 class COption_PaymentSecretZ;
283 class CResult_ChannelInfoDecodeErrorZ;
284 class COption_MaxDustHTLCExposureZ;
285 class CResult_NoneSendErrorZ;
286 class COption_OffersMessageZ;
287 class CResult_CVec_u8ZPeerHandleErrorZ;
288 class COption_NetworkUpdateZ;
289 class COption_u64Z;
290 class CResult_GossipTimestampFilterDecodeErrorZ;
291 class CResult_PaymentPreimageAPIErrorZ;
292 class CResult_RouteHintDecodeErrorZ;
293 class COption_FilterZ;
294 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
295 class CResult_COption_APIErrorZDecodeErrorZ;
296 class CVec_UpdateAddHTLCZ;
297 class CResult_TxAbortDecodeErrorZ;
298 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
299 class COption_u32Z;
300 class CResult_CommitmentSignedDecodeErrorZ;
301 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
302 class CResult_TransactionNoneZ;
303 class CResult_CommitmentTransactionDecodeErrorZ;
304 class COption_DurationZ;
305 class C2Tuple_TxidCOption_BlockHashZZ;
306 class COption_PaymentHashZ;
307 class CResult_OpenChannelDecodeErrorZ;
308 class CResult_ErrorMessageDecodeErrorZ;
309 class COption_APIErrorZ;
310 class CResult_QueryChannelRangeDecodeErrorZ;
311 class CVec_TransactionZ;
312 class CVec_InputZ;
313 class CResult_PartiallySignedTransactionNoneZ;
314 class CResult_ChannelFeaturesDecodeErrorZ;
315 class CResult_ChannelReadyDecodeErrorZ;
316 class CResult_UpdateFeeDecodeErrorZ;
317 class CResult_NoneBolt11SemanticErrorZ;
318 class CResult_NoneRetryableSendFailureZ;
319 class COption_BlockHashZ;
320 class CResult_NodeIdDecodeErrorZ;
321 class CResult_boolLightningErrorZ;
322 class CResult_ChannelShutdownStateDecodeErrorZ;
323 class CResult_NodeAnnouncementInfoDecodeErrorZ;
324 class C2Tuple_BlockHashChannelMonitorZ;
325 class CResult_COption_NetworkUpdateZDecodeErrorZ;
326 class CVec_UpdateFailMalformedHTLCZ;
327 class CResult_ShutdownScriptNoneZ;
328 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
329 class CResult_ShutdownScriptInvalidShutdownScriptZ;
330 class CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ;
331 class COption_HTLCDestinationZ;
332 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ;
333 class CVec_RouteHopZ;
334 class CResult_CVec_UtxoZNoneZ;
335 class COption_CustomOnionMessageContentsZ;
336 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
337 class CResult_COption_KeyPairZNoneZ;
338 class CVec_ThirtyTwoBytesZ;
339 class CResult_ClosingSignedDecodeErrorZ;
340 class CResult_NonePaymentErrorZ;
341 class CVec_CResult_NoneAPIErrorZZ;
342 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
343 class CVec_RecentPaymentDetailsZ;
344 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
345 class CVec_RouteHintHopZ;
346 class CResult_UntrustedStringDecodeErrorZ;
347 class CVec_U5Z;
348 class CResult_PaymentParametersDecodeErrorZ;
349 class CResult_TxAckRbfDecodeErrorZ;
350 class CResult_Bolt11InvoiceBolt11SemanticErrorZ;
351 class COption_UtxoLookupZ;
352 class CResult_PongDecodeErrorZ;
353 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
354 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ;
355 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
356 class C2Tuple_BlockHashChannelManagerZ;
357 class CResult_ChannelTransactionParametersDecodeErrorZ;
358 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ;
359 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
360 class C2Tuple_PaymentHashPaymentIdZ;
361 class CResult_NoneErrorZ;
362 class CResult_InFlightHtlcsDecodeErrorZ;
363 class CResult_COption_HTLCDestinationZDecodeErrorZ;
364 class C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ;
365 class CResult_BlindedHopDecodeErrorZ;
366 class CResult_NoneLightningErrorZ;
367 class CResult_FixedPenaltyScorerDecodeErrorZ;
368 class CVec_BlindedPathZ;
369 class CResult_PaymentHashRetryableSendFailureZ;
370 class C2Tuple_PublicKeyCOption_NetAddressZZ;
371 class COption_CVec_NetAddressZZ;
372 class CResult_NonePeerHandleErrorZ;
373 class CResult_TrustedCommitmentTransactionNoneZ;
374 class CResult_CVec_SignatureZNoneZ;
375 class CResult_PaymentFailureReasonDecodeErrorZ;
376 class CResult__u832APIErrorZ;
377 class CResult_COption_MonitorEventZDecodeErrorZ;
378 class CResult_COption_EventZDecodeErrorZ;
379 class CResult_RoutingFeesDecodeErrorZ;
380 class CResult_PayeePubKeyErrorZ;
381 class CResult_DescriptionCreationErrorZ;
382 class CResult_PaymentIdPaymentErrorZ;
383 class CResult_QueryShortChannelIdsDecodeErrorZ;
384 class CResult_UpdateAddHTLCDecodeErrorZ;
385 class COption_MonitorEventZ;
386 class COption_CVec_ChainHashZZ;
387 class COption_TypeZ;
388 class CResult_COption_TypeZDecodeErrorZ;
389 class COption_KeyPairZ;
390 class CResult_Bolt11InvoiceSignOrCreationErrorZ;
391 class COption_ScriptZ;
392 class CResult_UpdateFailHTLCDecodeErrorZ;
393 class CResult_COption_PathFailureZDecodeErrorZ;
394 class CResult_RevokeAndACKDecodeErrorZ;
395 class CResult_SpendableOutputDescriptorDecodeErrorZ;
396 class CResult_UnsignedChannelUpdateDecodeErrorZ;
397 class CVec_C2Tuple_u32ScriptZZ;
398 class CResult_InvoiceErrorDecodeErrorZ;
399 class CVec_BlindedHopZ;
400 class CResult_PaymentHashPaymentSendFailureZ;
401 class CResult_COption_ClosureReasonZDecodeErrorZ;
402 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
403 class CResult_RouteParametersDecodeErrorZ;
404 class CResult_PrivateRouteCreationErrorZ;
405 class CResult_NodeAliasDecodeErrorZ;
406 class CVec_UpdateFulfillHTLCZ;
407 class CResult_AnnouncementSignaturesDecodeErrorZ;
408 class CResult_UpdateFulfillHTLCDecodeErrorZ;
409 class CResult_TxCompleteDecodeErrorZ;
410 class CResult_NodeFeaturesDecodeErrorZ;
411 class CResult_InMemorySignerDecodeErrorZ;
412 class CResult_TxSignaturesDecodeErrorZ;
413 class CVec_HTLCDescriptorZ;
414 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
415 class COption_ScalarZ;
416 class COption_PathFailureZ;
417 class CResult_ChannelUpdateInfoDecodeErrorZ;
418 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
419 class CVec_UpdateFailHTLCZ;
420 class CVec_TxOutZ;
421 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
422 class CVec_SpendableOutputDescriptorZ;
423 class COption_C2Tuple_u64u64ZZ;
424 class CResult_ChannelAnnouncementDecodeErrorZ;
425 class CResult_HTLCUpdateDecodeErrorZ;
426 class C2Tuple_SignatureCVec_SignatureZZ;
427 class C2Tuple_PartiallySignedTransactionusizeZ;
428 class CResult_TxAddInputDecodeErrorZ;
429 class COption_WriteableScoreZ;
430 class CResult_TxInitRbfDecodeErrorZ;
431 class CVec_OutPointZ;
432 class CResult_PositiveTimestampCreationErrorZ;
433 class C2Tuple__u168_u168Z;
434 class CResult_ChannelMonitorUpdateDecodeErrorZ;
435 class C2Tuple_BlindedPayInfoBlindedPathZ;
436 class CResult_ReplyChannelRangeDecodeErrorZ;
437 class COption_PaymentPreimageZ;
438 class CResult_NetAddressDecodeErrorZ;
439 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
440 class C2Tuple_PublicKeyTypeZ;
441 class CResult_TxRemoveOutputDecodeErrorZ;
442 class CResult_ChannelReestablishDecodeErrorZ;
443 class CResult_ScriptNoneZ;
444 class CResult_OnionMessageDecodeErrorZ;
445 class CResult_TrustedClosingTransactionNoneZ;
446 class CResult_Bolt11InvoiceParseOrSemanticErrorZ;
447 class CResult_InitFeaturesDecodeErrorZ;
448 class CResult_PublicKeyNoneZ;
449 class CResult_PingDecodeErrorZ;
450 class CResult_BlindedHopFeaturesDecodeErrorZ;
451 class COption_PackedLockTimeZ;
452 class CVec_TransactionOutputsZ;
453 class COption_HTLCClaimZ;
454 class CVec_CVec_u8ZZ;
455 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ;
456 class CResult_ProbabilisticScorerDecodeErrorZ;
457 class CResult_ShutdownScriptDecodeErrorZ;
458 class CResult_SiPrefixBolt11ParseErrorZ;
459 class C2Tuple_usizeTransactionZ;
460 class CResult_NodeAnnouncementDecodeErrorZ;
461 class CVec_FutureZ;
462 class CVec_ChannelMonitorZ;
463 class CResult_AcceptChannelV2DecodeErrorZ;
464 class CResult_TxCreationKeysDecodeErrorZ;
465 class CResult_RouteHopDecodeErrorZ;
466 class CVec_HTLCOutputInCommitmentZ;
467 class CResult_CoinSelectionNoneZ;
468 class CResult_BlindedPathDecodeErrorZ;
469 class CVec_BalanceZ;
470 class CResult_MaxDustHTLCExposureDecodeErrorZ;
471 class CResult_FundingSignedDecodeErrorZ;
472 class CResult_RecoverableSignatureNoneZ;
473 class C2Tuple_Z;
474 class CVec_PathZ;
475 class CResult_NetworkGraphDecodeErrorZ;
476 class CResult_NodeInfoDecodeErrorZ;
477 class CVec_NodeIdZ;
478 class CVec_u8Z;
479 class CResult_RouteLightningErrorZ;
480 class CResult_NonePaymentSendFailureZ;
481 class CResult_ChannelPublicKeysDecodeErrorZ;
482 class CVec_C2Tuple_TxidCOption_BlockHashZZZ;
483 class CResult_HolderCommitmentTransactionDecodeErrorZ;
484 class CResult_WarningMessageDecodeErrorZ;
485 class CResult_ChannelCounterpartyDecodeErrorZ;
486 class CResult_SignatureNoneZ;
487 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
488 class CResult_InitDecodeErrorZ;
489 class CVec_MonitorUpdateIdZ;
490 class CResult_PaymentPurposeDecodeErrorZ;
491 class CResult_OutPointDecodeErrorZ;
492 class CVec_ChannelDetailsZ;
493 class CResult_Bolt11InvoiceFeaturesDecodeErrorZ;
494 class CVec_MessageSendEventZ;
495 class COption_NetAddressZ;
496 class C2Tuple_OutPointScriptZ;
497 class CResult_RouteHintHopDecodeErrorZ;
498 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
499 class CResult_BlindedPayInfoDecodeErrorZ;
500 class COption_ChannelShutdownStateZ;
501 class CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ;
502 class CResult_SharedSecretNoneZ;
503 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
504 class CResult_CVec_CVec_u8ZZNoneZ;
505 class C2Tuple_PaymentHashPaymentSecretZ;
506 class CResult_AcceptChannelDecodeErrorZ;
507 class CResult_HostnameDecodeErrorZ;
508 class CVec_SignatureZ;
509 class CVec_u64Z;
510 class CResult_StringErrorZ;
511 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
512 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
513 class COption_EventZ;
514 class CResult_ChannelTypeFeaturesDecodeErrorZ;
515 class COption_TxidZ;
516 class CVec_RouteHintZ;
517 class COption_u16Z;
518 class COption_PaymentFailureReasonZ;
519 class CVec_ChainHashZ;
520 class CVec_WitnessZ;
521 class CResult_BlindedTailDecodeErrorZ;
522 class CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ;
523 class CVec_C2Tuple_PublicKeyTypeZZ;
524 class CResult_OnionMessagePathNoneZ;
525 class CResult_RefundBolt12ParseErrorZ;
526 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ;
527 class CResult_u32GraphSyncErrorZ;
528 class CVec_PhantomRouteHintsZ;
529 class CResult_OffersMessageDecodeErrorZ;
530 class CResult_NoneAPIErrorZ;
531 class CResult_Bolt12InvoiceFeaturesDecodeErrorZ;
532 class CVec_NetAddressZ;
533 class CResult_ChannelDetailsDecodeErrorZ;
534 class CVec_PublicKeyZ;
535 class CVec_C2Tuple_usizeTransactionZZ;
536 class CResult_TxRemoveInputDecodeErrorZ;
537 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
538 class COption_PaymentIdZ;
539 class C2Tuple_u64u64Z;
540 class CResult_RecipientOnionFieldsDecodeErrorZ;
541 class C2Tuple_u32TxOutZ;
542 class CVec_UtxoZ;
543 class CResult_PaymentSecretNoneZ;
544 class CResult_ChannelConfigDecodeErrorZ;
545 class CVec_PrivateRouteZ;
546 class COption_i64Z;
547 class CResult_BlindedPathNoneZ;
548 class CResult_ShutdownDecodeErrorZ;
549 class CResult_OfferBolt12ParseErrorZ;
550 class CResult_TxOutUtxoLookupErrorZ;
551 class CVec_MonitorEventZ;
552 class CVec_PaymentPreimageZ;
553 class CResult_BigSizeDecodeErrorZ;
554 class CResult_PublicKeyErrorZ;
555 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ;
556 class CResult_NoneNoneZ;
557 class CResult_boolPeerHandleErrorZ;
558 class CResult_ChannelUpdateDecodeErrorZ;
559 class CVec_APIErrorZ;
560 class COption_TxOutZ;
561 class COption_ClosureReasonZ;
562 class COption_u128Z;
563 class CVec_AddressZ;
564 class CResult_TransactionU16LenLimitedDecodeErrorZ;
565 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
566 class CResult_OpenChannelV2DecodeErrorZ;
567 class C2Tuple_u32ScriptZ;
568 class COption_C2Tuple_EightU16sEightU16sZZ;
569 class CResult_RouteDecodeErrorZ;
570 class COption_NoneZ;
571 class CResult_TxAddOutputDecodeErrorZ;
572 class COption_CVec_u8ZZ;
573
574 class Str {
575 private:
576         LDKStr self;
577 public:
578         Str(const Str&) = delete;
579         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
580         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
581         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
582         ~Str() { Str_free(self); }
583         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
584         LDKStr* operator &() { return &self; }
585         LDKStr* operator ->() { return &self; }
586         const LDKStr* operator &() const { return &self; }
587         const LDKStr* operator ->() const { return &self; }
588 };
589 class Refund {
590 private:
591         LDKRefund self;
592 public:
593         Refund(const Refund&) = delete;
594         Refund(Refund&& o) : self(o.self) { memset(&o, 0, sizeof(Refund)); }
595         Refund(LDKRefund&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRefund)); }
596         operator LDKRefund() && { LDKRefund res = self; memset(&self, 0, sizeof(LDKRefund)); return res; }
597         ~Refund() { Refund_free(self); }
598         Refund& operator=(Refund&& o) { Refund_free(self); self = o.self; memset(&o, 0, sizeof(Refund)); return *this; }
599         LDKRefund* operator &() { return &self; }
600         LDKRefund* operator ->() { return &self; }
601         const LDKRefund* operator &() const { return &self; }
602         const LDKRefund* operator ->() const { return &self; }
603 };
604 class Retry {
605 private:
606         LDKRetry self;
607 public:
608         Retry(const Retry&) = delete;
609         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
610         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
611         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
612         ~Retry() { Retry_free(self); }
613         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
614         LDKRetry* operator &() { return &self; }
615         LDKRetry* operator ->() { return &self; }
616         const LDKRetry* operator &() const { return &self; }
617         const LDKRetry* operator ->() const { return &self; }
618 };
619 class RetryableSendFailure {
620 private:
621         LDKRetryableSendFailure self;
622 public:
623         RetryableSendFailure(const RetryableSendFailure&) = delete;
624         RetryableSendFailure(RetryableSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(RetryableSendFailure)); }
625         RetryableSendFailure(LDKRetryableSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetryableSendFailure)); }
626         operator LDKRetryableSendFailure() && { LDKRetryableSendFailure res = self; memset(&self, 0, sizeof(LDKRetryableSendFailure)); return res; }
627         RetryableSendFailure& operator=(RetryableSendFailure&& o) { self = o.self; memset(&o, 0, sizeof(RetryableSendFailure)); return *this; }
628         LDKRetryableSendFailure* operator &() { return &self; }
629         LDKRetryableSendFailure* operator ->() { return &self; }
630         const LDKRetryableSendFailure* operator &() const { return &self; }
631         const LDKRetryableSendFailure* operator ->() const { return &self; }
632 };
633 class PaymentSendFailure {
634 private:
635         LDKPaymentSendFailure self;
636 public:
637         PaymentSendFailure(const PaymentSendFailure&) = delete;
638         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
639         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
640         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
641         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
642         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
643         LDKPaymentSendFailure* operator &() { return &self; }
644         LDKPaymentSendFailure* operator ->() { return &self; }
645         const LDKPaymentSendFailure* operator &() const { return &self; }
646         const LDKPaymentSendFailure* operator ->() const { return &self; }
647 };
648 class RecipientOnionFields {
649 private:
650         LDKRecipientOnionFields self;
651 public:
652         RecipientOnionFields(const RecipientOnionFields&) = delete;
653         RecipientOnionFields(RecipientOnionFields&& o) : self(o.self) { memset(&o, 0, sizeof(RecipientOnionFields)); }
654         RecipientOnionFields(LDKRecipientOnionFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipientOnionFields)); }
655         operator LDKRecipientOnionFields() && { LDKRecipientOnionFields res = self; memset(&self, 0, sizeof(LDKRecipientOnionFields)); return res; }
656         ~RecipientOnionFields() { RecipientOnionFields_free(self); }
657         RecipientOnionFields& operator=(RecipientOnionFields&& o) { RecipientOnionFields_free(self); self = o.self; memset(&o, 0, sizeof(RecipientOnionFields)); return *this; }
658         LDKRecipientOnionFields* operator &() { return &self; }
659         LDKRecipientOnionFields* operator ->() { return &self; }
660         const LDKRecipientOnionFields* operator &() const { return &self; }
661         const LDKRecipientOnionFields* operator ->() const { return &self; }
662 };
663 class UnsignedBolt12Invoice {
664 private:
665         LDKUnsignedBolt12Invoice self;
666 public:
667         UnsignedBolt12Invoice(const UnsignedBolt12Invoice&) = delete;
668         UnsignedBolt12Invoice(UnsignedBolt12Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedBolt12Invoice)); }
669         UnsignedBolt12Invoice(LDKUnsignedBolt12Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedBolt12Invoice)); }
670         operator LDKUnsignedBolt12Invoice() && { LDKUnsignedBolt12Invoice res = self; memset(&self, 0, sizeof(LDKUnsignedBolt12Invoice)); return res; }
671         ~UnsignedBolt12Invoice() { UnsignedBolt12Invoice_free(self); }
672         UnsignedBolt12Invoice& operator=(UnsignedBolt12Invoice&& o) { UnsignedBolt12Invoice_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedBolt12Invoice)); return *this; }
673         LDKUnsignedBolt12Invoice* operator &() { return &self; }
674         LDKUnsignedBolt12Invoice* operator ->() { return &self; }
675         const LDKUnsignedBolt12Invoice* operator &() const { return &self; }
676         const LDKUnsignedBolt12Invoice* operator ->() const { return &self; }
677 };
678 class Bolt12Invoice {
679 private:
680         LDKBolt12Invoice self;
681 public:
682         Bolt12Invoice(const Bolt12Invoice&) = delete;
683         Bolt12Invoice(Bolt12Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12Invoice)); }
684         Bolt12Invoice(LDKBolt12Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12Invoice)); }
685         operator LDKBolt12Invoice() && { LDKBolt12Invoice res = self; memset(&self, 0, sizeof(LDKBolt12Invoice)); return res; }
686         ~Bolt12Invoice() { Bolt12Invoice_free(self); }
687         Bolt12Invoice& operator=(Bolt12Invoice&& o) { Bolt12Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12Invoice)); return *this; }
688         LDKBolt12Invoice* operator &() { return &self; }
689         LDKBolt12Invoice* operator ->() { return &self; }
690         const LDKBolt12Invoice* operator &() const { return &self; }
691         const LDKBolt12Invoice* operator ->() const { return &self; }
692 };
693 class BlindedPayInfo {
694 private:
695         LDKBlindedPayInfo self;
696 public:
697         BlindedPayInfo(const BlindedPayInfo&) = delete;
698         BlindedPayInfo(BlindedPayInfo&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPayInfo)); }
699         BlindedPayInfo(LDKBlindedPayInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPayInfo)); }
700         operator LDKBlindedPayInfo() && { LDKBlindedPayInfo res = self; memset(&self, 0, sizeof(LDKBlindedPayInfo)); return res; }
701         ~BlindedPayInfo() { BlindedPayInfo_free(self); }
702         BlindedPayInfo& operator=(BlindedPayInfo&& o) { BlindedPayInfo_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPayInfo)); return *this; }
703         LDKBlindedPayInfo* operator &() { return &self; }
704         LDKBlindedPayInfo* operator ->() { return &self; }
705         const LDKBlindedPayInfo* operator &() const { return &self; }
706         const LDKBlindedPayInfo* operator ->() const { return &self; }
707 };
708 class DelayedPaymentOutputDescriptor {
709 private:
710         LDKDelayedPaymentOutputDescriptor self;
711 public:
712         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
713         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
714         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
715         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
716         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
717         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
718         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
719         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
720         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
721         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
722 };
723 class StaticPaymentOutputDescriptor {
724 private:
725         LDKStaticPaymentOutputDescriptor self;
726 public:
727         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
728         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
729         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
730         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
731         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
732         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
733         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
734         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
735         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
736         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
737 };
738 class SpendableOutputDescriptor {
739 private:
740         LDKSpendableOutputDescriptor self;
741 public:
742         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
743         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
744         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
745         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
746         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
747         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
748         LDKSpendableOutputDescriptor* operator &() { return &self; }
749         LDKSpendableOutputDescriptor* operator ->() { return &self; }
750         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
751         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
752 };
753 class ChannelSigner {
754 private:
755         LDKChannelSigner self;
756 public:
757         ChannelSigner(const ChannelSigner&) = delete;
758         ChannelSigner(ChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelSigner)); }
759         ChannelSigner(LDKChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelSigner)); }
760         operator LDKChannelSigner() && { LDKChannelSigner res = self; memset(&self, 0, sizeof(LDKChannelSigner)); return res; }
761         ~ChannelSigner() { ChannelSigner_free(self); }
762         ChannelSigner& operator=(ChannelSigner&& o) { ChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(ChannelSigner)); return *this; }
763         LDKChannelSigner* operator &() { return &self; }
764         LDKChannelSigner* operator ->() { return &self; }
765         const LDKChannelSigner* operator &() const { return &self; }
766         const LDKChannelSigner* operator ->() const { return &self; }
767         /**
768          *  Gets the per-commitment point for a specific commitment number
769          * 
770          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
771          */
772         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
773         /**
774          *  Gets the commitment secret for a specific commitment number as part of the revocation process
775          * 
776          *  An external signer implementation should error here if the commitment was already signed
777          *  and should refuse to sign it in the future.
778          * 
779          *  May be called more than once for the same index.
780          * 
781          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
782          */
783         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
784         /**
785          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
786          * 
787          *  This is required in order for the signer to make sure that releasing a commitment
788          *  secret won't leave us without a broadcastable holder transaction.
789          *  Policy checks should be implemented in this function, including checking the amount
790          *  sent to us and checking the HTLCs.
791          * 
792          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
793          *  A validating signer should ensure that an HTLC output is removed only when the matching
794          *  preimage is provided, or when the value to holder is restored.
795          * 
796          *  Note that all the relevant preimages will be provided, but there may also be additional
797          *  irrelevant or duplicate preimages.
798          */
799         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
800         /**
801          *  Returns an arbitrary identifier describing the set of keys which are provided back to you in
802          *  some [`SpendableOutputDescriptor`] types. This should be sufficient to identify this
803          *  [`EcdsaChannelSigner`] object uniquely and lookup or re-derive its keys.
804          */
805         inline LDKThirtyTwoBytes channel_keys_id();
806         /**
807          *  Set the counterparty static channel data, including basepoints,
808          *  `counterparty_selected`/`holder_selected_contest_delay` and funding outpoint.
809          * 
810          *  This data is static, and will never change for a channel once set. For a given [`ChannelSigner`]
811          *  instance, LDK will call this method exactly once - either immediately after construction
812          *  (not including if done via [`SignerProvider::read_chan_signer`]) or when the funding
813          *  information has been generated.
814          * 
815          *  channel_parameters.is_populated() MUST be true.
816          */
817         inline void provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
818 };
819 class EcdsaChannelSigner {
820 private:
821         LDKEcdsaChannelSigner self;
822 public:
823         EcdsaChannelSigner(const EcdsaChannelSigner&) = delete;
824         EcdsaChannelSigner(EcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(EcdsaChannelSigner)); }
825         EcdsaChannelSigner(LDKEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEcdsaChannelSigner)); }
826         operator LDKEcdsaChannelSigner() && { LDKEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKEcdsaChannelSigner)); return res; }
827         ~EcdsaChannelSigner() { EcdsaChannelSigner_free(self); }
828         EcdsaChannelSigner& operator=(EcdsaChannelSigner&& o) { EcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(EcdsaChannelSigner)); return *this; }
829         LDKEcdsaChannelSigner* operator &() { return &self; }
830         LDKEcdsaChannelSigner* operator ->() { return &self; }
831         const LDKEcdsaChannelSigner* operator &() const { return &self; }
832         const LDKEcdsaChannelSigner* operator ->() const { return &self; }
833         /**
834          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
835          * 
836          *  Note that if signing fails or is rejected, the channel will be force-closed.
837          * 
838          *  Policy checks should be implemented in this function, including checking the amount
839          *  sent to us and checking the HTLCs.
840          * 
841          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
842          *  A validating signer should ensure that an HTLC output is removed only when the matching
843          *  preimage is provided, or when the value to holder is restored.
844          * 
845          *  Note that all the relevant preimages will be provided, but there may also be additional
846          *  irrelevant or duplicate preimages.
847          */
848         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
849         /**
850          *  Validate the counterparty's revocation.
851          * 
852          *  This is required in order for the signer to make sure that the state has moved
853          *  forward and it is safe to sign the next counterparty commitment.
854          */
855         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
856         /**
857          *  Creates a signature for a holder's commitment transaction and its claiming HTLC transactions.
858          * 
859          *  This will be called
860          *  - with a non-revoked `commitment_tx`.
861          *  - with the latest `commitment_tx` when we initiate a force-close.
862          *  - with the previous `commitment_tx`, just to get claiming HTLC
863          *    signatures, if we are reacting to a [`ChannelMonitor`]
864          *    [replica](https://github.com/lightningdevkit/rust-lightning/blob/main/GLOSSARY.md#monitor-replicas)
865          *    that decided to broadcast before it had been updated to the latest `commitment_tx`.
866          * 
867          *  This may be called multiple times for the same transaction.
868          * 
869          *  An external signer implementation should check that the commitment has not been revoked.
870          * 
871          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
872          */
873         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
874         /**
875          *  Create a signature for the given input in a transaction spending an HTLC transaction output
876          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
877          * 
878          *  A justice transaction may claim multiple outputs at the same time if timelocks are
879          *  similar, but only a signature for the input at index `input` should be signed for here.
880          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
881          *  to an upcoming timelock expiration.
882          * 
883          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
884          * 
885          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
886          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
887          *  not allow the spending of any funds by itself (you need our holder `revocation_secret` to do
888          *  so).
889          */
890         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]);
891         /**
892          *  Create a signature for the given input in a transaction spending a commitment transaction
893          *  HTLC output when our counterparty broadcasts an old state.
894          * 
895          *  A justice transaction may claim multiple outputs at the same time if timelocks are
896          *  similar, but only a signature for the input at index `input` should be signed for here.
897          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
898          *  to an upcoming timelock expiration.
899          * 
900          *  `amount` is the value of the output spent by this input, committed to in the BIP 143
901          *  signature.
902          * 
903          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
904          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
905          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
906          *  so).
907          * 
908          *  `htlc` holds HTLC elements (hash, timelock), thus changing the format of the witness script
909          *  (which is committed to in the BIP 143 signatures).
910          */
911         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);
912         /**
913          *  Computes the signature for a commitment transaction's HTLC output used as an input within
914          *  `htlc_tx`, which spends the commitment transaction at index `input`. The signature returned
915          *  must be be computed using [`EcdsaSighashType::All`]. Note that this should only be used to
916          *  sign HTLC transactions from channels supporting anchor outputs after all additional
917          *  inputs/outputs have been added to the transaction.
918          * 
919          *  [`EcdsaSighashType::All`]: bitcoin::blockdata::transaction::EcdsaSighashType::All
920          */
921         inline LDK::CResult_SignatureNoneZ sign_holder_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, const struct LDKHTLCDescriptor *NONNULL_PTR htlc_descriptor);
922         /**
923          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
924          *  transaction, either offered or received.
925          * 
926          *  Such a transaction may claim multiples offered outputs at same time if we know the
927          *  preimage for each when we create it, but only the input at index `input` should be
928          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
929          *  needed with regards to an upcoming timelock expiration.
930          * 
931          *  `witness_script` is either an offered or received script as defined in BOLT3 for HTLC
932          *  outputs.
933          * 
934          *  `amount` is value of the output spent by this input, committed to in the BIP 143 signature.
935          * 
936          *  `per_commitment_point` is the dynamic point corresponding to the channel state
937          *  detected onchain. It has been generated by our counterparty and is used to derive
938          *  channel state keys, which are then included in the witness script and committed to in the
939          *  BIP 143 signature.
940          */
941         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);
942         /**
943          *  Create a signature for a (proposed) closing transaction.
944          * 
945          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
946          *  chosen to forgo their output as dust.
947          */
948         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
949         /**
950          *  Computes the signature for a commitment transaction's anchor output used as an
951          *  input within `anchor_tx`, which spends the commitment transaction, at index `input`.
952          */
953         inline LDK::CResult_SignatureNoneZ sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input);
954         /**
955          *  Signs a channel announcement message with our funding key proving it comes from one of the
956          *  channel participants.
957          * 
958          *  Channel announcements also require a signature from each node's network key. Our node
959          *  signature is computed through [`NodeSigner::sign_gossip_message`].
960          * 
961          *  Note that if this fails or is rejected, the channel will not be publicly announced and
962          *  our counterparty may (though likely will not) close the channel on us for violating the
963          *  protocol.
964          */
965         inline LDK::CResult_SignatureNoneZ sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
966 };
967 class WriteableEcdsaChannelSigner {
968 private:
969         LDKWriteableEcdsaChannelSigner self;
970 public:
971         WriteableEcdsaChannelSigner(const WriteableEcdsaChannelSigner&) = delete;
972         WriteableEcdsaChannelSigner(WriteableEcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); }
973         WriteableEcdsaChannelSigner(LDKWriteableEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); }
974         operator LDKWriteableEcdsaChannelSigner() && { LDKWriteableEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); return res; }
975         ~WriteableEcdsaChannelSigner() { WriteableEcdsaChannelSigner_free(self); }
976         WriteableEcdsaChannelSigner& operator=(WriteableEcdsaChannelSigner&& o) { WriteableEcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); return *this; }
977         LDKWriteableEcdsaChannelSigner* operator &() { return &self; }
978         LDKWriteableEcdsaChannelSigner* operator ->() { return &self; }
979         const LDKWriteableEcdsaChannelSigner* operator &() const { return &self; }
980         const LDKWriteableEcdsaChannelSigner* operator ->() const { return &self; }
981 };
982 class Recipient {
983 private:
984         LDKRecipient self;
985 public:
986         Recipient(const Recipient&) = delete;
987         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
988         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
989         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
990         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
991         LDKRecipient* operator &() { return &self; }
992         LDKRecipient* operator ->() { return &self; }
993         const LDKRecipient* operator &() const { return &self; }
994         const LDKRecipient* operator ->() const { return &self; }
995 };
996 class EntropySource {
997 private:
998         LDKEntropySource self;
999 public:
1000         EntropySource(const EntropySource&) = delete;
1001         EntropySource(EntropySource&& o) : self(o.self) { memset(&o, 0, sizeof(EntropySource)); }
1002         EntropySource(LDKEntropySource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEntropySource)); }
1003         operator LDKEntropySource() && { LDKEntropySource res = self; memset(&self, 0, sizeof(LDKEntropySource)); return res; }
1004         ~EntropySource() { EntropySource_free(self); }
1005         EntropySource& operator=(EntropySource&& o) { EntropySource_free(self); self = o.self; memset(&o, 0, sizeof(EntropySource)); return *this; }
1006         LDKEntropySource* operator &() { return &self; }
1007         LDKEntropySource* operator ->() { return &self; }
1008         const LDKEntropySource* operator &() const { return &self; }
1009         const LDKEntropySource* operator ->() const { return &self; }
1010         /**
1011          *  Gets a unique, cryptographically-secure, random 32-byte value. This method must return a
1012          *  different value each time it is called.
1013          */
1014         inline LDKThirtyTwoBytes get_secure_random_bytes();
1015 };
1016 class NodeSigner {
1017 private:
1018         LDKNodeSigner self;
1019 public:
1020         NodeSigner(const NodeSigner&) = delete;
1021         NodeSigner(NodeSigner&& o) : self(o.self) { memset(&o, 0, sizeof(NodeSigner)); }
1022         NodeSigner(LDKNodeSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeSigner)); }
1023         operator LDKNodeSigner() && { LDKNodeSigner res = self; memset(&self, 0, sizeof(LDKNodeSigner)); return res; }
1024         ~NodeSigner() { NodeSigner_free(self); }
1025         NodeSigner& operator=(NodeSigner&& o) { NodeSigner_free(self); self = o.self; memset(&o, 0, sizeof(NodeSigner)); return *this; }
1026         LDKNodeSigner* operator &() { return &self; }
1027         LDKNodeSigner* operator ->() { return &self; }
1028         const LDKNodeSigner* operator &() const { return &self; }
1029         const LDKNodeSigner* operator ->() const { return &self; }
1030         /**
1031          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
1032          * 
1033          *  If the implementor of this trait supports [phantom node payments], then every node that is
1034          *  intended to be included in the phantom invoice route hints must return the same value from
1035          *  this method.
1036          * 
1037          *  This method must return the same value each time it is called.
1038          * 
1039          *  [phantom node payments]: PhantomKeysManager
1040          */
1041         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
1042         /**
1043          *  Get node id based on the provided [`Recipient`].
1044          * 
1045          *  This method must return the same value each time it is called with a given [`Recipient`]
1046          *  parameter.
1047          * 
1048          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1049          */
1050         inline LDK::CResult_PublicKeyNoneZ get_node_id(enum LDKRecipient recipient);
1051         /**
1052          *  Gets the ECDH shared secret of our node secret and `other_key`, multiplying by `tweak` if
1053          *  one is provided. Note that this tweak can be applied to `other_key` instead of our node
1054          *  secret, though this is less efficient.
1055          * 
1056          *  Note that if this fails while attempting to forward an HTLC, LDK will panic. The error
1057          *  should be resolved to allow LDK to resume forwarding HTLCs.
1058          * 
1059          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1060          */
1061         inline LDK::CResult_SharedSecretNoneZ ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak);
1062         /**
1063          *  Sign an invoice.
1064          * 
1065          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
1066          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
1067          *  blindly signing the hash.
1068          * 
1069          *  The `hrp_bytes` are ASCII bytes, while the `invoice_data` is base32.
1070          * 
1071          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
1072          * 
1073          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1074          */
1075         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient);
1076         /**
1077          *  Sign a gossip message.
1078          * 
1079          *  Note that if this fails, LDK may panic and the message will not be broadcast to the network
1080          *  or a possible channel counterparty. If LDK panics, the error should be resolved to allow the
1081          *  message to be broadcast, as otherwise it may prevent one from receiving funds over the
1082          *  corresponding channel.
1083          */
1084         inline LDK::CResult_SignatureNoneZ sign_gossip_message(struct LDKUnsignedGossipMessage msg);
1085 };
1086 class SignerProvider {
1087 private:
1088         LDKSignerProvider self;
1089 public:
1090         SignerProvider(const SignerProvider&) = delete;
1091         SignerProvider(SignerProvider&& o) : self(o.self) { memset(&o, 0, sizeof(SignerProvider)); }
1092         SignerProvider(LDKSignerProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignerProvider)); }
1093         operator LDKSignerProvider() && { LDKSignerProvider res = self; memset(&self, 0, sizeof(LDKSignerProvider)); return res; }
1094         ~SignerProvider() { SignerProvider_free(self); }
1095         SignerProvider& operator=(SignerProvider&& o) { SignerProvider_free(self); self = o.self; memset(&o, 0, sizeof(SignerProvider)); return *this; }
1096         LDKSignerProvider* operator &() { return &self; }
1097         LDKSignerProvider* operator ->() { return &self; }
1098         const LDKSignerProvider* operator &() const { return &self; }
1099         const LDKSignerProvider* operator ->() const { return &self; }
1100         /**
1101          *  Generates a unique `channel_keys_id` that can be used to obtain a [`Self::Signer`] through
1102          *  [`SignerProvider::derive_channel_signer`]. The `user_channel_id` is provided to allow
1103          *  implementations of [`SignerProvider`] to maintain a mapping between itself and the generated
1104          *  `channel_keys_id`.
1105          * 
1106          *  This method must return a different value each time it is called.
1107          */
1108         inline LDKThirtyTwoBytes generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id);
1109         /**
1110          *  Derives the private key material backing a `Signer`.
1111          * 
1112          *  To derive a new `Signer`, a fresh `channel_keys_id` should be obtained through
1113          *  [`SignerProvider::generate_channel_keys_id`]. Otherwise, an existing `Signer` can be
1114          *  re-derived from its `channel_keys_id`, which can be obtained through its trait method
1115          *  [`ChannelSigner::channel_keys_id`].
1116          */
1117         inline LDK::WriteableEcdsaChannelSigner derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
1118         /**
1119          *  Reads a [`Signer`] for this [`SignerProvider`] from the given input stream.
1120          *  This is only called during deserialization of other objects which contain
1121          *  [`WriteableEcdsaChannelSigner`]-implementing objects (i.e., [`ChannelMonitor`]s and [`ChannelManager`]s).
1122          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
1123          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
1124          *  you've read all of the provided bytes to ensure no corruption occurred.
1125          * 
1126          *  This method is slowly being phased out -- it will only be called when reading objects
1127          *  written by LDK versions prior to 0.0.113.
1128          * 
1129          *  [`Signer`]: Self::Signer
1130          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
1131          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
1132          */
1133         inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
1134         /**
1135          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
1136          * 
1137          *  If this function returns an error, this will result in a channel failing to open.
1138          * 
1139          *  This method should return a different value each time it is called, to avoid linking
1140          *  on-chain funds across channels as controlled to the same user.
1141          */
1142         inline LDK::CResult_ScriptNoneZ get_destination_script();
1143         /**
1144          *  Get a script pubkey which we will send funds to when closing a channel.
1145          * 
1146          *  If this function returns an error, this will result in a channel failing to open or close.
1147          *  In the event of a failure when the counterparty is initiating a close, this can result in a
1148          *  channel force close.
1149          * 
1150          *  This method should return a different value each time it is called, to avoid linking
1151          *  on-chain funds across channels as controlled to the same user.
1152          */
1153         inline LDK::CResult_ShutdownScriptNoneZ get_shutdown_scriptpubkey();
1154 };
1155 class InMemorySigner {
1156 private:
1157         LDKInMemorySigner self;
1158 public:
1159         InMemorySigner(const InMemorySigner&) = delete;
1160         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
1161         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
1162         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
1163         ~InMemorySigner() { InMemorySigner_free(self); }
1164         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
1165         LDKInMemorySigner* operator &() { return &self; }
1166         LDKInMemorySigner* operator ->() { return &self; }
1167         const LDKInMemorySigner* operator &() const { return &self; }
1168         const LDKInMemorySigner* operator ->() const { return &self; }
1169 };
1170 class KeysManager {
1171 private:
1172         LDKKeysManager self;
1173 public:
1174         KeysManager(const KeysManager&) = delete;
1175         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
1176         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
1177         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
1178         ~KeysManager() { KeysManager_free(self); }
1179         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
1180         LDKKeysManager* operator &() { return &self; }
1181         LDKKeysManager* operator ->() { return &self; }
1182         const LDKKeysManager* operator &() const { return &self; }
1183         const LDKKeysManager* operator ->() const { return &self; }
1184 };
1185 class PhantomKeysManager {
1186 private:
1187         LDKPhantomKeysManager self;
1188 public:
1189         PhantomKeysManager(const PhantomKeysManager&) = delete;
1190         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
1191         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
1192         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
1193         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
1194         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
1195         LDKPhantomKeysManager* operator &() { return &self; }
1196         LDKPhantomKeysManager* operator ->() { return &self; }
1197         const LDKPhantomKeysManager* operator &() const { return &self; }
1198         const LDKPhantomKeysManager* operator ->() const { return &self; }
1199 };
1200 class BackgroundProcessor {
1201 private:
1202         LDKBackgroundProcessor self;
1203 public:
1204         BackgroundProcessor(const BackgroundProcessor&) = delete;
1205         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
1206         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
1207         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
1208         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
1209         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
1210         LDKBackgroundProcessor* operator &() { return &self; }
1211         LDKBackgroundProcessor* operator ->() { return &self; }
1212         const LDKBackgroundProcessor* operator &() const { return &self; }
1213         const LDKBackgroundProcessor* operator ->() const { return &self; }
1214 };
1215 class GossipSync {
1216 private:
1217         LDKGossipSync self;
1218 public:
1219         GossipSync(const GossipSync&) = delete;
1220         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
1221         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
1222         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
1223         ~GossipSync() { GossipSync_free(self); }
1224         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
1225         LDKGossipSync* operator &() { return &self; }
1226         LDKGossipSync* operator ->() { return &self; }
1227         const LDKGossipSync* operator &() const { return &self; }
1228         const LDKGossipSync* operator ->() const { return &self; }
1229 };
1230 class DefaultRouter {
1231 private:
1232         LDKDefaultRouter self;
1233 public:
1234         DefaultRouter(const DefaultRouter&) = delete;
1235         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
1236         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
1237         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
1238         ~DefaultRouter() { DefaultRouter_free(self); }
1239         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
1240         LDKDefaultRouter* operator &() { return &self; }
1241         LDKDefaultRouter* operator ->() { return &self; }
1242         const LDKDefaultRouter* operator &() const { return &self; }
1243         const LDKDefaultRouter* operator ->() const { return &self; }
1244 };
1245 class Router {
1246 private:
1247         LDKRouter self;
1248 public:
1249         Router(const Router&) = delete;
1250         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
1251         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
1252         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
1253         ~Router() { Router_free(self); }
1254         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
1255         LDKRouter* operator &() { return &self; }
1256         LDKRouter* operator ->() { return &self; }
1257         const LDKRouter* operator &() const { return &self; }
1258         const LDKRouter* operator ->() const { return &self; }
1259         /**
1260          *  Finds a [`Route`] for a payment between the given `payer` and a payee.
1261          * 
1262          *  The `payee` and the payment's value are given in [`RouteParameters::payment_params`]
1263          *  and [`RouteParameters::final_value_msat`], respectively.
1264          * 
1265          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
1266          */
1267         inline LDK::CResult_RouteLightningErrorZ find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKInFlightHtlcs inflight_htlcs);
1268         /**
1269          *  Finds a [`Route`] for a payment between the given `payer` and a payee.
1270          * 
1271          *  The `payee` and the payment's value are given in [`RouteParameters::payment_params`]
1272          *  and [`RouteParameters::final_value_msat`], respectively.
1273          * 
1274          *  Includes a [`PaymentHash`] and a [`PaymentId`] to be able to correlate the request with a specific
1275          *  payment.
1276          * 
1277          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
1278          */
1279         inline LDK::CResult_RouteLightningErrorZ find_route_with_id(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKInFlightHtlcs inflight_htlcs, struct LDKThirtyTwoBytes _payment_hash, struct LDKThirtyTwoBytes _payment_id);
1280 };
1281 class ScorerAccountingForInFlightHtlcs {
1282 private:
1283         LDKScorerAccountingForInFlightHtlcs self;
1284 public:
1285         ScorerAccountingForInFlightHtlcs(const ScorerAccountingForInFlightHtlcs&) = delete;
1286         ScorerAccountingForInFlightHtlcs(ScorerAccountingForInFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); }
1287         ScorerAccountingForInFlightHtlcs(LDKScorerAccountingForInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); }
1288         operator LDKScorerAccountingForInFlightHtlcs() && { LDKScorerAccountingForInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); return res; }
1289         ~ScorerAccountingForInFlightHtlcs() { ScorerAccountingForInFlightHtlcs_free(self); }
1290         ScorerAccountingForInFlightHtlcs& operator=(ScorerAccountingForInFlightHtlcs&& o) { ScorerAccountingForInFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); return *this; }
1291         LDKScorerAccountingForInFlightHtlcs* operator &() { return &self; }
1292         LDKScorerAccountingForInFlightHtlcs* operator ->() { return &self; }
1293         const LDKScorerAccountingForInFlightHtlcs* operator &() const { return &self; }
1294         const LDKScorerAccountingForInFlightHtlcs* operator ->() const { return &self; }
1295 };
1296 class InFlightHtlcs {
1297 private:
1298         LDKInFlightHtlcs self;
1299 public:
1300         InFlightHtlcs(const InFlightHtlcs&) = delete;
1301         InFlightHtlcs(InFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(InFlightHtlcs)); }
1302         InFlightHtlcs(LDKInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInFlightHtlcs)); }
1303         operator LDKInFlightHtlcs() && { LDKInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKInFlightHtlcs)); return res; }
1304         ~InFlightHtlcs() { InFlightHtlcs_free(self); }
1305         InFlightHtlcs& operator=(InFlightHtlcs&& o) { InFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(InFlightHtlcs)); return *this; }
1306         LDKInFlightHtlcs* operator &() { return &self; }
1307         LDKInFlightHtlcs* operator ->() { return &self; }
1308         const LDKInFlightHtlcs* operator &() const { return &self; }
1309         const LDKInFlightHtlcs* operator ->() const { return &self; }
1310 };
1311 class RouteHop {
1312 private:
1313         LDKRouteHop self;
1314 public:
1315         RouteHop(const RouteHop&) = delete;
1316         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
1317         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
1318         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
1319         ~RouteHop() { RouteHop_free(self); }
1320         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
1321         LDKRouteHop* operator &() { return &self; }
1322         LDKRouteHop* operator ->() { return &self; }
1323         const LDKRouteHop* operator &() const { return &self; }
1324         const LDKRouteHop* operator ->() const { return &self; }
1325 };
1326 class BlindedTail {
1327 private:
1328         LDKBlindedTail self;
1329 public:
1330         BlindedTail(const BlindedTail&) = delete;
1331         BlindedTail(BlindedTail&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedTail)); }
1332         BlindedTail(LDKBlindedTail&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedTail)); }
1333         operator LDKBlindedTail() && { LDKBlindedTail res = self; memset(&self, 0, sizeof(LDKBlindedTail)); return res; }
1334         ~BlindedTail() { BlindedTail_free(self); }
1335         BlindedTail& operator=(BlindedTail&& o) { BlindedTail_free(self); self = o.self; memset(&o, 0, sizeof(BlindedTail)); return *this; }
1336         LDKBlindedTail* operator &() { return &self; }
1337         LDKBlindedTail* operator ->() { return &self; }
1338         const LDKBlindedTail* operator &() const { return &self; }
1339         const LDKBlindedTail* operator ->() const { return &self; }
1340 };
1341 class Path {
1342 private:
1343         LDKPath self;
1344 public:
1345         Path(const Path&) = delete;
1346         Path(Path&& o) : self(o.self) { memset(&o, 0, sizeof(Path)); }
1347         Path(LDKPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPath)); }
1348         operator LDKPath() && { LDKPath res = self; memset(&self, 0, sizeof(LDKPath)); return res; }
1349         ~Path() { Path_free(self); }
1350         Path& operator=(Path&& o) { Path_free(self); self = o.self; memset(&o, 0, sizeof(Path)); return *this; }
1351         LDKPath* operator &() { return &self; }
1352         LDKPath* operator ->() { return &self; }
1353         const LDKPath* operator &() const { return &self; }
1354         const LDKPath* operator ->() const { return &self; }
1355 };
1356 class Route {
1357 private:
1358         LDKRoute self;
1359 public:
1360         Route(const Route&) = delete;
1361         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
1362         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
1363         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
1364         ~Route() { Route_free(self); }
1365         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
1366         LDKRoute* operator &() { return &self; }
1367         LDKRoute* operator ->() { return &self; }
1368         const LDKRoute* operator &() const { return &self; }
1369         const LDKRoute* operator ->() const { return &self; }
1370 };
1371 class RouteParameters {
1372 private:
1373         LDKRouteParameters self;
1374 public:
1375         RouteParameters(const RouteParameters&) = delete;
1376         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
1377         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
1378         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
1379         ~RouteParameters() { RouteParameters_free(self); }
1380         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
1381         LDKRouteParameters* operator &() { return &self; }
1382         LDKRouteParameters* operator ->() { return &self; }
1383         const LDKRouteParameters* operator &() const { return &self; }
1384         const LDKRouteParameters* operator ->() const { return &self; }
1385 };
1386 class PaymentParameters {
1387 private:
1388         LDKPaymentParameters self;
1389 public:
1390         PaymentParameters(const PaymentParameters&) = delete;
1391         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
1392         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
1393         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
1394         ~PaymentParameters() { PaymentParameters_free(self); }
1395         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
1396         LDKPaymentParameters* operator &() { return &self; }
1397         LDKPaymentParameters* operator ->() { return &self; }
1398         const LDKPaymentParameters* operator &() const { return &self; }
1399         const LDKPaymentParameters* operator ->() const { return &self; }
1400 };
1401 class Payee {
1402 private:
1403         LDKPayee self;
1404 public:
1405         Payee(const Payee&) = delete;
1406         Payee(Payee&& o) : self(o.self) { memset(&o, 0, sizeof(Payee)); }
1407         Payee(LDKPayee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayee)); }
1408         operator LDKPayee() && { LDKPayee res = self; memset(&self, 0, sizeof(LDKPayee)); return res; }
1409         ~Payee() { Payee_free(self); }
1410         Payee& operator=(Payee&& o) { Payee_free(self); self = o.self; memset(&o, 0, sizeof(Payee)); return *this; }
1411         LDKPayee* operator &() { return &self; }
1412         LDKPayee* operator ->() { return &self; }
1413         const LDKPayee* operator &() const { return &self; }
1414         const LDKPayee* operator ->() const { return &self; }
1415 };
1416 class RouteHint {
1417 private:
1418         LDKRouteHint self;
1419 public:
1420         RouteHint(const RouteHint&) = delete;
1421         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
1422         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
1423         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
1424         ~RouteHint() { RouteHint_free(self); }
1425         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
1426         LDKRouteHint* operator &() { return &self; }
1427         LDKRouteHint* operator ->() { return &self; }
1428         const LDKRouteHint* operator &() const { return &self; }
1429         const LDKRouteHint* operator ->() const { return &self; }
1430 };
1431 class RouteHintHop {
1432 private:
1433         LDKRouteHintHop self;
1434 public:
1435         RouteHintHop(const RouteHintHop&) = delete;
1436         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
1437         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
1438         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
1439         ~RouteHintHop() { RouteHintHop_free(self); }
1440         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
1441         LDKRouteHintHop* operator &() { return &self; }
1442         LDKRouteHintHop* operator ->() { return &self; }
1443         const LDKRouteHintHop* operator &() const { return &self; }
1444         const LDKRouteHintHop* operator ->() const { return &self; }
1445 };
1446 class Score {
1447 private:
1448         LDKScore self;
1449 public:
1450         Score(const Score&) = delete;
1451         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1452         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1453         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1454         ~Score() { Score_free(self); }
1455         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1456         LDKScore* operator &() { return &self; }
1457         LDKScore* operator ->() { return &self; }
1458         const LDKScore* operator &() const { return &self; }
1459         const LDKScore* operator ->() const { return &self; }
1460         /**
1461          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1462          *  given channel in the direction from `source` to `target`.
1463          * 
1464          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1465          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1466          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1467          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1468          *  Thus, implementations should be overflow-safe.
1469          */
1470         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, const struct LDKProbabilisticScoringFeeParameters *NONNULL_PTR score_params);
1471         /**
1472          *  Handles updating channel penalties after failing to route through a channel.
1473          */
1474         inline void payment_path_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id);
1475         /**
1476          *  Handles updating channel penalties after successfully routing along a path.
1477          */
1478         inline void payment_path_successful(const struct LDKPath *NONNULL_PTR path);
1479         /**
1480          *  Handles updating channel penalties after a probe over the given path failed.
1481          */
1482         inline void probe_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id);
1483         /**
1484          *  Handles updating channel penalties after a probe over the given path succeeded.
1485          */
1486         inline void probe_successful(const struct LDKPath *NONNULL_PTR path);
1487 };
1488 class LockableScore {
1489 private:
1490         LDKLockableScore self;
1491 public:
1492         LockableScore(const LockableScore&) = delete;
1493         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1494         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1495         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1496         ~LockableScore() { LockableScore_free(self); }
1497         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1498         LDKLockableScore* operator &() { return &self; }
1499         LDKLockableScore* operator ->() { return &self; }
1500         const LDKLockableScore* operator &() const { return &self; }
1501         const LDKLockableScore* operator ->() const { return &self; }
1502         /**
1503          *  Returns the locked scorer.
1504          */
1505         inline LDK::Score lock();
1506 };
1507 class WriteableScore {
1508 private:
1509         LDKWriteableScore self;
1510 public:
1511         WriteableScore(const WriteableScore&) = delete;
1512         WriteableScore(WriteableScore&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableScore)); }
1513         WriteableScore(LDKWriteableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableScore)); }
1514         operator LDKWriteableScore() && { LDKWriteableScore res = self; memset(&self, 0, sizeof(LDKWriteableScore)); return res; }
1515         ~WriteableScore() { WriteableScore_free(self); }
1516         WriteableScore& operator=(WriteableScore&& o) { WriteableScore_free(self); self = o.self; memset(&o, 0, sizeof(WriteableScore)); return *this; }
1517         LDKWriteableScore* operator &() { return &self; }
1518         LDKWriteableScore* operator ->() { return &self; }
1519         const LDKWriteableScore* operator &() const { return &self; }
1520         const LDKWriteableScore* operator ->() const { return &self; }
1521 };
1522 class MultiThreadedLockableScore {
1523 private:
1524         LDKMultiThreadedLockableScore self;
1525 public:
1526         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1527         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1528         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1529         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1530         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1531         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1532         LDKMultiThreadedLockableScore* operator &() { return &self; }
1533         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1534         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1535         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1536 };
1537 class MultiThreadedScoreLock {
1538 private:
1539         LDKMultiThreadedScoreLock self;
1540 public:
1541         MultiThreadedScoreLock(const MultiThreadedScoreLock&) = delete;
1542         MultiThreadedScoreLock(MultiThreadedScoreLock&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLock)); }
1543         MultiThreadedScoreLock(LDKMultiThreadedScoreLock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLock)); }
1544         operator LDKMultiThreadedScoreLock() && { LDKMultiThreadedScoreLock res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLock)); return res; }
1545         ~MultiThreadedScoreLock() { MultiThreadedScoreLock_free(self); }
1546         MultiThreadedScoreLock& operator=(MultiThreadedScoreLock&& o) { MultiThreadedScoreLock_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLock)); return *this; }
1547         LDKMultiThreadedScoreLock* operator &() { return &self; }
1548         LDKMultiThreadedScoreLock* operator ->() { return &self; }
1549         const LDKMultiThreadedScoreLock* operator &() const { return &self; }
1550         const LDKMultiThreadedScoreLock* operator ->() const { return &self; }
1551 };
1552 class ChannelUsage {
1553 private:
1554         LDKChannelUsage self;
1555 public:
1556         ChannelUsage(const ChannelUsage&) = delete;
1557         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1558         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1559         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1560         ~ChannelUsage() { ChannelUsage_free(self); }
1561         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1562         LDKChannelUsage* operator &() { return &self; }
1563         LDKChannelUsage* operator ->() { return &self; }
1564         const LDKChannelUsage* operator &() const { return &self; }
1565         const LDKChannelUsage* operator ->() const { return &self; }
1566 };
1567 class FixedPenaltyScorer {
1568 private:
1569         LDKFixedPenaltyScorer self;
1570 public:
1571         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1572         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1573         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1574         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1575         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1576         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1577         LDKFixedPenaltyScorer* operator &() { return &self; }
1578         LDKFixedPenaltyScorer* operator ->() { return &self; }
1579         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1580         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1581 };
1582 class ProbabilisticScorer {
1583 private:
1584         LDKProbabilisticScorer self;
1585 public:
1586         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1587         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1588         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1589         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1590         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1591         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1592         LDKProbabilisticScorer* operator &() { return &self; }
1593         LDKProbabilisticScorer* operator ->() { return &self; }
1594         const LDKProbabilisticScorer* operator &() const { return &self; }
1595         const LDKProbabilisticScorer* operator ->() const { return &self; }
1596 };
1597 class ProbabilisticScoringFeeParameters {
1598 private:
1599         LDKProbabilisticScoringFeeParameters self;
1600 public:
1601         ProbabilisticScoringFeeParameters(const ProbabilisticScoringFeeParameters&) = delete;
1602         ProbabilisticScoringFeeParameters(ProbabilisticScoringFeeParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringFeeParameters)); }
1603         ProbabilisticScoringFeeParameters(LDKProbabilisticScoringFeeParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringFeeParameters)); }
1604         operator LDKProbabilisticScoringFeeParameters() && { LDKProbabilisticScoringFeeParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringFeeParameters)); return res; }
1605         ~ProbabilisticScoringFeeParameters() { ProbabilisticScoringFeeParameters_free(self); }
1606         ProbabilisticScoringFeeParameters& operator=(ProbabilisticScoringFeeParameters&& o) { ProbabilisticScoringFeeParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringFeeParameters)); return *this; }
1607         LDKProbabilisticScoringFeeParameters* operator &() { return &self; }
1608         LDKProbabilisticScoringFeeParameters* operator ->() { return &self; }
1609         const LDKProbabilisticScoringFeeParameters* operator &() const { return &self; }
1610         const LDKProbabilisticScoringFeeParameters* operator ->() const { return &self; }
1611 };
1612 class ProbabilisticScoringDecayParameters {
1613 private:
1614         LDKProbabilisticScoringDecayParameters self;
1615 public:
1616         ProbabilisticScoringDecayParameters(const ProbabilisticScoringDecayParameters&) = delete;
1617         ProbabilisticScoringDecayParameters(ProbabilisticScoringDecayParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringDecayParameters)); }
1618         ProbabilisticScoringDecayParameters(LDKProbabilisticScoringDecayParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringDecayParameters)); }
1619         operator LDKProbabilisticScoringDecayParameters() && { LDKProbabilisticScoringDecayParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringDecayParameters)); return res; }
1620         ~ProbabilisticScoringDecayParameters() { ProbabilisticScoringDecayParameters_free(self); }
1621         ProbabilisticScoringDecayParameters& operator=(ProbabilisticScoringDecayParameters&& o) { ProbabilisticScoringDecayParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringDecayParameters)); return *this; }
1622         LDKProbabilisticScoringDecayParameters* operator &() { return &self; }
1623         LDKProbabilisticScoringDecayParameters* operator ->() { return &self; }
1624         const LDKProbabilisticScoringDecayParameters* operator &() const { return &self; }
1625         const LDKProbabilisticScoringDecayParameters* operator ->() const { return &self; }
1626 };
1627 class BestBlock {
1628 private:
1629         LDKBestBlock self;
1630 public:
1631         BestBlock(const BestBlock&) = delete;
1632         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
1633         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
1634         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
1635         ~BestBlock() { BestBlock_free(self); }
1636         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
1637         LDKBestBlock* operator &() { return &self; }
1638         LDKBestBlock* operator ->() { return &self; }
1639         const LDKBestBlock* operator &() const { return &self; }
1640         const LDKBestBlock* operator ->() const { return &self; }
1641 };
1642 class Listen {
1643 private:
1644         LDKListen self;
1645 public:
1646         Listen(const Listen&) = delete;
1647         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
1648         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
1649         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1650         ~Listen() { Listen_free(self); }
1651         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
1652         LDKListen* operator &() { return &self; }
1653         LDKListen* operator ->() { return &self; }
1654         const LDKListen* operator &() const { return &self; }
1655         const LDKListen* operator ->() const { return &self; }
1656         /**
1657          *  Notifies the listener that a block was added at the given height, with the transaction data
1658          *  possibly filtered.
1659          */
1660         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1661         /**
1662          *  Notifies the listener that a block was added at the given height.
1663          */
1664         inline void block_connected(struct LDKu8slice block, uint32_t height);
1665         /**
1666          *  Notifies the listener that a block was removed at the given height.
1667          */
1668         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
1669 };
1670 class Confirm {
1671 private:
1672         LDKConfirm self;
1673 public:
1674         Confirm(const Confirm&) = delete;
1675         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
1676         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
1677         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
1678         ~Confirm() { Confirm_free(self); }
1679         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
1680         LDKConfirm* operator &() { return &self; }
1681         LDKConfirm* operator ->() { return &self; }
1682         const LDKConfirm* operator &() const { return &self; }
1683         const LDKConfirm* operator ->() const { return &self; }
1684         /**
1685          *  Notifies LDK of transactions confirmed in a block with a given header and height.
1686          * 
1687          *  Must be called for any transactions registered by [`Filter::register_tx`] or any
1688          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
1689          *  appearing in the same block do not need to be included in the same call; instead, multiple
1690          *  calls with additional transactions may be made so long as they are made in [chain order].
1691          * 
1692          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
1693          *  in the event of a chain reorganization, it must not be called with a `header` that is no
1694          *  longer in the chain as of the last call to [`best_block_updated`].
1695          * 
1696          *  [chain order]: Confirm#order
1697          *  [`best_block_updated`]: Self::best_block_updated
1698          */
1699         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1700         /**
1701          *  Notifies LDK of a transaction that is no longer confirmed as result of a chain reorganization.
1702          * 
1703          *  Must be called for any transaction returned by [`get_relevant_txids`] if it has been
1704          *  reorganized out of the best chain or if it is no longer confirmed in the block with the
1705          *  given block hash. Once called, the given transaction will not be returned
1706          *  by [`get_relevant_txids`], unless it has been reconfirmed via [`transactions_confirmed`].
1707          * 
1708          *  [`get_relevant_txids`]: Self::get_relevant_txids
1709          *  [`transactions_confirmed`]: Self::transactions_confirmed
1710          */
1711         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
1712         /**
1713          *  Notifies LDK of an update to the best header connected at the given height.
1714          * 
1715          *  Must be called whenever a new chain tip becomes available. May be skipped for intermediary
1716          *  blocks.
1717          */
1718         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
1719         /**
1720          *  Returns transactions that must be monitored for reorganization out of the chain along
1721          *  with the hash of the block as part of which it had been previously confirmed.
1722          * 
1723          *  Note that the returned `Option<BlockHash>` might be `None` for channels created with LDK
1724          *  0.0.112 and prior, in which case you need to manually track previous confirmations.
1725          * 
1726          *  Will include any transactions passed to [`transactions_confirmed`] that have insufficient
1727          *  confirmations to be safe from a chain reorganization. Will not include any transactions
1728          *  passed to [`transaction_unconfirmed`], unless later reconfirmed.
1729          * 
1730          *  Must be called to determine the subset of transactions that must be monitored for
1731          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
1732          *  other interface methods. Thus, this is useful to determine which transactions must be
1733          *  given to [`transaction_unconfirmed`].
1734          * 
1735          *  If any of the returned transactions are confirmed in a block other than the one with the
1736          *  given hash, they need to be unconfirmed and reconfirmed via [`transaction_unconfirmed`] and
1737          *  [`transactions_confirmed`], respectively.
1738          * 
1739          *  [`transactions_confirmed`]: Self::transactions_confirmed
1740          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
1741          */
1742         inline LDK::CVec_C2Tuple_TxidCOption_BlockHashZZZ get_relevant_txids();
1743 };
1744 class ChannelMonitorUpdateStatus {
1745 private:
1746         LDKChannelMonitorUpdateStatus self;
1747 public:
1748         ChannelMonitorUpdateStatus(const ChannelMonitorUpdateStatus&) = delete;
1749         ChannelMonitorUpdateStatus(ChannelMonitorUpdateStatus&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); }
1750         ChannelMonitorUpdateStatus(LDKChannelMonitorUpdateStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateStatus)); }
1751         operator LDKChannelMonitorUpdateStatus() && { LDKChannelMonitorUpdateStatus res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateStatus)); return res; }
1752         ChannelMonitorUpdateStatus& operator=(ChannelMonitorUpdateStatus&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); return *this; }
1753         LDKChannelMonitorUpdateStatus* operator &() { return &self; }
1754         LDKChannelMonitorUpdateStatus* operator ->() { return &self; }
1755         const LDKChannelMonitorUpdateStatus* operator &() const { return &self; }
1756         const LDKChannelMonitorUpdateStatus* operator ->() const { return &self; }
1757 };
1758 class Watch {
1759 private:
1760         LDKWatch self;
1761 public:
1762         Watch(const Watch&) = delete;
1763         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
1764         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
1765         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
1766         ~Watch() { Watch_free(self); }
1767         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
1768         LDKWatch* operator &() { return &self; }
1769         LDKWatch* operator ->() { return &self; }
1770         const LDKWatch* operator &() const { return &self; }
1771         const LDKWatch* operator ->() const { return &self; }
1772         /**
1773          *  Watches a channel identified by `funding_txo` using `monitor`.
1774          * 
1775          *  Implementations are responsible for watching the chain for the funding transaction along
1776          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
1777          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
1778          * 
1779          *  Note: this interface MUST error with [`ChannelMonitorUpdateStatus::PermanentFailure`] if
1780          *  the given `funding_txo` has previously been registered via `watch_channel`.
1781          * 
1782          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
1783          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
1784          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
1785          */
1786         inline LDK::ChannelMonitorUpdateStatus watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
1787         /**
1788          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
1789          * 
1790          *  Implementations must call [`update_monitor`] with the given update. See
1791          *  [`ChannelMonitorUpdateStatus`] for invariants around returning an error.
1792          * 
1793          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1794          */
1795         inline LDK::ChannelMonitorUpdateStatus update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update);
1796         /**
1797          *  Returns any monitor events since the last call. Subsequent calls must only return new
1798          *  events.
1799          * 
1800          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1801          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1802          *  to disk.
1803          * 
1804          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1805          *  [`MonitorEvent::Completed`] here, see [`ChannelMonitorUpdateStatus::InProgress`].
1806          */
1807         inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ release_pending_monitor_events();
1808 };
1809 class Filter {
1810 private:
1811         LDKFilter self;
1812 public:
1813         Filter(const Filter&) = delete;
1814         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1815         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1816         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1817         ~Filter() { Filter_free(self); }
1818         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1819         LDKFilter* operator &() { return &self; }
1820         LDKFilter* operator ->() { return &self; }
1821         const LDKFilter* operator &() const { return &self; }
1822         const LDKFilter* operator ->() const { return &self; }
1823         /**
1824          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1825          *  a spending condition.
1826          */
1827         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1828         /**
1829          *  Registers interest in spends of a transaction output.
1830          * 
1831          *  Note that this method might be called during processing of a new block. You therefore need
1832          *  to ensure that also dependent output spents within an already connected block are correctly
1833          *  handled, e.g., by re-scanning the block in question whenever new outputs have been
1834          *  registered mid-processing.
1835          */
1836         inline void register_output(struct LDKWatchedOutput output);
1837 };
1838 class WatchedOutput {
1839 private:
1840         LDKWatchedOutput self;
1841 public:
1842         WatchedOutput(const WatchedOutput&) = delete;
1843         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1844         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1845         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1846         ~WatchedOutput() { WatchedOutput_free(self); }
1847         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1848         LDKWatchedOutput* operator &() { return &self; }
1849         LDKWatchedOutput* operator ->() { return &self; }
1850         const LDKWatchedOutput* operator &() const { return &self; }
1851         const LDKWatchedOutput* operator ->() const { return &self; }
1852 };
1853 class InitFeatures {
1854 private:
1855         LDKInitFeatures self;
1856 public:
1857         InitFeatures(const InitFeatures&) = delete;
1858         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1859         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1860         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1861         ~InitFeatures() { InitFeatures_free(self); }
1862         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1863         LDKInitFeatures* operator &() { return &self; }
1864         LDKInitFeatures* operator ->() { return &self; }
1865         const LDKInitFeatures* operator &() const { return &self; }
1866         const LDKInitFeatures* operator ->() const { return &self; }
1867 };
1868 class NodeFeatures {
1869 private:
1870         LDKNodeFeatures self;
1871 public:
1872         NodeFeatures(const NodeFeatures&) = delete;
1873         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1874         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1875         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1876         ~NodeFeatures() { NodeFeatures_free(self); }
1877         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1878         LDKNodeFeatures* operator &() { return &self; }
1879         LDKNodeFeatures* operator ->() { return &self; }
1880         const LDKNodeFeatures* operator &() const { return &self; }
1881         const LDKNodeFeatures* operator ->() const { return &self; }
1882 };
1883 class ChannelFeatures {
1884 private:
1885         LDKChannelFeatures self;
1886 public:
1887         ChannelFeatures(const ChannelFeatures&) = delete;
1888         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1889         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1890         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1891         ~ChannelFeatures() { ChannelFeatures_free(self); }
1892         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1893         LDKChannelFeatures* operator &() { return &self; }
1894         LDKChannelFeatures* operator ->() { return &self; }
1895         const LDKChannelFeatures* operator &() const { return &self; }
1896         const LDKChannelFeatures* operator ->() const { return &self; }
1897 };
1898 class Bolt11InvoiceFeatures {
1899 private:
1900         LDKBolt11InvoiceFeatures self;
1901 public:
1902         Bolt11InvoiceFeatures(const Bolt11InvoiceFeatures&) = delete;
1903         Bolt11InvoiceFeatures(Bolt11InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11InvoiceFeatures)); }
1904         Bolt11InvoiceFeatures(LDKBolt11InvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11InvoiceFeatures)); }
1905         operator LDKBolt11InvoiceFeatures() && { LDKBolt11InvoiceFeatures res = self; memset(&self, 0, sizeof(LDKBolt11InvoiceFeatures)); return res; }
1906         ~Bolt11InvoiceFeatures() { Bolt11InvoiceFeatures_free(self); }
1907         Bolt11InvoiceFeatures& operator=(Bolt11InvoiceFeatures&& o) { Bolt11InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11InvoiceFeatures)); return *this; }
1908         LDKBolt11InvoiceFeatures* operator &() { return &self; }
1909         LDKBolt11InvoiceFeatures* operator ->() { return &self; }
1910         const LDKBolt11InvoiceFeatures* operator &() const { return &self; }
1911         const LDKBolt11InvoiceFeatures* operator ->() const { return &self; }
1912 };
1913 class OfferFeatures {
1914 private:
1915         LDKOfferFeatures self;
1916 public:
1917         OfferFeatures(const OfferFeatures&) = delete;
1918         OfferFeatures(OfferFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(OfferFeatures)); }
1919         OfferFeatures(LDKOfferFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferFeatures)); }
1920         operator LDKOfferFeatures() && { LDKOfferFeatures res = self; memset(&self, 0, sizeof(LDKOfferFeatures)); return res; }
1921         ~OfferFeatures() { OfferFeatures_free(self); }
1922         OfferFeatures& operator=(OfferFeatures&& o) { OfferFeatures_free(self); self = o.self; memset(&o, 0, sizeof(OfferFeatures)); return *this; }
1923         LDKOfferFeatures* operator &() { return &self; }
1924         LDKOfferFeatures* operator ->() { return &self; }
1925         const LDKOfferFeatures* operator &() const { return &self; }
1926         const LDKOfferFeatures* operator ->() const { return &self; }
1927 };
1928 class InvoiceRequestFeatures {
1929 private:
1930         LDKInvoiceRequestFeatures self;
1931 public:
1932         InvoiceRequestFeatures(const InvoiceRequestFeatures&) = delete;
1933         InvoiceRequestFeatures(InvoiceRequestFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestFeatures)); }
1934         InvoiceRequestFeatures(LDKInvoiceRequestFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestFeatures)); }
1935         operator LDKInvoiceRequestFeatures() && { LDKInvoiceRequestFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceRequestFeatures)); return res; }
1936         ~InvoiceRequestFeatures() { InvoiceRequestFeatures_free(self); }
1937         InvoiceRequestFeatures& operator=(InvoiceRequestFeatures&& o) { InvoiceRequestFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestFeatures)); return *this; }
1938         LDKInvoiceRequestFeatures* operator &() { return &self; }
1939         LDKInvoiceRequestFeatures* operator ->() { return &self; }
1940         const LDKInvoiceRequestFeatures* operator &() const { return &self; }
1941         const LDKInvoiceRequestFeatures* operator ->() const { return &self; }
1942 };
1943 class Bolt12InvoiceFeatures {
1944 private:
1945         LDKBolt12InvoiceFeatures self;
1946 public:
1947         Bolt12InvoiceFeatures(const Bolt12InvoiceFeatures&) = delete;
1948         Bolt12InvoiceFeatures(Bolt12InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); }
1949         Bolt12InvoiceFeatures(LDKBolt12InvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12InvoiceFeatures)); }
1950         operator LDKBolt12InvoiceFeatures() && { LDKBolt12InvoiceFeatures res = self; memset(&self, 0, sizeof(LDKBolt12InvoiceFeatures)); return res; }
1951         ~Bolt12InvoiceFeatures() { Bolt12InvoiceFeatures_free(self); }
1952         Bolt12InvoiceFeatures& operator=(Bolt12InvoiceFeatures&& o) { Bolt12InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); return *this; }
1953         LDKBolt12InvoiceFeatures* operator &() { return &self; }
1954         LDKBolt12InvoiceFeatures* operator ->() { return &self; }
1955         const LDKBolt12InvoiceFeatures* operator &() const { return &self; }
1956         const LDKBolt12InvoiceFeatures* operator ->() const { return &self; }
1957 };
1958 class BlindedHopFeatures {
1959 private:
1960         LDKBlindedHopFeatures self;
1961 public:
1962         BlindedHopFeatures(const BlindedHopFeatures&) = delete;
1963         BlindedHopFeatures(BlindedHopFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHopFeatures)); }
1964         BlindedHopFeatures(LDKBlindedHopFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHopFeatures)); }
1965         operator LDKBlindedHopFeatures() && { LDKBlindedHopFeatures res = self; memset(&self, 0, sizeof(LDKBlindedHopFeatures)); return res; }
1966         ~BlindedHopFeatures() { BlindedHopFeatures_free(self); }
1967         BlindedHopFeatures& operator=(BlindedHopFeatures&& o) { BlindedHopFeatures_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHopFeatures)); return *this; }
1968         LDKBlindedHopFeatures* operator &() { return &self; }
1969         LDKBlindedHopFeatures* operator ->() { return &self; }
1970         const LDKBlindedHopFeatures* operator &() const { return &self; }
1971         const LDKBlindedHopFeatures* operator ->() const { return &self; }
1972 };
1973 class ChannelTypeFeatures {
1974 private:
1975         LDKChannelTypeFeatures self;
1976 public:
1977         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1978         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1979         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1980         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1981         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1982         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1983         LDKChannelTypeFeatures* operator &() { return &self; }
1984         LDKChannelTypeFeatures* operator ->() { return &self; }
1985         const LDKChannelTypeFeatures* operator &() const { return &self; }
1986         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1987 };
1988 class Offer {
1989 private:
1990         LDKOffer self;
1991 public:
1992         Offer(const Offer&) = delete;
1993         Offer(Offer&& o) : self(o.self) { memset(&o, 0, sizeof(Offer)); }
1994         Offer(LDKOffer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffer)); }
1995         operator LDKOffer() && { LDKOffer res = self; memset(&self, 0, sizeof(LDKOffer)); return res; }
1996         ~Offer() { Offer_free(self); }
1997         Offer& operator=(Offer&& o) { Offer_free(self); self = o.self; memset(&o, 0, sizeof(Offer)); return *this; }
1998         LDKOffer* operator &() { return &self; }
1999         LDKOffer* operator ->() { return &self; }
2000         const LDKOffer* operator &() const { return &self; }
2001         const LDKOffer* operator ->() const { return &self; }
2002 };
2003 class Amount {
2004 private:
2005         LDKAmount self;
2006 public:
2007         Amount(const Amount&) = delete;
2008         Amount(Amount&& o) : self(o.self) { memset(&o, 0, sizeof(Amount)); }
2009         Amount(LDKAmount&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAmount)); }
2010         operator LDKAmount() && { LDKAmount res = self; memset(&self, 0, sizeof(LDKAmount)); return res; }
2011         ~Amount() { Amount_free(self); }
2012         Amount& operator=(Amount&& o) { Amount_free(self); self = o.self; memset(&o, 0, sizeof(Amount)); return *this; }
2013         LDKAmount* operator &() { return &self; }
2014         LDKAmount* operator ->() { return &self; }
2015         const LDKAmount* operator &() const { return &self; }
2016         const LDKAmount* operator ->() const { return &self; }
2017 };
2018 class Quantity {
2019 private:
2020         LDKQuantity self;
2021 public:
2022         Quantity(const Quantity&) = delete;
2023         Quantity(Quantity&& o) : self(o.self) { memset(&o, 0, sizeof(Quantity)); }
2024         Quantity(LDKQuantity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQuantity)); }
2025         operator LDKQuantity() && { LDKQuantity res = self; memset(&self, 0, sizeof(LDKQuantity)); return res; }
2026         ~Quantity() { Quantity_free(self); }
2027         Quantity& operator=(Quantity&& o) { Quantity_free(self); self = o.self; memset(&o, 0, sizeof(Quantity)); return *this; }
2028         LDKQuantity* operator &() { return &self; }
2029         LDKQuantity* operator ->() { return &self; }
2030         const LDKQuantity* operator &() const { return &self; }
2031         const LDKQuantity* operator ->() const { return &self; }
2032 };
2033 class NodeId {
2034 private:
2035         LDKNodeId self;
2036 public:
2037         NodeId(const NodeId&) = delete;
2038         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
2039         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
2040         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
2041         ~NodeId() { NodeId_free(self); }
2042         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
2043         LDKNodeId* operator &() { return &self; }
2044         LDKNodeId* operator ->() { return &self; }
2045         const LDKNodeId* operator &() const { return &self; }
2046         const LDKNodeId* operator ->() const { return &self; }
2047 };
2048 class NetworkGraph {
2049 private:
2050         LDKNetworkGraph self;
2051 public:
2052         NetworkGraph(const NetworkGraph&) = delete;
2053         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
2054         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
2055         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
2056         ~NetworkGraph() { NetworkGraph_free(self); }
2057         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
2058         LDKNetworkGraph* operator &() { return &self; }
2059         LDKNetworkGraph* operator ->() { return &self; }
2060         const LDKNetworkGraph* operator &() const { return &self; }
2061         const LDKNetworkGraph* operator ->() const { return &self; }
2062 };
2063 class ReadOnlyNetworkGraph {
2064 private:
2065         LDKReadOnlyNetworkGraph self;
2066 public:
2067         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
2068         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
2069         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
2070         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
2071         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
2072         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
2073         LDKReadOnlyNetworkGraph* operator &() { return &self; }
2074         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
2075         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
2076         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
2077 };
2078 class NetworkUpdate {
2079 private:
2080         LDKNetworkUpdate self;
2081 public:
2082         NetworkUpdate(const NetworkUpdate&) = delete;
2083         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
2084         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
2085         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
2086         ~NetworkUpdate() { NetworkUpdate_free(self); }
2087         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
2088         LDKNetworkUpdate* operator &() { return &self; }
2089         LDKNetworkUpdate* operator ->() { return &self; }
2090         const LDKNetworkUpdate* operator &() const { return &self; }
2091         const LDKNetworkUpdate* operator ->() const { return &self; }
2092 };
2093 class P2PGossipSync {
2094 private:
2095         LDKP2PGossipSync self;
2096 public:
2097         P2PGossipSync(const P2PGossipSync&) = delete;
2098         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
2099         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
2100         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
2101         ~P2PGossipSync() { P2PGossipSync_free(self); }
2102         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
2103         LDKP2PGossipSync* operator &() { return &self; }
2104         LDKP2PGossipSync* operator ->() { return &self; }
2105         const LDKP2PGossipSync* operator &() const { return &self; }
2106         const LDKP2PGossipSync* operator ->() const { return &self; }
2107 };
2108 class ChannelUpdateInfo {
2109 private:
2110         LDKChannelUpdateInfo self;
2111 public:
2112         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
2113         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
2114         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
2115         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
2116         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
2117         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
2118         LDKChannelUpdateInfo* operator &() { return &self; }
2119         LDKChannelUpdateInfo* operator ->() { return &self; }
2120         const LDKChannelUpdateInfo* operator &() const { return &self; }
2121         const LDKChannelUpdateInfo* operator ->() const { return &self; }
2122 };
2123 class ChannelInfo {
2124 private:
2125         LDKChannelInfo self;
2126 public:
2127         ChannelInfo(const ChannelInfo&) = delete;
2128         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
2129         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
2130         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
2131         ~ChannelInfo() { ChannelInfo_free(self); }
2132         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
2133         LDKChannelInfo* operator &() { return &self; }
2134         LDKChannelInfo* operator ->() { return &self; }
2135         const LDKChannelInfo* operator &() const { return &self; }
2136         const LDKChannelInfo* operator ->() const { return &self; }
2137 };
2138 class DirectedChannelInfo {
2139 private:
2140         LDKDirectedChannelInfo self;
2141 public:
2142         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
2143         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
2144         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
2145         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
2146         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
2147         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
2148         LDKDirectedChannelInfo* operator &() { return &self; }
2149         LDKDirectedChannelInfo* operator ->() { return &self; }
2150         const LDKDirectedChannelInfo* operator &() const { return &self; }
2151         const LDKDirectedChannelInfo* operator ->() const { return &self; }
2152 };
2153 class EffectiveCapacity {
2154 private:
2155         LDKEffectiveCapacity self;
2156 public:
2157         EffectiveCapacity(const EffectiveCapacity&) = delete;
2158         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
2159         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
2160         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
2161         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
2162         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
2163         LDKEffectiveCapacity* operator &() { return &self; }
2164         LDKEffectiveCapacity* operator ->() { return &self; }
2165         const LDKEffectiveCapacity* operator &() const { return &self; }
2166         const LDKEffectiveCapacity* operator ->() const { return &self; }
2167 };
2168 class RoutingFees {
2169 private:
2170         LDKRoutingFees self;
2171 public:
2172         RoutingFees(const RoutingFees&) = delete;
2173         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
2174         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
2175         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
2176         ~RoutingFees() { RoutingFees_free(self); }
2177         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
2178         LDKRoutingFees* operator &() { return &self; }
2179         LDKRoutingFees* operator ->() { return &self; }
2180         const LDKRoutingFees* operator &() const { return &self; }
2181         const LDKRoutingFees* operator ->() const { return &self; }
2182 };
2183 class NodeAnnouncementInfo {
2184 private:
2185         LDKNodeAnnouncementInfo self;
2186 public:
2187         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
2188         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
2189         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
2190         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
2191         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
2192         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
2193         LDKNodeAnnouncementInfo* operator &() { return &self; }
2194         LDKNodeAnnouncementInfo* operator ->() { return &self; }
2195         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
2196         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
2197 };
2198 class NodeAlias {
2199 private:
2200         LDKNodeAlias self;
2201 public:
2202         NodeAlias(const NodeAlias&) = delete;
2203         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
2204         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
2205         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
2206         ~NodeAlias() { NodeAlias_free(self); }
2207         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
2208         LDKNodeAlias* operator &() { return &self; }
2209         LDKNodeAlias* operator ->() { return &self; }
2210         const LDKNodeAlias* operator &() const { return &self; }
2211         const LDKNodeAlias* operator ->() const { return &self; }
2212 };
2213 class NodeInfo {
2214 private:
2215         LDKNodeInfo self;
2216 public:
2217         NodeInfo(const NodeInfo&) = delete;
2218         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
2219         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
2220         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
2221         ~NodeInfo() { NodeInfo_free(self); }
2222         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
2223         LDKNodeInfo* operator &() { return &self; }
2224         LDKNodeInfo* operator ->() { return &self; }
2225         const LDKNodeInfo* operator &() const { return &self; }
2226         const LDKNodeInfo* operator ->() const { return &self; }
2227 };
2228 class ChannelDerivationParameters {
2229 private:
2230         LDKChannelDerivationParameters self;
2231 public:
2232         ChannelDerivationParameters(const ChannelDerivationParameters&) = delete;
2233         ChannelDerivationParameters(ChannelDerivationParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDerivationParameters)); }
2234         ChannelDerivationParameters(LDKChannelDerivationParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDerivationParameters)); }
2235         operator LDKChannelDerivationParameters() && { LDKChannelDerivationParameters res = self; memset(&self, 0, sizeof(LDKChannelDerivationParameters)); return res; }
2236         ~ChannelDerivationParameters() { ChannelDerivationParameters_free(self); }
2237         ChannelDerivationParameters& operator=(ChannelDerivationParameters&& o) { ChannelDerivationParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDerivationParameters)); return *this; }
2238         LDKChannelDerivationParameters* operator &() { return &self; }
2239         LDKChannelDerivationParameters* operator ->() { return &self; }
2240         const LDKChannelDerivationParameters* operator &() const { return &self; }
2241         const LDKChannelDerivationParameters* operator ->() const { return &self; }
2242 };
2243 class AnchorDescriptor {
2244 private:
2245         LDKAnchorDescriptor self;
2246 public:
2247         AnchorDescriptor(const AnchorDescriptor&) = delete;
2248         AnchorDescriptor(AnchorDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(AnchorDescriptor)); }
2249         AnchorDescriptor(LDKAnchorDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnchorDescriptor)); }
2250         operator LDKAnchorDescriptor() && { LDKAnchorDescriptor res = self; memset(&self, 0, sizeof(LDKAnchorDescriptor)); return res; }
2251         ~AnchorDescriptor() { AnchorDescriptor_free(self); }
2252         AnchorDescriptor& operator=(AnchorDescriptor&& o) { AnchorDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(AnchorDescriptor)); return *this; }
2253         LDKAnchorDescriptor* operator &() { return &self; }
2254         LDKAnchorDescriptor* operator ->() { return &self; }
2255         const LDKAnchorDescriptor* operator &() const { return &self; }
2256         const LDKAnchorDescriptor* operator ->() const { return &self; }
2257 };
2258 class HTLCDescriptor {
2259 private:
2260         LDKHTLCDescriptor self;
2261 public:
2262         HTLCDescriptor(const HTLCDescriptor&) = delete;
2263         HTLCDescriptor(HTLCDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDescriptor)); }
2264         HTLCDescriptor(LDKHTLCDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDescriptor)); }
2265         operator LDKHTLCDescriptor() && { LDKHTLCDescriptor res = self; memset(&self, 0, sizeof(LDKHTLCDescriptor)); return res; }
2266         ~HTLCDescriptor() { HTLCDescriptor_free(self); }
2267         HTLCDescriptor& operator=(HTLCDescriptor&& o) { HTLCDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDescriptor)); return *this; }
2268         LDKHTLCDescriptor* operator &() { return &self; }
2269         LDKHTLCDescriptor* operator ->() { return &self; }
2270         const LDKHTLCDescriptor* operator &() const { return &self; }
2271         const LDKHTLCDescriptor* operator ->() const { return &self; }
2272 };
2273 class BumpTransactionEvent {
2274 private:
2275         LDKBumpTransactionEvent self;
2276 public:
2277         BumpTransactionEvent(const BumpTransactionEvent&) = delete;
2278         BumpTransactionEvent(BumpTransactionEvent&& o) : self(o.self) { memset(&o, 0, sizeof(BumpTransactionEvent)); }
2279         BumpTransactionEvent(LDKBumpTransactionEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBumpTransactionEvent)); }
2280         operator LDKBumpTransactionEvent() && { LDKBumpTransactionEvent res = self; memset(&self, 0, sizeof(LDKBumpTransactionEvent)); return res; }
2281         ~BumpTransactionEvent() { BumpTransactionEvent_free(self); }
2282         BumpTransactionEvent& operator=(BumpTransactionEvent&& o) { BumpTransactionEvent_free(self); self = o.self; memset(&o, 0, sizeof(BumpTransactionEvent)); return *this; }
2283         LDKBumpTransactionEvent* operator &() { return &self; }
2284         LDKBumpTransactionEvent* operator ->() { return &self; }
2285         const LDKBumpTransactionEvent* operator &() const { return &self; }
2286         const LDKBumpTransactionEvent* operator ->() const { return &self; }
2287 };
2288 class Input {
2289 private:
2290         LDKInput self;
2291 public:
2292         Input(const Input&) = delete;
2293         Input(Input&& o) : self(o.self) { memset(&o, 0, sizeof(Input)); }
2294         Input(LDKInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInput)); }
2295         operator LDKInput() && { LDKInput res = self; memset(&self, 0, sizeof(LDKInput)); return res; }
2296         ~Input() { Input_free(self); }
2297         Input& operator=(Input&& o) { Input_free(self); self = o.self; memset(&o, 0, sizeof(Input)); return *this; }
2298         LDKInput* operator &() { return &self; }
2299         LDKInput* operator ->() { return &self; }
2300         const LDKInput* operator &() const { return &self; }
2301         const LDKInput* operator ->() const { return &self; }
2302 };
2303 class Utxo {
2304 private:
2305         LDKUtxo self;
2306 public:
2307         Utxo(const Utxo&) = delete;
2308         Utxo(Utxo&& o) : self(o.self) { memset(&o, 0, sizeof(Utxo)); }
2309         Utxo(LDKUtxo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxo)); }
2310         operator LDKUtxo() && { LDKUtxo res = self; memset(&self, 0, sizeof(LDKUtxo)); return res; }
2311         ~Utxo() { Utxo_free(self); }
2312         Utxo& operator=(Utxo&& o) { Utxo_free(self); self = o.self; memset(&o, 0, sizeof(Utxo)); return *this; }
2313         LDKUtxo* operator &() { return &self; }
2314         LDKUtxo* operator ->() { return &self; }
2315         const LDKUtxo* operator &() const { return &self; }
2316         const LDKUtxo* operator ->() const { return &self; }
2317 };
2318 class CoinSelection {
2319 private:
2320         LDKCoinSelection self;
2321 public:
2322         CoinSelection(const CoinSelection&) = delete;
2323         CoinSelection(CoinSelection&& o) : self(o.self) { memset(&o, 0, sizeof(CoinSelection)); }
2324         CoinSelection(LDKCoinSelection&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCoinSelection)); }
2325         operator LDKCoinSelection() && { LDKCoinSelection res = self; memset(&self, 0, sizeof(LDKCoinSelection)); return res; }
2326         ~CoinSelection() { CoinSelection_free(self); }
2327         CoinSelection& operator=(CoinSelection&& o) { CoinSelection_free(self); self = o.self; memset(&o, 0, sizeof(CoinSelection)); return *this; }
2328         LDKCoinSelection* operator &() { return &self; }
2329         LDKCoinSelection* operator ->() { return &self; }
2330         const LDKCoinSelection* operator &() const { return &self; }
2331         const LDKCoinSelection* operator ->() const { return &self; }
2332 };
2333 class CoinSelectionSource {
2334 private:
2335         LDKCoinSelectionSource self;
2336 public:
2337         CoinSelectionSource(const CoinSelectionSource&) = delete;
2338         CoinSelectionSource(CoinSelectionSource&& o) : self(o.self) { memset(&o, 0, sizeof(CoinSelectionSource)); }
2339         CoinSelectionSource(LDKCoinSelectionSource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCoinSelectionSource)); }
2340         operator LDKCoinSelectionSource() && { LDKCoinSelectionSource res = self; memset(&self, 0, sizeof(LDKCoinSelectionSource)); return res; }
2341         ~CoinSelectionSource() { CoinSelectionSource_free(self); }
2342         CoinSelectionSource& operator=(CoinSelectionSource&& o) { CoinSelectionSource_free(self); self = o.self; memset(&o, 0, sizeof(CoinSelectionSource)); return *this; }
2343         LDKCoinSelectionSource* operator &() { return &self; }
2344         LDKCoinSelectionSource* operator ->() { return &self; }
2345         const LDKCoinSelectionSource* operator &() const { return &self; }
2346         const LDKCoinSelectionSource* operator ->() const { return &self; }
2347         /**
2348          *  Performs coin selection of a set of UTXOs, with at least 1 confirmation each, that are
2349          *  available to spend. Implementations are free to pick their coin selection algorithm of
2350          *  choice, as long as the following requirements are met:
2351          * 
2352          *  1. `must_spend` contains a set of [`Input`]s that must be included in the transaction
2353          *     throughout coin selection, but must not be returned as part of the result.
2354          *  2. `must_pay_to` contains a set of [`TxOut`]s that must be included in the transaction
2355          *     throughout coin selection. In some cases, like when funding an anchor transaction, this
2356          *     set is empty. Implementations should ensure they handle this correctly on their end,
2357          *     e.g., Bitcoin Core's `fundrawtransaction` RPC requires at least one output to be
2358          *     provided, in which case a zero-value empty OP_RETURN output can be used instead.
2359          *  3. Enough inputs must be selected/contributed for the resulting transaction (including the
2360          *     inputs and outputs noted above) to meet `target_feerate_sat_per_1000_weight`.
2361          * 
2362          *  Implementations must take note that [`Input::satisfaction_weight`] only tracks the weight of
2363          *  the input's `script_sig` and `witness`. Some wallets, like Bitcoin Core's, may require
2364          *  providing the full input weight. Failing to do so may lead to underestimating fee bumps and
2365          *  delaying block inclusion.
2366          * 
2367          *  The `claim_id` must map to the set of external UTXOs assigned to the claim, such that they
2368          *  can be re-used within new fee-bumped iterations of the original claiming transaction,
2369          *  ensuring that claims don't double spend each other. If a specific `claim_id` has never had a
2370          *  transaction associated with it, and all of the available UTXOs have already been assigned to
2371          *  other claims, implementations must be willing to double spend their UTXOs. The choice of
2372          *  which UTXOs to double spend is left to the implementation, but it must strive to keep the
2373          *  set of other claims being double spent to a minimum.
2374          */
2375         inline LDK::CResult_CoinSelectionNoneZ select_confirmed_utxos(struct LDKThirtyTwoBytes claim_id, struct LDKCVec_InputZ must_spend, struct LDKCVec_TxOutZ must_pay_to, uint32_t target_feerate_sat_per_1000_weight);
2376         /**
2377          *  Signs and provides the full witness for all inputs within the transaction known to the
2378          *  trait (i.e., any provided via [`CoinSelectionSource::select_confirmed_utxos`]).
2379          */
2380         inline LDK::CResult_TransactionNoneZ sign_tx(struct LDKTransaction tx);
2381 };
2382 class WalletSource {
2383 private:
2384         LDKWalletSource self;
2385 public:
2386         WalletSource(const WalletSource&) = delete;
2387         WalletSource(WalletSource&& o) : self(o.self) { memset(&o, 0, sizeof(WalletSource)); }
2388         WalletSource(LDKWalletSource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWalletSource)); }
2389         operator LDKWalletSource() && { LDKWalletSource res = self; memset(&self, 0, sizeof(LDKWalletSource)); return res; }
2390         ~WalletSource() { WalletSource_free(self); }
2391         WalletSource& operator=(WalletSource&& o) { WalletSource_free(self); self = o.self; memset(&o, 0, sizeof(WalletSource)); return *this; }
2392         LDKWalletSource* operator &() { return &self; }
2393         LDKWalletSource* operator ->() { return &self; }
2394         const LDKWalletSource* operator &() const { return &self; }
2395         const LDKWalletSource* operator ->() const { return &self; }
2396         /**
2397          *  Returns all UTXOs, with at least 1 confirmation each, that are available to spend.
2398          */
2399         inline LDK::CResult_CVec_UtxoZNoneZ list_confirmed_utxos();
2400         /**
2401          *  Returns a script to use for change above dust resulting from a successful coin selection
2402          *  attempt.
2403          */
2404         inline LDK::CResult_ScriptNoneZ get_change_script();
2405         /**
2406          *  Signs and provides the full [`TxIn::script_sig`] and [`TxIn::witness`] for all inputs within
2407          *  the transaction known to the wallet (i.e., any provided via
2408          *  [`WalletSource::list_confirmed_utxos`]).
2409          */
2410         inline LDK::CResult_TransactionNoneZ sign_tx(struct LDKTransaction tx);
2411 };
2412 class Wallet {
2413 private:
2414         LDKWallet self;
2415 public:
2416         Wallet(const Wallet&) = delete;
2417         Wallet(Wallet&& o) : self(o.self) { memset(&o, 0, sizeof(Wallet)); }
2418         Wallet(LDKWallet&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWallet)); }
2419         operator LDKWallet() && { LDKWallet res = self; memset(&self, 0, sizeof(LDKWallet)); return res; }
2420         ~Wallet() { Wallet_free(self); }
2421         Wallet& operator=(Wallet&& o) { Wallet_free(self); self = o.self; memset(&o, 0, sizeof(Wallet)); return *this; }
2422         LDKWallet* operator &() { return &self; }
2423         LDKWallet* operator ->() { return &self; }
2424         const LDKWallet* operator &() const { return &self; }
2425         const LDKWallet* operator ->() const { return &self; }
2426 };
2427 class BumpTransactionEventHandler {
2428 private:
2429         LDKBumpTransactionEventHandler self;
2430 public:
2431         BumpTransactionEventHandler(const BumpTransactionEventHandler&) = delete;
2432         BumpTransactionEventHandler(BumpTransactionEventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(BumpTransactionEventHandler)); }
2433         BumpTransactionEventHandler(LDKBumpTransactionEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBumpTransactionEventHandler)); }
2434         operator LDKBumpTransactionEventHandler() && { LDKBumpTransactionEventHandler res = self; memset(&self, 0, sizeof(LDKBumpTransactionEventHandler)); return res; }
2435         ~BumpTransactionEventHandler() { BumpTransactionEventHandler_free(self); }
2436         BumpTransactionEventHandler& operator=(BumpTransactionEventHandler&& o) { BumpTransactionEventHandler_free(self); self = o.self; memset(&o, 0, sizeof(BumpTransactionEventHandler)); return *this; }
2437         LDKBumpTransactionEventHandler* operator &() { return &self; }
2438         LDKBumpTransactionEventHandler* operator ->() { return &self; }
2439         const LDKBumpTransactionEventHandler* operator &() const { return &self; }
2440         const LDKBumpTransactionEventHandler* operator ->() const { return &self; }
2441 };
2442 class FailureCode {
2443 private:
2444         LDKFailureCode self;
2445 public:
2446         FailureCode(const FailureCode&) = delete;
2447         FailureCode(FailureCode&& o) : self(o.self) { memset(&o, 0, sizeof(FailureCode)); }
2448         FailureCode(LDKFailureCode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFailureCode)); }
2449         operator LDKFailureCode() && { LDKFailureCode res = self; memset(&self, 0, sizeof(LDKFailureCode)); return res; }
2450         FailureCode& operator=(FailureCode&& o) { self = o.self; memset(&o, 0, sizeof(FailureCode)); return *this; }
2451         LDKFailureCode* operator &() { return &self; }
2452         LDKFailureCode* operator ->() { return &self; }
2453         const LDKFailureCode* operator &() const { return &self; }
2454         const LDKFailureCode* operator ->() const { return &self; }
2455 };
2456 class ChannelManager {
2457 private:
2458         LDKChannelManager self;
2459 public:
2460         ChannelManager(const ChannelManager&) = delete;
2461         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2462         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2463         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2464         ~ChannelManager() { ChannelManager_free(self); }
2465         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2466         LDKChannelManager* operator &() { return &self; }
2467         LDKChannelManager* operator ->() { return &self; }
2468         const LDKChannelManager* operator &() const { return &self; }
2469         const LDKChannelManager* operator ->() const { return &self; }
2470 };
2471 class ChainParameters {
2472 private:
2473         LDKChainParameters self;
2474 public:
2475         ChainParameters(const ChainParameters&) = delete;
2476         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2477         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2478         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2479         ~ChainParameters() { ChainParameters_free(self); }
2480         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2481         LDKChainParameters* operator &() { return &self; }
2482         LDKChainParameters* operator ->() { return &self; }
2483         const LDKChainParameters* operator &() const { return &self; }
2484         const LDKChainParameters* operator ->() const { return &self; }
2485 };
2486 class CounterpartyForwardingInfo {
2487 private:
2488         LDKCounterpartyForwardingInfo self;
2489 public:
2490         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2491         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2492         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2493         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2494         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2495         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2496         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2497         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2498         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2499         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2500 };
2501 class ChannelCounterparty {
2502 private:
2503         LDKChannelCounterparty self;
2504 public:
2505         ChannelCounterparty(const ChannelCounterparty&) = delete;
2506         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2507         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2508         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2509         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2510         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2511         LDKChannelCounterparty* operator &() { return &self; }
2512         LDKChannelCounterparty* operator ->() { return &self; }
2513         const LDKChannelCounterparty* operator &() const { return &self; }
2514         const LDKChannelCounterparty* operator ->() const { return &self; }
2515 };
2516 class ChannelDetails {
2517 private:
2518         LDKChannelDetails self;
2519 public:
2520         ChannelDetails(const ChannelDetails&) = delete;
2521         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2522         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2523         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2524         ~ChannelDetails() { ChannelDetails_free(self); }
2525         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2526         LDKChannelDetails* operator &() { return &self; }
2527         LDKChannelDetails* operator ->() { return &self; }
2528         const LDKChannelDetails* operator &() const { return &self; }
2529         const LDKChannelDetails* operator ->() const { return &self; }
2530 };
2531 class ChannelShutdownState {
2532 private:
2533         LDKChannelShutdownState self;
2534 public:
2535         ChannelShutdownState(const ChannelShutdownState&) = delete;
2536         ChannelShutdownState(ChannelShutdownState&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelShutdownState)); }
2537         ChannelShutdownState(LDKChannelShutdownState&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelShutdownState)); }
2538         operator LDKChannelShutdownState() && { LDKChannelShutdownState res = self; memset(&self, 0, sizeof(LDKChannelShutdownState)); return res; }
2539         ChannelShutdownState& operator=(ChannelShutdownState&& o) { self = o.self; memset(&o, 0, sizeof(ChannelShutdownState)); return *this; }
2540         LDKChannelShutdownState* operator &() { return &self; }
2541         LDKChannelShutdownState* operator ->() { return &self; }
2542         const LDKChannelShutdownState* operator &() const { return &self; }
2543         const LDKChannelShutdownState* operator ->() const { return &self; }
2544 };
2545 class RecentPaymentDetails {
2546 private:
2547         LDKRecentPaymentDetails self;
2548 public:
2549         RecentPaymentDetails(const RecentPaymentDetails&) = delete;
2550         RecentPaymentDetails(RecentPaymentDetails&& o) : self(o.self) { memset(&o, 0, sizeof(RecentPaymentDetails)); }
2551         RecentPaymentDetails(LDKRecentPaymentDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecentPaymentDetails)); }
2552         operator LDKRecentPaymentDetails() && { LDKRecentPaymentDetails res = self; memset(&self, 0, sizeof(LDKRecentPaymentDetails)); return res; }
2553         ~RecentPaymentDetails() { RecentPaymentDetails_free(self); }
2554         RecentPaymentDetails& operator=(RecentPaymentDetails&& o) { RecentPaymentDetails_free(self); self = o.self; memset(&o, 0, sizeof(RecentPaymentDetails)); return *this; }
2555         LDKRecentPaymentDetails* operator &() { return &self; }
2556         LDKRecentPaymentDetails* operator ->() { return &self; }
2557         const LDKRecentPaymentDetails* operator &() const { return &self; }
2558         const LDKRecentPaymentDetails* operator ->() const { return &self; }
2559 };
2560 class PhantomRouteHints {
2561 private:
2562         LDKPhantomRouteHints self;
2563 public:
2564         PhantomRouteHints(const PhantomRouteHints&) = delete;
2565         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2566         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
2567         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
2568         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
2569         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
2570         LDKPhantomRouteHints* operator &() { return &self; }
2571         LDKPhantomRouteHints* operator ->() { return &self; }
2572         const LDKPhantomRouteHints* operator &() const { return &self; }
2573         const LDKPhantomRouteHints* operator ->() const { return &self; }
2574 };
2575 class ChannelManagerReadArgs {
2576 private:
2577         LDKChannelManagerReadArgs self;
2578 public:
2579         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
2580         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
2581         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
2582         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
2583         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
2584         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
2585         LDKChannelManagerReadArgs* operator &() { return &self; }
2586         LDKChannelManagerReadArgs* operator ->() { return &self; }
2587         const LDKChannelManagerReadArgs* operator &() const { return &self; }
2588         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
2589 };
2590 class ChannelHandshakeConfig {
2591 private:
2592         LDKChannelHandshakeConfig self;
2593 public:
2594         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
2595         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
2596         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
2597         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
2598         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
2599         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
2600         LDKChannelHandshakeConfig* operator &() { return &self; }
2601         LDKChannelHandshakeConfig* operator ->() { return &self; }
2602         const LDKChannelHandshakeConfig* operator &() const { return &self; }
2603         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
2604 };
2605 class ChannelHandshakeLimits {
2606 private:
2607         LDKChannelHandshakeLimits self;
2608 public:
2609         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
2610         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
2611         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
2612         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
2613         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
2614         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
2615         LDKChannelHandshakeLimits* operator &() { return &self; }
2616         LDKChannelHandshakeLimits* operator ->() { return &self; }
2617         const LDKChannelHandshakeLimits* operator &() const { return &self; }
2618         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
2619 };
2620 class MaxDustHTLCExposure {
2621 private:
2622         LDKMaxDustHTLCExposure self;
2623 public:
2624         MaxDustHTLCExposure(const MaxDustHTLCExposure&) = delete;
2625         MaxDustHTLCExposure(MaxDustHTLCExposure&& o) : self(o.self) { memset(&o, 0, sizeof(MaxDustHTLCExposure)); }
2626         MaxDustHTLCExposure(LDKMaxDustHTLCExposure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMaxDustHTLCExposure)); }
2627         operator LDKMaxDustHTLCExposure() && { LDKMaxDustHTLCExposure res = self; memset(&self, 0, sizeof(LDKMaxDustHTLCExposure)); return res; }
2628         ~MaxDustHTLCExposure() { MaxDustHTLCExposure_free(self); }
2629         MaxDustHTLCExposure& operator=(MaxDustHTLCExposure&& o) { MaxDustHTLCExposure_free(self); self = o.self; memset(&o, 0, sizeof(MaxDustHTLCExposure)); return *this; }
2630         LDKMaxDustHTLCExposure* operator &() { return &self; }
2631         LDKMaxDustHTLCExposure* operator ->() { return &self; }
2632         const LDKMaxDustHTLCExposure* operator &() const { return &self; }
2633         const LDKMaxDustHTLCExposure* operator ->() const { return &self; }
2634 };
2635 class ChannelConfig {
2636 private:
2637         LDKChannelConfig self;
2638 public:
2639         ChannelConfig(const ChannelConfig&) = delete;
2640         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
2641         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
2642         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
2643         ~ChannelConfig() { ChannelConfig_free(self); }
2644         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
2645         LDKChannelConfig* operator &() { return &self; }
2646         LDKChannelConfig* operator ->() { return &self; }
2647         const LDKChannelConfig* operator &() const { return &self; }
2648         const LDKChannelConfig* operator ->() const { return &self; }
2649 };
2650 class ChannelConfigUpdate {
2651 private:
2652         LDKChannelConfigUpdate self;
2653 public:
2654         ChannelConfigUpdate(const ChannelConfigUpdate&) = delete;
2655         ChannelConfigUpdate(ChannelConfigUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfigUpdate)); }
2656         ChannelConfigUpdate(LDKChannelConfigUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfigUpdate)); }
2657         operator LDKChannelConfigUpdate() && { LDKChannelConfigUpdate res = self; memset(&self, 0, sizeof(LDKChannelConfigUpdate)); return res; }
2658         ~ChannelConfigUpdate() { ChannelConfigUpdate_free(self); }
2659         ChannelConfigUpdate& operator=(ChannelConfigUpdate&& o) { ChannelConfigUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfigUpdate)); return *this; }
2660         LDKChannelConfigUpdate* operator &() { return &self; }
2661         LDKChannelConfigUpdate* operator ->() { return &self; }
2662         const LDKChannelConfigUpdate* operator &() const { return &self; }
2663         const LDKChannelConfigUpdate* operator ->() const { return &self; }
2664 };
2665 class UserConfig {
2666 private:
2667         LDKUserConfig self;
2668 public:
2669         UserConfig(const UserConfig&) = delete;
2670         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
2671         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
2672         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
2673         ~UserConfig() { UserConfig_free(self); }
2674         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
2675         LDKUserConfig* operator &() { return &self; }
2676         LDKUserConfig* operator ->() { return &self; }
2677         const LDKUserConfig* operator &() const { return &self; }
2678         const LDKUserConfig* operator ->() const { return &self; }
2679 };
2680 class APIError {
2681 private:
2682         LDKAPIError self;
2683 public:
2684         APIError(const APIError&) = delete;
2685         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
2686         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
2687         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
2688         ~APIError() { APIError_free(self); }
2689         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
2690         LDKAPIError* operator &() { return &self; }
2691         LDKAPIError* operator ->() { return &self; }
2692         const LDKAPIError* operator &() const { return &self; }
2693         const LDKAPIError* operator ->() const { return &self; }
2694 };
2695 class ChannelMonitorUpdate {
2696 private:
2697         LDKChannelMonitorUpdate self;
2698 public:
2699         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2700         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2701         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2702         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2703         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2704         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2705         LDKChannelMonitorUpdate* operator &() { return &self; }
2706         LDKChannelMonitorUpdate* operator ->() { return &self; }
2707         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2708         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2709 };
2710 class MonitorEvent {
2711 private:
2712         LDKMonitorEvent self;
2713 public:
2714         MonitorEvent(const MonitorEvent&) = delete;
2715         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2716         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2717         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2718         ~MonitorEvent() { MonitorEvent_free(self); }
2719         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2720         LDKMonitorEvent* operator &() { return &self; }
2721         LDKMonitorEvent* operator ->() { return &self; }
2722         const LDKMonitorEvent* operator &() const { return &self; }
2723         const LDKMonitorEvent* operator ->() const { return &self; }
2724 };
2725 class HTLCUpdate {
2726 private:
2727         LDKHTLCUpdate self;
2728 public:
2729         HTLCUpdate(const HTLCUpdate&) = delete;
2730         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2731         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2732         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2733         ~HTLCUpdate() { HTLCUpdate_free(self); }
2734         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2735         LDKHTLCUpdate* operator &() { return &self; }
2736         LDKHTLCUpdate* operator ->() { return &self; }
2737         const LDKHTLCUpdate* operator &() const { return &self; }
2738         const LDKHTLCUpdate* operator ->() const { return &self; }
2739 };
2740 class Balance {
2741 private:
2742         LDKBalance self;
2743 public:
2744         Balance(const Balance&) = delete;
2745         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2746         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2747         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2748         ~Balance() { Balance_free(self); }
2749         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2750         LDKBalance* operator &() { return &self; }
2751         LDKBalance* operator ->() { return &self; }
2752         const LDKBalance* operator &() const { return &self; }
2753         const LDKBalance* operator ->() const { return &self; }
2754 };
2755 class ChannelMonitor {
2756 private:
2757         LDKChannelMonitor self;
2758 public:
2759         ChannelMonitor(const ChannelMonitor&) = delete;
2760         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2761         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2762         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2763         ~ChannelMonitor() { ChannelMonitor_free(self); }
2764         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2765         LDKChannelMonitor* operator &() { return &self; }
2766         LDKChannelMonitor* operator ->() { return &self; }
2767         const LDKChannelMonitor* operator &() const { return &self; }
2768         const LDKChannelMonitor* operator ->() const { return &self; }
2769 };
2770 class ExpandedKey {
2771 private:
2772         LDKExpandedKey self;
2773 public:
2774         ExpandedKey(const ExpandedKey&) = delete;
2775         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
2776         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
2777         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
2778         ~ExpandedKey() { ExpandedKey_free(self); }
2779         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
2780         LDKExpandedKey* operator &() { return &self; }
2781         LDKExpandedKey* operator ->() { return &self; }
2782         const LDKExpandedKey* operator &() const { return &self; }
2783         const LDKExpandedKey* operator ->() const { return &self; }
2784 };
2785 class CustomMessageHandler {
2786 private:
2787         LDKCustomMessageHandler self;
2788 public:
2789         CustomMessageHandler(const CustomMessageHandler&) = delete;
2790         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2791         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2792         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2793         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2794         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2795         LDKCustomMessageHandler* operator &() { return &self; }
2796         LDKCustomMessageHandler* operator ->() { return &self; }
2797         const LDKCustomMessageHandler* operator &() const { return &self; }
2798         const LDKCustomMessageHandler* operator ->() const { return &self; }
2799         /**
2800          *  Handles the given message sent from `sender_node_id`, possibly producing messages for
2801          *  [`CustomMessageHandler::get_and_clear_pending_msg`] to return and thus for [`PeerManager`]
2802          *  to send.
2803          */
2804         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
2805         /**
2806          *  Returns the list of pending messages that were generated by the handler, clearing the list
2807          *  in the process. Each message is paired with the node id of the intended recipient. If no
2808          *  connection to the node exists, then the message is simply not sent.
2809          */
2810         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
2811         /**
2812          *  Gets the node feature flags which this handler itself supports. All available handlers are
2813          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
2814          *  which are broadcasted in our [`NodeAnnouncement`] message.
2815          * 
2816          *  [`NodeAnnouncement`]: crate::ln::msgs::NodeAnnouncement
2817          */
2818         inline LDK::NodeFeatures provided_node_features();
2819         /**
2820          *  Gets the init feature flags which should be sent to the given peer. All available handlers
2821          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
2822          *  which are sent in our [`Init`] message.
2823          * 
2824          *  [`Init`]: crate::ln::msgs::Init
2825          */
2826         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
2827 };
2828 class IgnoringMessageHandler {
2829 private:
2830         LDKIgnoringMessageHandler self;
2831 public:
2832         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
2833         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
2834         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
2835         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
2836         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
2837         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
2838         LDKIgnoringMessageHandler* operator &() { return &self; }
2839         LDKIgnoringMessageHandler* operator ->() { return &self; }
2840         const LDKIgnoringMessageHandler* operator &() const { return &self; }
2841         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
2842 };
2843 class ErroringMessageHandler {
2844 private:
2845         LDKErroringMessageHandler self;
2846 public:
2847         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
2848         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
2849         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
2850         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
2851         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
2852         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
2853         LDKErroringMessageHandler* operator &() { return &self; }
2854         LDKErroringMessageHandler* operator ->() { return &self; }
2855         const LDKErroringMessageHandler* operator &() const { return &self; }
2856         const LDKErroringMessageHandler* operator ->() const { return &self; }
2857 };
2858 class MessageHandler {
2859 private:
2860         LDKMessageHandler self;
2861 public:
2862         MessageHandler(const MessageHandler&) = delete;
2863         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
2864         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
2865         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
2866         ~MessageHandler() { MessageHandler_free(self); }
2867         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
2868         LDKMessageHandler* operator &() { return &self; }
2869         LDKMessageHandler* operator ->() { return &self; }
2870         const LDKMessageHandler* operator &() const { return &self; }
2871         const LDKMessageHandler* operator ->() const { return &self; }
2872 };
2873 class SocketDescriptor {
2874 private:
2875         LDKSocketDescriptor self;
2876 public:
2877         SocketDescriptor(const SocketDescriptor&) = delete;
2878         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
2879         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
2880         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
2881         ~SocketDescriptor() { SocketDescriptor_free(self); }
2882         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
2883         LDKSocketDescriptor* operator &() { return &self; }
2884         LDKSocketDescriptor* operator ->() { return &self; }
2885         const LDKSocketDescriptor* operator &() const { return &self; }
2886         const LDKSocketDescriptor* operator ->() const { return &self; }
2887         /**
2888          *  Attempts to send some data from the given slice to the peer.
2889          * 
2890          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
2891          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
2892          *  called and further write attempts may occur until that time.
2893          * 
2894          *  If the returned size is smaller than `data.len()`, a
2895          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
2896          *  written. Additionally, until a `send_data` event completes fully, no further
2897          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
2898          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
2899          *  until then.
2900          * 
2901          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
2902          *  (indicating that read events should be paused to prevent DoS in the send buffer),
2903          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
2904          *  `resume_read` of false carries no meaning, and should not cause any action.
2905          */
2906         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
2907         /**
2908          *  Disconnect the socket pointed to by this SocketDescriptor.
2909          * 
2910          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
2911          *  call (doing so is a noop).
2912          */
2913         inline void disconnect_socket();
2914         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
2915         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
2916         /**
2917          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
2918          * This is used, for example, for inclusion of this object in a hash map.
2919          */
2920         inline uint64_t hash();
2921 };
2922 class PeerHandleError {
2923 private:
2924         LDKPeerHandleError self;
2925 public:
2926         PeerHandleError(const PeerHandleError&) = delete;
2927         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
2928         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
2929         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
2930         ~PeerHandleError() { PeerHandleError_free(self); }
2931         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
2932         LDKPeerHandleError* operator &() { return &self; }
2933         LDKPeerHandleError* operator ->() { return &self; }
2934         const LDKPeerHandleError* operator &() const { return &self; }
2935         const LDKPeerHandleError* operator ->() const { return &self; }
2936 };
2937 class PeerManager {
2938 private:
2939         LDKPeerManager self;
2940 public:
2941         PeerManager(const PeerManager&) = delete;
2942         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
2943         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
2944         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
2945         ~PeerManager() { PeerManager_free(self); }
2946         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
2947         LDKPeerManager* operator &() { return &self; }
2948         LDKPeerManager* operator ->() { return &self; }
2949         const LDKPeerManager* operator &() const { return &self; }
2950         const LDKPeerManager* operator ->() const { return &self; }
2951 };
2952 class RapidGossipSync {
2953 private:
2954         LDKRapidGossipSync self;
2955 public:
2956         RapidGossipSync(const RapidGossipSync&) = delete;
2957         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
2958         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
2959         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
2960         ~RapidGossipSync() { RapidGossipSync_free(self); }
2961         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
2962         LDKRapidGossipSync* operator &() { return &self; }
2963         LDKRapidGossipSync* operator ->() { return &self; }
2964         const LDKRapidGossipSync* operator &() const { return &self; }
2965         const LDKRapidGossipSync* operator ->() const { return &self; }
2966 };
2967 class Persister {
2968 private:
2969         LDKPersister self;
2970 public:
2971         Persister(const Persister&) = delete;
2972         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
2973         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
2974         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
2975         ~Persister() { Persister_free(self); }
2976         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
2977         LDKPersister* operator &() { return &self; }
2978         LDKPersister* operator ->() { return &self; }
2979         const LDKPersister* operator &() const { return &self; }
2980         const LDKPersister* operator ->() const { return &self; }
2981         /**
2982          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
2983          */
2984         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
2985         /**
2986          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
2987          */
2988         inline LDK::CResult_NoneErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
2989         /**
2990          *  Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
2991          */
2992         inline LDK::CResult_NoneErrorZ persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer);
2993 };
2994 class UnsignedInvoiceRequest {
2995 private:
2996         LDKUnsignedInvoiceRequest self;
2997 public:
2998         UnsignedInvoiceRequest(const UnsignedInvoiceRequest&) = delete;
2999         UnsignedInvoiceRequest(UnsignedInvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedInvoiceRequest)); }
3000         UnsignedInvoiceRequest(LDKUnsignedInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedInvoiceRequest)); }
3001         operator LDKUnsignedInvoiceRequest() && { LDKUnsignedInvoiceRequest res = self; memset(&self, 0, sizeof(LDKUnsignedInvoiceRequest)); return res; }
3002         ~UnsignedInvoiceRequest() { UnsignedInvoiceRequest_free(self); }
3003         UnsignedInvoiceRequest& operator=(UnsignedInvoiceRequest&& o) { UnsignedInvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedInvoiceRequest)); return *this; }
3004         LDKUnsignedInvoiceRequest* operator &() { return &self; }
3005         LDKUnsignedInvoiceRequest* operator ->() { return &self; }
3006         const LDKUnsignedInvoiceRequest* operator &() const { return &self; }
3007         const LDKUnsignedInvoiceRequest* operator ->() const { return &self; }
3008 };
3009 class InvoiceRequest {
3010 private:
3011         LDKInvoiceRequest self;
3012 public:
3013         InvoiceRequest(const InvoiceRequest&) = delete;
3014         InvoiceRequest(InvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequest)); }
3015         InvoiceRequest(LDKInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequest)); }
3016         operator LDKInvoiceRequest() && { LDKInvoiceRequest res = self; memset(&self, 0, sizeof(LDKInvoiceRequest)); return res; }
3017         ~InvoiceRequest() { InvoiceRequest_free(self); }
3018         InvoiceRequest& operator=(InvoiceRequest&& o) { InvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequest)); return *this; }
3019         LDKInvoiceRequest* operator &() { return &self; }
3020         LDKInvoiceRequest* operator ->() { return &self; }
3021         const LDKInvoiceRequest* operator &() const { return &self; }
3022         const LDKInvoiceRequest* operator ->() const { return &self; }
3023 };
3024 class DecodeError {
3025 private:
3026         LDKDecodeError self;
3027 public:
3028         DecodeError(const DecodeError&) = delete;
3029         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
3030         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
3031         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
3032         ~DecodeError() { DecodeError_free(self); }
3033         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
3034         LDKDecodeError* operator &() { return &self; }
3035         LDKDecodeError* operator ->() { return &self; }
3036         const LDKDecodeError* operator &() const { return &self; }
3037         const LDKDecodeError* operator ->() const { return &self; }
3038 };
3039 class Init {
3040 private:
3041         LDKInit self;
3042 public:
3043         Init(const Init&) = delete;
3044         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
3045         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
3046         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
3047         ~Init() { Init_free(self); }
3048         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
3049         LDKInit* operator &() { return &self; }
3050         LDKInit* operator ->() { return &self; }
3051         const LDKInit* operator &() const { return &self; }
3052         const LDKInit* operator ->() const { return &self; }
3053 };
3054 class ErrorMessage {
3055 private:
3056         LDKErrorMessage self;
3057 public:
3058         ErrorMessage(const ErrorMessage&) = delete;
3059         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
3060         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
3061         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
3062         ~ErrorMessage() { ErrorMessage_free(self); }
3063         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
3064         LDKErrorMessage* operator &() { return &self; }
3065         LDKErrorMessage* operator ->() { return &self; }
3066         const LDKErrorMessage* operator &() const { return &self; }
3067         const LDKErrorMessage* operator ->() const { return &self; }
3068 };
3069 class WarningMessage {
3070 private:
3071         LDKWarningMessage self;
3072 public:
3073         WarningMessage(const WarningMessage&) = delete;
3074         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3075         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3076         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3077         ~WarningMessage() { WarningMessage_free(self); }
3078         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3079         LDKWarningMessage* operator &() { return &self; }
3080         LDKWarningMessage* operator ->() { return &self; }
3081         const LDKWarningMessage* operator &() const { return &self; }
3082         const LDKWarningMessage* operator ->() const { return &self; }
3083 };
3084 class Ping {
3085 private:
3086         LDKPing self;
3087 public:
3088         Ping(const Ping&) = delete;
3089         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3090         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3091         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3092         ~Ping() { Ping_free(self); }
3093         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3094         LDKPing* operator &() { return &self; }
3095         LDKPing* operator ->() { return &self; }
3096         const LDKPing* operator &() const { return &self; }
3097         const LDKPing* operator ->() const { return &self; }
3098 };
3099 class Pong {
3100 private:
3101         LDKPong self;
3102 public:
3103         Pong(const Pong&) = delete;
3104         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3105         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3106         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3107         ~Pong() { Pong_free(self); }
3108         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3109         LDKPong* operator &() { return &self; }
3110         LDKPong* operator ->() { return &self; }
3111         const LDKPong* operator &() const { return &self; }
3112         const LDKPong* operator ->() const { return &self; }
3113 };
3114 class OpenChannel {
3115 private:
3116         LDKOpenChannel self;
3117 public:
3118         OpenChannel(const OpenChannel&) = delete;
3119         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3120         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3121         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3122         ~OpenChannel() { OpenChannel_free(self); }
3123         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3124         LDKOpenChannel* operator &() { return &self; }
3125         LDKOpenChannel* operator ->() { return &self; }
3126         const LDKOpenChannel* operator &() const { return &self; }
3127         const LDKOpenChannel* operator ->() const { return &self; }
3128 };
3129 class OpenChannelV2 {
3130 private:
3131         LDKOpenChannelV2 self;
3132 public:
3133         OpenChannelV2(const OpenChannelV2&) = delete;
3134         OpenChannelV2(OpenChannelV2&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannelV2)); }
3135         OpenChannelV2(LDKOpenChannelV2&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannelV2)); }
3136         operator LDKOpenChannelV2() && { LDKOpenChannelV2 res = self; memset(&self, 0, sizeof(LDKOpenChannelV2)); return res; }
3137         ~OpenChannelV2() { OpenChannelV2_free(self); }
3138         OpenChannelV2& operator=(OpenChannelV2&& o) { OpenChannelV2_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannelV2)); return *this; }
3139         LDKOpenChannelV2* operator &() { return &self; }
3140         LDKOpenChannelV2* operator ->() { return &self; }
3141         const LDKOpenChannelV2* operator &() const { return &self; }
3142         const LDKOpenChannelV2* operator ->() const { return &self; }
3143 };
3144 class AcceptChannel {
3145 private:
3146         LDKAcceptChannel self;
3147 public:
3148         AcceptChannel(const AcceptChannel&) = delete;
3149         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
3150         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
3151         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
3152         ~AcceptChannel() { AcceptChannel_free(self); }
3153         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
3154         LDKAcceptChannel* operator &() { return &self; }
3155         LDKAcceptChannel* operator ->() { return &self; }
3156         const LDKAcceptChannel* operator &() const { return &self; }
3157         const LDKAcceptChannel* operator ->() const { return &self; }
3158 };
3159 class AcceptChannelV2 {
3160 private:
3161         LDKAcceptChannelV2 self;
3162 public:
3163         AcceptChannelV2(const AcceptChannelV2&) = delete;
3164         AcceptChannelV2(AcceptChannelV2&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannelV2)); }
3165         AcceptChannelV2(LDKAcceptChannelV2&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannelV2)); }
3166         operator LDKAcceptChannelV2() && { LDKAcceptChannelV2 res = self; memset(&self, 0, sizeof(LDKAcceptChannelV2)); return res; }
3167         ~AcceptChannelV2() { AcceptChannelV2_free(self); }
3168         AcceptChannelV2& operator=(AcceptChannelV2&& o) { AcceptChannelV2_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannelV2)); return *this; }
3169         LDKAcceptChannelV2* operator &() { return &self; }
3170         LDKAcceptChannelV2* operator ->() { return &self; }
3171         const LDKAcceptChannelV2* operator &() const { return &self; }
3172         const LDKAcceptChannelV2* operator ->() const { return &self; }
3173 };
3174 class FundingCreated {
3175 private:
3176         LDKFundingCreated self;
3177 public:
3178         FundingCreated(const FundingCreated&) = delete;
3179         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
3180         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
3181         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
3182         ~FundingCreated() { FundingCreated_free(self); }
3183         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
3184         LDKFundingCreated* operator &() { return &self; }
3185         LDKFundingCreated* operator ->() { return &self; }
3186         const LDKFundingCreated* operator &() const { return &self; }
3187         const LDKFundingCreated* operator ->() const { return &self; }
3188 };
3189 class FundingSigned {
3190 private:
3191         LDKFundingSigned self;
3192 public:
3193         FundingSigned(const FundingSigned&) = delete;
3194         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
3195         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
3196         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
3197         ~FundingSigned() { FundingSigned_free(self); }
3198         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
3199         LDKFundingSigned* operator &() { return &self; }
3200         LDKFundingSigned* operator ->() { return &self; }
3201         const LDKFundingSigned* operator &() const { return &self; }
3202         const LDKFundingSigned* operator ->() const { return &self; }
3203 };
3204 class ChannelReady {
3205 private:
3206         LDKChannelReady self;
3207 public:
3208         ChannelReady(const ChannelReady&) = delete;
3209         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
3210         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
3211         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
3212         ~ChannelReady() { ChannelReady_free(self); }
3213         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
3214         LDKChannelReady* operator &() { return &self; }
3215         LDKChannelReady* operator ->() { return &self; }
3216         const LDKChannelReady* operator &() const { return &self; }
3217         const LDKChannelReady* operator ->() const { return &self; }
3218 };
3219 class TxAddInput {
3220 private:
3221         LDKTxAddInput self;
3222 public:
3223         TxAddInput(const TxAddInput&) = delete;
3224         TxAddInput(TxAddInput&& o) : self(o.self) { memset(&o, 0, sizeof(TxAddInput)); }
3225         TxAddInput(LDKTxAddInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAddInput)); }
3226         operator LDKTxAddInput() && { LDKTxAddInput res = self; memset(&self, 0, sizeof(LDKTxAddInput)); return res; }
3227         ~TxAddInput() { TxAddInput_free(self); }
3228         TxAddInput& operator=(TxAddInput&& o) { TxAddInput_free(self); self = o.self; memset(&o, 0, sizeof(TxAddInput)); return *this; }
3229         LDKTxAddInput* operator &() { return &self; }
3230         LDKTxAddInput* operator ->() { return &self; }
3231         const LDKTxAddInput* operator &() const { return &self; }
3232         const LDKTxAddInput* operator ->() const { return &self; }
3233 };
3234 class TxAddOutput {
3235 private:
3236         LDKTxAddOutput self;
3237 public:
3238         TxAddOutput(const TxAddOutput&) = delete;
3239         TxAddOutput(TxAddOutput&& o) : self(o.self) { memset(&o, 0, sizeof(TxAddOutput)); }
3240         TxAddOutput(LDKTxAddOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAddOutput)); }
3241         operator LDKTxAddOutput() && { LDKTxAddOutput res = self; memset(&self, 0, sizeof(LDKTxAddOutput)); return res; }
3242         ~TxAddOutput() { TxAddOutput_free(self); }
3243         TxAddOutput& operator=(TxAddOutput&& o) { TxAddOutput_free(self); self = o.self; memset(&o, 0, sizeof(TxAddOutput)); return *this; }
3244         LDKTxAddOutput* operator &() { return &self; }
3245         LDKTxAddOutput* operator ->() { return &self; }
3246         const LDKTxAddOutput* operator &() const { return &self; }
3247         const LDKTxAddOutput* operator ->() const { return &self; }
3248 };
3249 class TxRemoveInput {
3250 private:
3251         LDKTxRemoveInput self;
3252 public:
3253         TxRemoveInput(const TxRemoveInput&) = delete;
3254         TxRemoveInput(TxRemoveInput&& o) : self(o.self) { memset(&o, 0, sizeof(TxRemoveInput)); }
3255         TxRemoveInput(LDKTxRemoveInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxRemoveInput)); }
3256         operator LDKTxRemoveInput() && { LDKTxRemoveInput res = self; memset(&self, 0, sizeof(LDKTxRemoveInput)); return res; }
3257         ~TxRemoveInput() { TxRemoveInput_free(self); }
3258         TxRemoveInput& operator=(TxRemoveInput&& o) { TxRemoveInput_free(self); self = o.self; memset(&o, 0, sizeof(TxRemoveInput)); return *this; }
3259         LDKTxRemoveInput* operator &() { return &self; }
3260         LDKTxRemoveInput* operator ->() { return &self; }
3261         const LDKTxRemoveInput* operator &() const { return &self; }
3262         const LDKTxRemoveInput* operator ->() const { return &self; }
3263 };
3264 class TxRemoveOutput {
3265 private:
3266         LDKTxRemoveOutput self;
3267 public:
3268         TxRemoveOutput(const TxRemoveOutput&) = delete;
3269         TxRemoveOutput(TxRemoveOutput&& o) : self(o.self) { memset(&o, 0, sizeof(TxRemoveOutput)); }
3270         TxRemoveOutput(LDKTxRemoveOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxRemoveOutput)); }
3271         operator LDKTxRemoveOutput() && { LDKTxRemoveOutput res = self; memset(&self, 0, sizeof(LDKTxRemoveOutput)); return res; }
3272         ~TxRemoveOutput() { TxRemoveOutput_free(self); }
3273         TxRemoveOutput& operator=(TxRemoveOutput&& o) { TxRemoveOutput_free(self); self = o.self; memset(&o, 0, sizeof(TxRemoveOutput)); return *this; }
3274         LDKTxRemoveOutput* operator &() { return &self; }
3275         LDKTxRemoveOutput* operator ->() { return &self; }
3276         const LDKTxRemoveOutput* operator &() const { return &self; }
3277         const LDKTxRemoveOutput* operator ->() const { return &self; }
3278 };
3279 class TxComplete {
3280 private:
3281         LDKTxComplete self;
3282 public:
3283         TxComplete(const TxComplete&) = delete;
3284         TxComplete(TxComplete&& o) : self(o.self) { memset(&o, 0, sizeof(TxComplete)); }
3285         TxComplete(LDKTxComplete&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxComplete)); }
3286         operator LDKTxComplete() && { LDKTxComplete res = self; memset(&self, 0, sizeof(LDKTxComplete)); return res; }
3287         ~TxComplete() { TxComplete_free(self); }
3288         TxComplete& operator=(TxComplete&& o) { TxComplete_free(self); self = o.self; memset(&o, 0, sizeof(TxComplete)); return *this; }
3289         LDKTxComplete* operator &() { return &self; }
3290         LDKTxComplete* operator ->() { return &self; }
3291         const LDKTxComplete* operator &() const { return &self; }
3292         const LDKTxComplete* operator ->() const { return &self; }
3293 };
3294 class TxSignatures {
3295 private:
3296         LDKTxSignatures self;
3297 public:
3298         TxSignatures(const TxSignatures&) = delete;
3299         TxSignatures(TxSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(TxSignatures)); }
3300         TxSignatures(LDKTxSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxSignatures)); }
3301         operator LDKTxSignatures() && { LDKTxSignatures res = self; memset(&self, 0, sizeof(LDKTxSignatures)); return res; }
3302         ~TxSignatures() { TxSignatures_free(self); }
3303         TxSignatures& operator=(TxSignatures&& o) { TxSignatures_free(self); self = o.self; memset(&o, 0, sizeof(TxSignatures)); return *this; }
3304         LDKTxSignatures* operator &() { return &self; }
3305         LDKTxSignatures* operator ->() { return &self; }
3306         const LDKTxSignatures* operator &() const { return &self; }
3307         const LDKTxSignatures* operator ->() const { return &self; }
3308 };
3309 class TxInitRbf {
3310 private:
3311         LDKTxInitRbf self;
3312 public:
3313         TxInitRbf(const TxInitRbf&) = delete;
3314         TxInitRbf(TxInitRbf&& o) : self(o.self) { memset(&o, 0, sizeof(TxInitRbf)); }
3315         TxInitRbf(LDKTxInitRbf&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxInitRbf)); }
3316         operator LDKTxInitRbf() && { LDKTxInitRbf res = self; memset(&self, 0, sizeof(LDKTxInitRbf)); return res; }
3317         ~TxInitRbf() { TxInitRbf_free(self); }
3318         TxInitRbf& operator=(TxInitRbf&& o) { TxInitRbf_free(self); self = o.self; memset(&o, 0, sizeof(TxInitRbf)); return *this; }
3319         LDKTxInitRbf* operator &() { return &self; }
3320         LDKTxInitRbf* operator ->() { return &self; }
3321         const LDKTxInitRbf* operator &() const { return &self; }
3322         const LDKTxInitRbf* operator ->() const { return &self; }
3323 };
3324 class TxAckRbf {
3325 private:
3326         LDKTxAckRbf self;
3327 public:
3328         TxAckRbf(const TxAckRbf&) = delete;
3329         TxAckRbf(TxAckRbf&& o) : self(o.self) { memset(&o, 0, sizeof(TxAckRbf)); }
3330         TxAckRbf(LDKTxAckRbf&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAckRbf)); }
3331         operator LDKTxAckRbf() && { LDKTxAckRbf res = self; memset(&self, 0, sizeof(LDKTxAckRbf)); return res; }
3332         ~TxAckRbf() { TxAckRbf_free(self); }
3333         TxAckRbf& operator=(TxAckRbf&& o) { TxAckRbf_free(self); self = o.self; memset(&o, 0, sizeof(TxAckRbf)); return *this; }
3334         LDKTxAckRbf* operator &() { return &self; }
3335         LDKTxAckRbf* operator ->() { return &self; }
3336         const LDKTxAckRbf* operator &() const { return &self; }
3337         const LDKTxAckRbf* operator ->() const { return &self; }
3338 };
3339 class TxAbort {
3340 private:
3341         LDKTxAbort self;
3342 public:
3343         TxAbort(const TxAbort&) = delete;
3344         TxAbort(TxAbort&& o) : self(o.self) { memset(&o, 0, sizeof(TxAbort)); }
3345         TxAbort(LDKTxAbort&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAbort)); }
3346         operator LDKTxAbort() && { LDKTxAbort res = self; memset(&self, 0, sizeof(LDKTxAbort)); return res; }
3347         ~TxAbort() { TxAbort_free(self); }
3348         TxAbort& operator=(TxAbort&& o) { TxAbort_free(self); self = o.self; memset(&o, 0, sizeof(TxAbort)); return *this; }
3349         LDKTxAbort* operator &() { return &self; }
3350         LDKTxAbort* operator ->() { return &self; }
3351         const LDKTxAbort* operator &() const { return &self; }
3352         const LDKTxAbort* operator ->() const { return &self; }
3353 };
3354 class Shutdown {
3355 private:
3356         LDKShutdown self;
3357 public:
3358         Shutdown(const Shutdown&) = delete;
3359         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
3360         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
3361         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
3362         ~Shutdown() { Shutdown_free(self); }
3363         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
3364         LDKShutdown* operator &() { return &self; }
3365         LDKShutdown* operator ->() { return &self; }
3366         const LDKShutdown* operator &() const { return &self; }
3367         const LDKShutdown* operator ->() const { return &self; }
3368 };
3369 class ClosingSignedFeeRange {
3370 private:
3371         LDKClosingSignedFeeRange self;
3372 public:
3373         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3374         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3375         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3376         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3377         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3378         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3379         LDKClosingSignedFeeRange* operator &() { return &self; }
3380         LDKClosingSignedFeeRange* operator ->() { return &self; }
3381         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3382         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3383 };
3384 class ClosingSigned {
3385 private:
3386         LDKClosingSigned self;
3387 public:
3388         ClosingSigned(const ClosingSigned&) = delete;
3389         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3390         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3391         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3392         ~ClosingSigned() { ClosingSigned_free(self); }
3393         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3394         LDKClosingSigned* operator &() { return &self; }
3395         LDKClosingSigned* operator ->() { return &self; }
3396         const LDKClosingSigned* operator &() const { return &self; }
3397         const LDKClosingSigned* operator ->() const { return &self; }
3398 };
3399 class UpdateAddHTLC {
3400 private:
3401         LDKUpdateAddHTLC self;
3402 public:
3403         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3404         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3405         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3406         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3407         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3408         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3409         LDKUpdateAddHTLC* operator &() { return &self; }
3410         LDKUpdateAddHTLC* operator ->() { return &self; }
3411         const LDKUpdateAddHTLC* operator &() const { return &self; }
3412         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3413 };
3414 class OnionMessage {
3415 private:
3416         LDKOnionMessage self;
3417 public:
3418         OnionMessage(const OnionMessage&) = delete;
3419         OnionMessage(OnionMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessage)); }
3420         OnionMessage(LDKOnionMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessage)); }
3421         operator LDKOnionMessage() && { LDKOnionMessage res = self; memset(&self, 0, sizeof(LDKOnionMessage)); return res; }
3422         ~OnionMessage() { OnionMessage_free(self); }
3423         OnionMessage& operator=(OnionMessage&& o) { OnionMessage_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessage)); return *this; }
3424         LDKOnionMessage* operator &() { return &self; }
3425         LDKOnionMessage* operator ->() { return &self; }
3426         const LDKOnionMessage* operator &() const { return &self; }
3427         const LDKOnionMessage* operator ->() const { return &self; }
3428 };
3429 class UpdateFulfillHTLC {
3430 private:
3431         LDKUpdateFulfillHTLC self;
3432 public:
3433         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3434         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3435         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3436         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3437         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3438         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3439         LDKUpdateFulfillHTLC* operator &() { return &self; }
3440         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3441         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3442         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3443 };
3444 class UpdateFailHTLC {
3445 private:
3446         LDKUpdateFailHTLC self;
3447 public:
3448         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3449         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3450         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3451         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3452         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3453         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3454         LDKUpdateFailHTLC* operator &() { return &self; }
3455         LDKUpdateFailHTLC* operator ->() { return &self; }
3456         const LDKUpdateFailHTLC* operator &() const { return &self; }
3457         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3458 };
3459 class UpdateFailMalformedHTLC {
3460 private:
3461         LDKUpdateFailMalformedHTLC self;
3462 public:
3463         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3464         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3465         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3466         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3467         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3468         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3469         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3470         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3471         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3472         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3473 };
3474 class CommitmentSigned {
3475 private:
3476         LDKCommitmentSigned self;
3477 public:
3478         CommitmentSigned(const CommitmentSigned&) = delete;
3479         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3480         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3481         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3482         ~CommitmentSigned() { CommitmentSigned_free(self); }
3483         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3484         LDKCommitmentSigned* operator &() { return &self; }
3485         LDKCommitmentSigned* operator ->() { return &self; }
3486         const LDKCommitmentSigned* operator &() const { return &self; }
3487         const LDKCommitmentSigned* operator ->() const { return &self; }
3488 };
3489 class RevokeAndACK {
3490 private:
3491         LDKRevokeAndACK self;
3492 public:
3493         RevokeAndACK(const RevokeAndACK&) = delete;
3494         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
3495         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
3496         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
3497         ~RevokeAndACK() { RevokeAndACK_free(self); }
3498         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
3499         LDKRevokeAndACK* operator &() { return &self; }
3500         LDKRevokeAndACK* operator ->() { return &self; }
3501         const LDKRevokeAndACK* operator &() const { return &self; }
3502         const LDKRevokeAndACK* operator ->() const { return &self; }
3503 };
3504 class UpdateFee {
3505 private:
3506         LDKUpdateFee self;
3507 public:
3508         UpdateFee(const UpdateFee&) = delete;
3509         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
3510         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
3511         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
3512         ~UpdateFee() { UpdateFee_free(self); }
3513         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
3514         LDKUpdateFee* operator &() { return &self; }
3515         LDKUpdateFee* operator ->() { return &self; }
3516         const LDKUpdateFee* operator &() const { return &self; }
3517         const LDKUpdateFee* operator ->() const { return &self; }
3518 };
3519 class ChannelReestablish {
3520 private:
3521         LDKChannelReestablish self;
3522 public:
3523         ChannelReestablish(const ChannelReestablish&) = delete;
3524         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
3525         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
3526         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
3527         ~ChannelReestablish() { ChannelReestablish_free(self); }
3528         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
3529         LDKChannelReestablish* operator &() { return &self; }
3530         LDKChannelReestablish* operator ->() { return &self; }
3531         const LDKChannelReestablish* operator &() const { return &self; }
3532         const LDKChannelReestablish* operator ->() const { return &self; }
3533 };
3534 class AnnouncementSignatures {
3535 private:
3536         LDKAnnouncementSignatures self;
3537 public:
3538         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
3539         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
3540         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
3541         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
3542         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
3543         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
3544         LDKAnnouncementSignatures* operator &() { return &self; }
3545         LDKAnnouncementSignatures* operator ->() { return &self; }
3546         const LDKAnnouncementSignatures* operator &() const { return &self; }
3547         const LDKAnnouncementSignatures* operator ->() const { return &self; }
3548 };
3549 class NetAddress {
3550 private:
3551         LDKNetAddress self;
3552 public:
3553         NetAddress(const NetAddress&) = delete;
3554         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
3555         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
3556         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
3557         ~NetAddress() { NetAddress_free(self); }
3558         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
3559         LDKNetAddress* operator &() { return &self; }
3560         LDKNetAddress* operator ->() { return &self; }
3561         const LDKNetAddress* operator &() const { return &self; }
3562         const LDKNetAddress* operator ->() const { return &self; }
3563 };
3564 class UnsignedGossipMessage {
3565 private:
3566         LDKUnsignedGossipMessage self;
3567 public:
3568         UnsignedGossipMessage(const UnsignedGossipMessage&) = delete;
3569         UnsignedGossipMessage(UnsignedGossipMessage&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedGossipMessage)); }
3570         UnsignedGossipMessage(LDKUnsignedGossipMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedGossipMessage)); }
3571         operator LDKUnsignedGossipMessage() && { LDKUnsignedGossipMessage res = self; memset(&self, 0, sizeof(LDKUnsignedGossipMessage)); return res; }
3572         ~UnsignedGossipMessage() { UnsignedGossipMessage_free(self); }
3573         UnsignedGossipMessage& operator=(UnsignedGossipMessage&& o) { UnsignedGossipMessage_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedGossipMessage)); return *this; }
3574         LDKUnsignedGossipMessage* operator &() { return &self; }
3575         LDKUnsignedGossipMessage* operator ->() { return &self; }
3576         const LDKUnsignedGossipMessage* operator &() const { return &self; }
3577         const LDKUnsignedGossipMessage* operator ->() const { return &self; }
3578 };
3579 class UnsignedNodeAnnouncement {
3580 private:
3581         LDKUnsignedNodeAnnouncement self;
3582 public:
3583         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
3584         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
3585         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
3586         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
3587         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
3588         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
3589         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
3590         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
3591         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
3592         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
3593 };
3594 class NodeAnnouncement {
3595 private:
3596         LDKNodeAnnouncement self;
3597 public:
3598         NodeAnnouncement(const NodeAnnouncement&) = delete;
3599         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
3600         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
3601         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
3602         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
3603         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
3604         LDKNodeAnnouncement* operator &() { return &self; }
3605         LDKNodeAnnouncement* operator ->() { return &self; }
3606         const LDKNodeAnnouncement* operator &() const { return &self; }
3607         const LDKNodeAnnouncement* operator ->() const { return &self; }
3608 };
3609 class UnsignedChannelAnnouncement {
3610 private:
3611         LDKUnsignedChannelAnnouncement self;
3612 public:
3613         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
3614         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
3615         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
3616         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
3617         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
3618         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
3619         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
3620         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
3621         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
3622         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
3623 };
3624 class ChannelAnnouncement {
3625 private:
3626         LDKChannelAnnouncement self;
3627 public:
3628         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
3629         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
3630         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
3631         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
3632         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
3633         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
3634         LDKChannelAnnouncement* operator &() { return &self; }
3635         LDKChannelAnnouncement* operator ->() { return &self; }
3636         const LDKChannelAnnouncement* operator &() const { return &self; }
3637         const LDKChannelAnnouncement* operator ->() const { return &self; }
3638 };
3639 class UnsignedChannelUpdate {
3640 private:
3641         LDKUnsignedChannelUpdate self;
3642 public:
3643         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
3644         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
3645         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
3646         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
3647         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
3648         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
3649         LDKUnsignedChannelUpdate* operator &() { return &self; }
3650         LDKUnsignedChannelUpdate* operator ->() { return &self; }
3651         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
3652         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
3653 };
3654 class ChannelUpdate {
3655 private:
3656         LDKChannelUpdate self;
3657 public:
3658         ChannelUpdate(const ChannelUpdate&) = delete;
3659         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
3660         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
3661         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
3662         ~ChannelUpdate() { ChannelUpdate_free(self); }
3663         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
3664         LDKChannelUpdate* operator &() { return &self; }
3665         LDKChannelUpdate* operator ->() { return &self; }
3666         const LDKChannelUpdate* operator &() const { return &self; }
3667         const LDKChannelUpdate* operator ->() const { return &self; }
3668 };
3669 class QueryChannelRange {
3670 private:
3671         LDKQueryChannelRange self;
3672 public:
3673         QueryChannelRange(const QueryChannelRange&) = delete;
3674         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
3675         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
3676         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
3677         ~QueryChannelRange() { QueryChannelRange_free(self); }
3678         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
3679         LDKQueryChannelRange* operator &() { return &self; }
3680         LDKQueryChannelRange* operator ->() { return &self; }
3681         const LDKQueryChannelRange* operator &() const { return &self; }
3682         const LDKQueryChannelRange* operator ->() const { return &self; }
3683 };
3684 class ReplyChannelRange {
3685 private:
3686         LDKReplyChannelRange self;
3687 public:
3688         ReplyChannelRange(const ReplyChannelRange&) = delete;
3689         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
3690         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
3691         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
3692         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
3693         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
3694         LDKReplyChannelRange* operator &() { return &self; }
3695         LDKReplyChannelRange* operator ->() { return &self; }
3696         const LDKReplyChannelRange* operator &() const { return &self; }
3697         const LDKReplyChannelRange* operator ->() const { return &self; }
3698 };
3699 class QueryShortChannelIds {
3700 private:
3701         LDKQueryShortChannelIds self;
3702 public:
3703         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
3704         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
3705         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
3706         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
3707         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
3708         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
3709         LDKQueryShortChannelIds* operator &() { return &self; }
3710         LDKQueryShortChannelIds* operator ->() { return &self; }
3711         const LDKQueryShortChannelIds* operator &() const { return &self; }
3712         const LDKQueryShortChannelIds* operator ->() const { return &self; }
3713 };
3714 class ReplyShortChannelIdsEnd {
3715 private:
3716         LDKReplyShortChannelIdsEnd self;
3717 public:
3718         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
3719         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
3720         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
3721         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
3722         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
3723         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
3724         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
3725         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
3726         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
3727         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
3728 };
3729 class GossipTimestampFilter {
3730 private:
3731         LDKGossipTimestampFilter self;
3732 public:
3733         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
3734         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
3735         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
3736         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
3737         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
3738         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
3739         LDKGossipTimestampFilter* operator &() { return &self; }
3740         LDKGossipTimestampFilter* operator ->() { return &self; }
3741         const LDKGossipTimestampFilter* operator &() const { return &self; }
3742         const LDKGossipTimestampFilter* operator ->() const { return &self; }
3743 };
3744 class ErrorAction {
3745 private:
3746         LDKErrorAction self;
3747 public:
3748         ErrorAction(const ErrorAction&) = delete;
3749         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
3750         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
3751         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
3752         ~ErrorAction() { ErrorAction_free(self); }
3753         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
3754         LDKErrorAction* operator &() { return &self; }
3755         LDKErrorAction* operator ->() { return &self; }
3756         const LDKErrorAction* operator &() const { return &self; }
3757         const LDKErrorAction* operator ->() const { return &self; }
3758 };
3759 class LightningError {
3760 private:
3761         LDKLightningError self;
3762 public:
3763         LightningError(const LightningError&) = delete;
3764         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
3765         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
3766         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
3767         ~LightningError() { LightningError_free(self); }
3768         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
3769         LDKLightningError* operator &() { return &self; }
3770         LDKLightningError* operator ->() { return &self; }
3771         const LDKLightningError* operator &() const { return &self; }
3772         const LDKLightningError* operator ->() const { return &self; }
3773 };
3774 class CommitmentUpdate {
3775 private:
3776         LDKCommitmentUpdate self;
3777 public:
3778         CommitmentUpdate(const CommitmentUpdate&) = delete;
3779         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
3780         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
3781         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
3782         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
3783         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
3784         LDKCommitmentUpdate* operator &() { return &self; }
3785         LDKCommitmentUpdate* operator ->() { return &self; }
3786         const LDKCommitmentUpdate* operator &() const { return &self; }
3787         const LDKCommitmentUpdate* operator ->() const { return &self; }
3788 };
3789 class ChannelMessageHandler {
3790 private:
3791         LDKChannelMessageHandler self;
3792 public:
3793         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
3794         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
3795         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
3796         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
3797         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
3798         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
3799         LDKChannelMessageHandler* operator &() { return &self; }
3800         LDKChannelMessageHandler* operator ->() { return &self; }
3801         const LDKChannelMessageHandler* operator &() const { return &self; }
3802         const LDKChannelMessageHandler* operator ->() const { return &self; }
3803         /**
3804          *  Handle an incoming `open_channel` message from the given peer.
3805          */
3806         inline void handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg);
3807         /**
3808          *  Handle an incoming `open_channel2` message from the given peer.
3809          */
3810         inline void handle_open_channel_v2(struct LDKPublicKey their_node_id, const struct LDKOpenChannelV2 *NONNULL_PTR msg);
3811         /**
3812          *  Handle an incoming `accept_channel` message from the given peer.
3813          */
3814         inline void handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg);
3815         /**
3816          *  Handle an incoming `accept_channel2` message from the given peer.
3817          */
3818         inline void handle_accept_channel_v2(struct LDKPublicKey their_node_id, const struct LDKAcceptChannelV2 *NONNULL_PTR msg);
3819         /**
3820          *  Handle an incoming `funding_created` message from the given peer.
3821          */
3822         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
3823         /**
3824          *  Handle an incoming `funding_signed` message from the given peer.
3825          */
3826         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
3827         /**
3828          *  Handle an incoming `channel_ready` message from the given peer.
3829          */
3830         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
3831         /**
3832          *  Handle an incoming `shutdown` message from the given peer.
3833          */
3834         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg);
3835         /**
3836          *  Handle an incoming `closing_signed` message from the given peer.
3837          */
3838         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
3839         /**
3840          *  Handle an incoming `tx_add_input message` from the given peer.
3841          */
3842         inline void handle_tx_add_input(struct LDKPublicKey their_node_id, const struct LDKTxAddInput *NONNULL_PTR msg);
3843         /**
3844          *  Handle an incoming `tx_add_output` message from the given peer.
3845          */
3846         inline void handle_tx_add_output(struct LDKPublicKey their_node_id, const struct LDKTxAddOutput *NONNULL_PTR msg);
3847         /**
3848          *  Handle an incoming `tx_remove_input` message from the given peer.
3849          */
3850         inline void handle_tx_remove_input(struct LDKPublicKey their_node_id, const struct LDKTxRemoveInput *NONNULL_PTR msg);
3851         /**
3852          *  Handle an incoming `tx_remove_output` message from the given peer.
3853          */
3854         inline void handle_tx_remove_output(struct LDKPublicKey their_node_id, const struct LDKTxRemoveOutput *NONNULL_PTR msg);
3855         /**
3856          *  Handle an incoming `tx_complete message` from the given peer.
3857          */
3858         inline void handle_tx_complete(struct LDKPublicKey their_node_id, const struct LDKTxComplete *NONNULL_PTR msg);
3859         /**
3860          *  Handle an incoming `tx_signatures` message from the given peer.
3861          */
3862         inline void handle_tx_signatures(struct LDKPublicKey their_node_id, const struct LDKTxSignatures *NONNULL_PTR msg);
3863         /**
3864          *  Handle an incoming `tx_init_rbf` message from the given peer.
3865          */
3866         inline void handle_tx_init_rbf(struct LDKPublicKey their_node_id, const struct LDKTxInitRbf *NONNULL_PTR msg);
3867         /**
3868          *  Handle an incoming `tx_ack_rbf` message from the given peer.
3869          */
3870         inline void handle_tx_ack_rbf(struct LDKPublicKey their_node_id, const struct LDKTxAckRbf *NONNULL_PTR msg);
3871         /**
3872          *  Handle an incoming `tx_abort message` from the given peer.
3873          */
3874         inline void handle_tx_abort(struct LDKPublicKey their_node_id, const struct LDKTxAbort *NONNULL_PTR msg);
3875         /**
3876          *  Handle an incoming `update_add_htlc` message from the given peer.
3877          */
3878         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
3879         /**
3880          *  Handle an incoming `update_fulfill_htlc` message from the given peer.
3881          */
3882         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
3883         /**
3884          *  Handle an incoming `update_fail_htlc` message from the given peer.
3885          */
3886         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
3887         /**
3888          *  Handle an incoming `update_fail_malformed_htlc` message from the given peer.
3889          */
3890         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
3891         /**
3892          *  Handle an incoming `commitment_signed` message from the given peer.
3893          */
3894         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
3895         /**
3896          *  Handle an incoming `revoke_and_ack` message from the given peer.
3897          */
3898         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
3899         /**
3900          *  Handle an incoming `update_fee` message from the given peer.
3901          */
3902         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
3903         /**
3904          *  Handle an incoming `announcement_signatures` message from the given peer.
3905          */
3906         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
3907         /**
3908          *  Indicates a connection to the peer failed/an existing connection was lost.
3909          */
3910         inline void peer_disconnected(struct LDKPublicKey their_node_id);
3911         /**
3912          *  Handle a peer reconnecting, possibly generating `channel_reestablish` message(s).
3913          * 
3914          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
3915          *  with us. Implementors should be somewhat conservative about doing so, however, as other
3916          *  message handlers may still wish to communicate with this peer.
3917          */
3918         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound);
3919         /**
3920          *  Handle an incoming `channel_reestablish` message from the given peer.
3921          */
3922         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
3923         /**
3924          *  Handle an incoming `channel_update` message from the given peer.
3925          */
3926         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
3927         /**
3928          *  Handle an incoming `error` message from the given peer.
3929          */
3930         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
3931         /**
3932          *  Gets the node feature flags which this handler itself supports. All available handlers are
3933          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
3934          *  which are broadcasted in our [`NodeAnnouncement`] message.
3935          */
3936         inline LDK::NodeFeatures provided_node_features();
3937         /**
3938          *  Gets the init feature flags which should be sent to the given peer. All available handlers
3939          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
3940          *  which are sent in our [`Init`] message.
3941          * 
3942          *  Note that this method is called before [`Self::peer_connected`].
3943          */
3944         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
3945         /**
3946          *  Gets the genesis hashes for this `ChannelMessageHandler` indicating which chains it supports.
3947          * 
3948          *  If it's `None`, then no particular network chain hash compatibility will be enforced when
3949          *  connecting to peers.
3950          */
3951         inline LDK::COption_CVec_ChainHashZZ get_genesis_hashes();
3952 };
3953 class RoutingMessageHandler {
3954 private:
3955         LDKRoutingMessageHandler self;
3956 public:
3957         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
3958         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
3959         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
3960         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
3961         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
3962         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
3963         LDKRoutingMessageHandler* operator &() { return &self; }
3964         LDKRoutingMessageHandler* operator ->() { return &self; }
3965         const LDKRoutingMessageHandler* operator &() const { return &self; }
3966         const LDKRoutingMessageHandler* operator ->() const { return &self; }
3967         /**
3968          *  Handle an incoming `node_announcement` message, returning `true` if it should be forwarded on,
3969          *  `false` or returning an `Err` otherwise.
3970          */
3971         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
3972         /**
3973          *  Handle a `channel_announcement` message, returning `true` if it should be forwarded on, `false`
3974          *  or returning an `Err` otherwise.
3975          */
3976         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
3977         /**
3978          *  Handle an incoming `channel_update` message, returning true if it should be forwarded on,
3979          *  `false` or returning an `Err` otherwise.
3980          */
3981         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
3982         /**
3983          *  Gets channel announcements and updates required to dump our routing table to a remote node,
3984          *  starting at the `short_channel_id` indicated by `starting_point` and including announcements
3985          *  for a single channel.
3986          */
3987         inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcement(uint64_t starting_point);
3988         /**
3989          *  Gets a node announcement required to dump our routing table to a remote node, starting at
3990          *  the node *after* the provided pubkey and including up to one announcement immediately
3991          *  higher (as defined by `<PublicKey as Ord>::cmp`) than `starting_point`.
3992          *  If `None` is provided for `starting_point`, we start at the first node.
3993          * 
3994          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
3995          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
3996          */
3997         inline LDK::NodeAnnouncement get_next_node_announcement(struct LDKNodeId starting_point);
3998         /**
3999          *  Called when a connection is established with a peer. This can be used to
4000          *  perform routing table synchronization using a strategy defined by the
4001          *  implementor.
4002          * 
4003          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4004          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4005          *  message handlers may still wish to communicate with this peer.
4006          */
4007         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
4008         /**
4009          *  Handles the reply of a query we initiated to learn about channels
4010          *  for a given range of blocks. We can expect to receive one or more
4011          *  replies to a single query.
4012          */
4013         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
4014         /**
4015          *  Handles the reply of a query we initiated asking for routing gossip
4016          *  messages for a list of channels. We should receive this message when
4017          *  a node has completed its best effort to send us the pertaining routing
4018          *  gossip messages.
4019          */
4020         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
4021         /**
4022          *  Handles when a peer asks us to send a list of `short_channel_id`s
4023          *  for the requested range of blocks.
4024          */
4025         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
4026         /**
4027          *  Handles when a peer asks us to send routing gossip messages for a
4028          *  list of `short_channel_id`s.
4029          */
4030         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
4031         /**
4032          *  Indicates that there are a large number of [`ChannelAnnouncement`] (or other) messages
4033          *  pending some async action. While there is no guarantee of the rate of future messages, the
4034          *  caller should seek to reduce the rate of new gossip messages handled, especially
4035          *  [`ChannelAnnouncement`]s.
4036          */
4037         inline bool processing_queue_high();
4038         /**
4039          *  Gets the node feature flags which this handler itself supports. All available handlers are
4040          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4041          *  which are broadcasted in our [`NodeAnnouncement`] message.
4042          */
4043         inline LDK::NodeFeatures provided_node_features();
4044         /**
4045          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4046          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4047          *  which are sent in our [`Init`] message.
4048          * 
4049          *  Note that this method is called before [`Self::peer_connected`].
4050          */
4051         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4052 };
4053 class OnionMessageHandler {
4054 private:
4055         LDKOnionMessageHandler self;
4056 public:
4057         OnionMessageHandler(const OnionMessageHandler&) = delete;
4058         OnionMessageHandler(OnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageHandler)); }
4059         OnionMessageHandler(LDKOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageHandler)); }
4060         operator LDKOnionMessageHandler() && { LDKOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKOnionMessageHandler)); return res; }
4061         ~OnionMessageHandler() { OnionMessageHandler_free(self); }
4062         OnionMessageHandler& operator=(OnionMessageHandler&& o) { OnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageHandler)); return *this; }
4063         LDKOnionMessageHandler* operator &() { return &self; }
4064         LDKOnionMessageHandler* operator ->() { return &self; }
4065         const LDKOnionMessageHandler* operator &() const { return &self; }
4066         const LDKOnionMessageHandler* operator ->() const { return &self; }
4067         /**
4068          *  Handle an incoming `onion_message` message from the given peer.
4069          */
4070         inline void handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg);
4071         /**
4072          *  Called when a connection is established with a peer. Can be used to track which peers
4073          *  advertise onion message support and are online.
4074          * 
4075          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4076          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4077          *  message handlers may still wish to communicate with this peer.
4078          */
4079         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
4080         /**
4081          *  Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
4082          *  drop and refuse to forward onion messages to this peer.
4083          */
4084         inline void peer_disconnected(struct LDKPublicKey their_node_id);
4085         /**
4086          *  Gets the node feature flags which this handler itself supports. All available handlers are
4087          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4088          *  which are broadcasted in our [`NodeAnnouncement`] message.
4089          */
4090         inline LDK::NodeFeatures provided_node_features();
4091         /**
4092          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4093          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4094          *  which are sent in our [`Init`] message.
4095          * 
4096          *  Note that this method is called before [`Self::peer_connected`].
4097          */
4098         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4099 };
4100 class Level {
4101 private:
4102         LDKLevel self;
4103 public:
4104         Level(const Level&) = delete;
4105         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
4106         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
4107         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
4108         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
4109         LDKLevel* operator &() { return &self; }
4110         LDKLevel* operator ->() { return &self; }
4111         const LDKLevel* operator &() const { return &self; }
4112         const LDKLevel* operator ->() const { return &self; }
4113 };
4114 class Record {
4115 private:
4116         LDKRecord self;
4117 public:
4118         Record(const Record&) = delete;
4119         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
4120         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
4121         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
4122         ~Record() { Record_free(self); }
4123         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
4124         LDKRecord* operator &() { return &self; }
4125         LDKRecord* operator ->() { return &self; }
4126         const LDKRecord* operator &() const { return &self; }
4127         const LDKRecord* operator ->() const { return &self; }
4128 };
4129 class Logger {
4130 private:
4131         LDKLogger self;
4132 public:
4133         Logger(const Logger&) = delete;
4134         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
4135         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
4136         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
4137         ~Logger() { Logger_free(self); }
4138         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
4139         LDKLogger* operator &() { return &self; }
4140         LDKLogger* operator ->() { return &self; }
4141         const LDKLogger* operator &() const { return &self; }
4142         const LDKLogger* operator ->() const { return &self; }
4143         /**
4144          *  Logs the `Record`
4145          */
4146         inline void log(const struct LDKRecord *NONNULL_PTR record);
4147 };
4148 class FutureCallback {
4149 private:
4150         LDKFutureCallback self;
4151 public:
4152         FutureCallback(const FutureCallback&) = delete;
4153         FutureCallback(FutureCallback&& o) : self(o.self) { memset(&o, 0, sizeof(FutureCallback)); }
4154         FutureCallback(LDKFutureCallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFutureCallback)); }
4155         operator LDKFutureCallback() && { LDKFutureCallback res = self; memset(&self, 0, sizeof(LDKFutureCallback)); return res; }
4156         ~FutureCallback() { FutureCallback_free(self); }
4157         FutureCallback& operator=(FutureCallback&& o) { FutureCallback_free(self); self = o.self; memset(&o, 0, sizeof(FutureCallback)); return *this; }
4158         LDKFutureCallback* operator &() { return &self; }
4159         LDKFutureCallback* operator ->() { return &self; }
4160         const LDKFutureCallback* operator &() const { return &self; }
4161         const LDKFutureCallback* operator ->() const { return &self; }
4162         /**
4163          *  The method which is called.
4164          */
4165         inline void call();
4166 };
4167 class Future {
4168 private:
4169         LDKFuture self;
4170 public:
4171         Future(const Future&) = delete;
4172         Future(Future&& o) : self(o.self) { memset(&o, 0, sizeof(Future)); }
4173         Future(LDKFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFuture)); }
4174         operator LDKFuture() && { LDKFuture res = self; memset(&self, 0, sizeof(LDKFuture)); return res; }
4175         ~Future() { Future_free(self); }
4176         Future& operator=(Future&& o) { Future_free(self); self = o.self; memset(&o, 0, sizeof(Future)); return *this; }
4177         LDKFuture* operator &() { return &self; }
4178         LDKFuture* operator ->() { return &self; }
4179         const LDKFuture* operator &() const { return &self; }
4180         const LDKFuture* operator ->() const { return &self; }
4181 };
4182 class Sleeper {
4183 private:
4184         LDKSleeper self;
4185 public:
4186         Sleeper(const Sleeper&) = delete;
4187         Sleeper(Sleeper&& o) : self(o.self) { memset(&o, 0, sizeof(Sleeper)); }
4188         Sleeper(LDKSleeper&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSleeper)); }
4189         operator LDKSleeper() && { LDKSleeper res = self; memset(&self, 0, sizeof(LDKSleeper)); return res; }
4190         ~Sleeper() { Sleeper_free(self); }
4191         Sleeper& operator=(Sleeper&& o) { Sleeper_free(self); self = o.self; memset(&o, 0, sizeof(Sleeper)); return *this; }
4192         LDKSleeper* operator &() { return &self; }
4193         LDKSleeper* operator ->() { return &self; }
4194         const LDKSleeper* operator &() const { return &self; }
4195         const LDKSleeper* operator ->() const { return &self; }
4196 };
4197 class OffersMessageHandler {
4198 private:
4199         LDKOffersMessageHandler self;
4200 public:
4201         OffersMessageHandler(const OffersMessageHandler&) = delete;
4202         OffersMessageHandler(OffersMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OffersMessageHandler)); }
4203         OffersMessageHandler(LDKOffersMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffersMessageHandler)); }
4204         operator LDKOffersMessageHandler() && { LDKOffersMessageHandler res = self; memset(&self, 0, sizeof(LDKOffersMessageHandler)); return res; }
4205         ~OffersMessageHandler() { OffersMessageHandler_free(self); }
4206         OffersMessageHandler& operator=(OffersMessageHandler&& o) { OffersMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OffersMessageHandler)); return *this; }
4207         LDKOffersMessageHandler* operator &() { return &self; }
4208         LDKOffersMessageHandler* operator ->() { return &self; }
4209         const LDKOffersMessageHandler* operator &() const { return &self; }
4210         const LDKOffersMessageHandler* operator ->() const { return &self; }
4211         /**
4212          *  Handles the given message by either responding with an [`Bolt12Invoice`], sending a payment,
4213          *  or replying with an error.
4214          */
4215         inline LDK::COption_OffersMessageZ handle_message(struct LDKOffersMessage message);
4216 };
4217 class OffersMessage {
4218 private:
4219         LDKOffersMessage self;
4220 public:
4221         OffersMessage(const OffersMessage&) = delete;
4222         OffersMessage(OffersMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OffersMessage)); }
4223         OffersMessage(LDKOffersMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffersMessage)); }
4224         operator LDKOffersMessage() && { LDKOffersMessage res = self; memset(&self, 0, sizeof(LDKOffersMessage)); return res; }
4225         ~OffersMessage() { OffersMessage_free(self); }
4226         OffersMessage& operator=(OffersMessage&& o) { OffersMessage_free(self); self = o.self; memset(&o, 0, sizeof(OffersMessage)); return *this; }
4227         LDKOffersMessage* operator &() { return &self; }
4228         LDKOffersMessage* operator ->() { return &self; }
4229         const LDKOffersMessage* operator &() const { return &self; }
4230         const LDKOffersMessage* operator ->() const { return &self; }
4231 };
4232 class HTLCClaim {
4233 private:
4234         LDKHTLCClaim self;
4235 public:
4236         HTLCClaim(const HTLCClaim&) = delete;
4237         HTLCClaim(HTLCClaim&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCClaim)); }
4238         HTLCClaim(LDKHTLCClaim&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCClaim)); }
4239         operator LDKHTLCClaim() && { LDKHTLCClaim res = self; memset(&self, 0, sizeof(LDKHTLCClaim)); return res; }
4240         HTLCClaim& operator=(HTLCClaim&& o) { self = o.self; memset(&o, 0, sizeof(HTLCClaim)); return *this; }
4241         LDKHTLCClaim* operator &() { return &self; }
4242         LDKHTLCClaim* operator ->() { return &self; }
4243         const LDKHTLCClaim* operator &() const { return &self; }
4244         const LDKHTLCClaim* operator ->() const { return &self; }
4245 };
4246 class CounterpartyCommitmentSecrets {
4247 private:
4248         LDKCounterpartyCommitmentSecrets self;
4249 public:
4250         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
4251         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
4252         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
4253         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
4254         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
4255         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
4256         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
4257         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
4258         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
4259         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
4260 };
4261 class TxCreationKeys {
4262 private:
4263         LDKTxCreationKeys self;
4264 public:
4265         TxCreationKeys(const TxCreationKeys&) = delete;
4266         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
4267         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
4268         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
4269         ~TxCreationKeys() { TxCreationKeys_free(self); }
4270         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
4271         LDKTxCreationKeys* operator &() { return &self; }
4272         LDKTxCreationKeys* operator ->() { return &self; }
4273         const LDKTxCreationKeys* operator &() const { return &self; }
4274         const LDKTxCreationKeys* operator ->() const { return &self; }
4275 };
4276 class ChannelPublicKeys {
4277 private:
4278         LDKChannelPublicKeys self;
4279 public:
4280         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
4281         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
4282         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
4283         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
4284         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
4285         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
4286         LDKChannelPublicKeys* operator &() { return &self; }
4287         LDKChannelPublicKeys* operator ->() { return &self; }
4288         const LDKChannelPublicKeys* operator &() const { return &self; }
4289         const LDKChannelPublicKeys* operator ->() const { return &self; }
4290 };
4291 class HTLCOutputInCommitment {
4292 private:
4293         LDKHTLCOutputInCommitment self;
4294 public:
4295         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
4296         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
4297         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
4298         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
4299         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
4300         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
4301         LDKHTLCOutputInCommitment* operator &() { return &self; }
4302         LDKHTLCOutputInCommitment* operator ->() { return &self; }
4303         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
4304         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
4305 };
4306 class ChannelTransactionParameters {
4307 private:
4308         LDKChannelTransactionParameters self;
4309 public:
4310         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
4311         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
4312         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
4313         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
4314         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
4315         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
4316         LDKChannelTransactionParameters* operator &() { return &self; }
4317         LDKChannelTransactionParameters* operator ->() { return &self; }
4318         const LDKChannelTransactionParameters* operator &() const { return &self; }
4319         const LDKChannelTransactionParameters* operator ->() const { return &self; }
4320 };
4321 class CounterpartyChannelTransactionParameters {
4322 private:
4323         LDKCounterpartyChannelTransactionParameters self;
4324 public:
4325         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
4326         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
4327         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
4328         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
4329         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
4330         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
4331         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
4332         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
4333         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
4334         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
4335 };
4336 class DirectedChannelTransactionParameters {
4337 private:
4338         LDKDirectedChannelTransactionParameters self;
4339 public:
4340         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
4341         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
4342         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
4343         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
4344         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
4345         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
4346         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
4347         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
4348         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
4349         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
4350 };
4351 class HolderCommitmentTransaction {
4352 private:
4353         LDKHolderCommitmentTransaction self;
4354 public:
4355         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
4356         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
4357         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
4358         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
4359         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
4360         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
4361         LDKHolderCommitmentTransaction* operator &() { return &self; }
4362         LDKHolderCommitmentTransaction* operator ->() { return &self; }
4363         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
4364         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
4365 };
4366 class BuiltCommitmentTransaction {
4367 private:
4368         LDKBuiltCommitmentTransaction self;
4369 public:
4370         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
4371         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
4372         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
4373         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
4374         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
4375         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
4376         LDKBuiltCommitmentTransaction* operator &() { return &self; }
4377         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
4378         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
4379         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
4380 };
4381 class ClosingTransaction {
4382 private:
4383         LDKClosingTransaction self;
4384 public:
4385         ClosingTransaction(const ClosingTransaction&) = delete;
4386         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
4387         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
4388         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
4389         ~ClosingTransaction() { ClosingTransaction_free(self); }
4390         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
4391         LDKClosingTransaction* operator &() { return &self; }
4392         LDKClosingTransaction* operator ->() { return &self; }
4393         const LDKClosingTransaction* operator &() const { return &self; }
4394         const LDKClosingTransaction* operator ->() const { return &self; }
4395 };
4396 class TrustedClosingTransaction {
4397 private:
4398         LDKTrustedClosingTransaction self;
4399 public:
4400         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
4401         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
4402         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
4403         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
4404         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
4405         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
4406         LDKTrustedClosingTransaction* operator &() { return &self; }
4407         LDKTrustedClosingTransaction* operator ->() { return &self; }
4408         const LDKTrustedClosingTransaction* operator &() const { return &self; }
4409         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
4410 };
4411 class CommitmentTransaction {
4412 private:
4413         LDKCommitmentTransaction self;
4414 public:
4415         CommitmentTransaction(const CommitmentTransaction&) = delete;
4416         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
4417         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
4418         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
4419         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
4420         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
4421         LDKCommitmentTransaction* operator &() { return &self; }
4422         LDKCommitmentTransaction* operator ->() { return &self; }
4423         const LDKCommitmentTransaction* operator &() const { return &self; }
4424         const LDKCommitmentTransaction* operator ->() const { return &self; }
4425 };
4426 class TrustedCommitmentTransaction {
4427 private:
4428         LDKTrustedCommitmentTransaction self;
4429 public:
4430         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
4431         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
4432         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
4433         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
4434         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
4435         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
4436         LDKTrustedCommitmentTransaction* operator &() { return &self; }
4437         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
4438         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
4439         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
4440 };
4441 class ShutdownScript {
4442 private:
4443         LDKShutdownScript self;
4444 public:
4445         ShutdownScript(const ShutdownScript&) = delete;
4446         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
4447         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
4448         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
4449         ~ShutdownScript() { ShutdownScript_free(self); }
4450         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
4451         LDKShutdownScript* operator &() { return &self; }
4452         LDKShutdownScript* operator ->() { return &self; }
4453         const LDKShutdownScript* operator &() const { return &self; }
4454         const LDKShutdownScript* operator ->() const { return &self; }
4455 };
4456 class InvalidShutdownScript {
4457 private:
4458         LDKInvalidShutdownScript self;
4459 public:
4460         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
4461         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
4462         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
4463         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
4464         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
4465         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
4466         LDKInvalidShutdownScript* operator &() { return &self; }
4467         LDKInvalidShutdownScript* operator ->() { return &self; }
4468         const LDKInvalidShutdownScript* operator &() const { return &self; }
4469         const LDKInvalidShutdownScript* operator ->() const { return &self; }
4470 };
4471 class Bolt12ParseError {
4472 private:
4473         LDKBolt12ParseError self;
4474 public:
4475         Bolt12ParseError(const Bolt12ParseError&) = delete;
4476         Bolt12ParseError(Bolt12ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12ParseError)); }
4477         Bolt12ParseError(LDKBolt12ParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12ParseError)); }
4478         operator LDKBolt12ParseError() && { LDKBolt12ParseError res = self; memset(&self, 0, sizeof(LDKBolt12ParseError)); return res; }
4479         ~Bolt12ParseError() { Bolt12ParseError_free(self); }
4480         Bolt12ParseError& operator=(Bolt12ParseError&& o) { Bolt12ParseError_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12ParseError)); return *this; }
4481         LDKBolt12ParseError* operator &() { return &self; }
4482         LDKBolt12ParseError* operator ->() { return &self; }
4483         const LDKBolt12ParseError* operator &() const { return &self; }
4484         const LDKBolt12ParseError* operator ->() const { return &self; }
4485 };
4486 class Bolt12SemanticError {
4487 private:
4488         LDKBolt12SemanticError self;
4489 public:
4490         Bolt12SemanticError(const Bolt12SemanticError&) = delete;
4491         Bolt12SemanticError(Bolt12SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12SemanticError)); }
4492         Bolt12SemanticError(LDKBolt12SemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12SemanticError)); }
4493         operator LDKBolt12SemanticError() && { LDKBolt12SemanticError res = self; memset(&self, 0, sizeof(LDKBolt12SemanticError)); return res; }
4494         Bolt12SemanticError& operator=(Bolt12SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(Bolt12SemanticError)); return *this; }
4495         LDKBolt12SemanticError* operator &() { return &self; }
4496         LDKBolt12SemanticError* operator ->() { return &self; }
4497         const LDKBolt12SemanticError* operator &() const { return &self; }
4498         const LDKBolt12SemanticError* operator ->() const { return &self; }
4499 };
4500 class BroadcasterInterface {
4501 private:
4502         LDKBroadcasterInterface self;
4503 public:
4504         BroadcasterInterface(const BroadcasterInterface&) = delete;
4505         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
4506         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
4507         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
4508         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
4509         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
4510         LDKBroadcasterInterface* operator &() { return &self; }
4511         LDKBroadcasterInterface* operator ->() { return &self; }
4512         const LDKBroadcasterInterface* operator &() const { return &self; }
4513         const LDKBroadcasterInterface* operator ->() const { return &self; }
4514         /**
4515          *  Sends a list of transactions out to (hopefully) be mined.
4516          *  This only needs to handle the actual broadcasting of transactions, LDK will automatically
4517          *  rebroadcast transactions that haven't made it into a block.
4518          * 
4519          *  In some cases LDK may attempt to broadcast a transaction which double-spends another
4520          *  and this isn't a bug and can be safely ignored.
4521          * 
4522          *  If more than one transaction is given, these transactions should be considered to be a
4523          *  package and broadcast together. Some of the transactions may or may not depend on each other,
4524          *  be sure to manage both cases correctly.
4525          * 
4526          *  Bitcoin transaction packages are defined in BIP 331 and here:
4527          *  https://github.com/bitcoin/bitcoin/blob/master/doc/policy/packages.md
4528          */
4529         inline void broadcast_transactions(struct LDKCVec_TransactionZ txs);
4530 };
4531 class ConfirmationTarget {
4532 private:
4533         LDKConfirmationTarget self;
4534 public:
4535         ConfirmationTarget(const ConfirmationTarget&) = delete;
4536         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
4537         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
4538         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
4539         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
4540         LDKConfirmationTarget* operator &() { return &self; }
4541         LDKConfirmationTarget* operator ->() { return &self; }
4542         const LDKConfirmationTarget* operator &() const { return &self; }
4543         const LDKConfirmationTarget* operator ->() const { return &self; }
4544 };
4545 class FeeEstimator {
4546 private:
4547         LDKFeeEstimator self;
4548 public:
4549         FeeEstimator(const FeeEstimator&) = delete;
4550         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
4551         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
4552         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
4553         ~FeeEstimator() { FeeEstimator_free(self); }
4554         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
4555         LDKFeeEstimator* operator &() { return &self; }
4556         LDKFeeEstimator* operator ->() { return &self; }
4557         const LDKFeeEstimator* operator &() const { return &self; }
4558         const LDKFeeEstimator* operator ->() const { return &self; }
4559         /**
4560          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
4561          * 
4562          *  LDK will wrap this method and ensure that the value returned is no smaller than 253
4563          *  (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
4564          * 
4565          *  The following unit conversions can be used to convert to sats/KW:
4566          *   * satoshis-per-byte * 250
4567          *   * satoshis-per-kbyte / 4
4568          */
4569         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
4570 };
4571 class OnionMessageContents {
4572 private:
4573         LDKOnionMessageContents self;
4574 public:
4575         OnionMessageContents(const OnionMessageContents&) = delete;
4576         OnionMessageContents(OnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageContents)); }
4577         OnionMessageContents(LDKOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageContents)); }
4578         operator LDKOnionMessageContents() && { LDKOnionMessageContents res = self; memset(&self, 0, sizeof(LDKOnionMessageContents)); return res; }
4579         ~OnionMessageContents() { OnionMessageContents_free(self); }
4580         OnionMessageContents& operator=(OnionMessageContents&& o) { OnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageContents)); return *this; }
4581         LDKOnionMessageContents* operator &() { return &self; }
4582         LDKOnionMessageContents* operator ->() { return &self; }
4583         const LDKOnionMessageContents* operator &() const { return &self; }
4584         const LDKOnionMessageContents* operator ->() const { return &self; }
4585 };
4586 class CustomOnionMessageContents {
4587 private:
4588         LDKCustomOnionMessageContents self;
4589 public:
4590         CustomOnionMessageContents(const CustomOnionMessageContents&) = delete;
4591         CustomOnionMessageContents(CustomOnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageContents)); }
4592         CustomOnionMessageContents(LDKCustomOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageContents)); }
4593         operator LDKCustomOnionMessageContents() && { LDKCustomOnionMessageContents res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageContents)); return res; }
4594         ~CustomOnionMessageContents() { CustomOnionMessageContents_free(self); }
4595         CustomOnionMessageContents& operator=(CustomOnionMessageContents&& o) { CustomOnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageContents)); return *this; }
4596         LDKCustomOnionMessageContents* operator &() { return &self; }
4597         LDKCustomOnionMessageContents* operator ->() { return &self; }
4598         const LDKCustomOnionMessageContents* operator &() const { return &self; }
4599         const LDKCustomOnionMessageContents* operator ->() const { return &self; }
4600         /**
4601          *  Returns the TLV type identifying the message contents. MUST be >= 64.
4602          */
4603         inline uint64_t tlv_type();
4604 };
4605 class PaymentPurpose {
4606 private:
4607         LDKPaymentPurpose self;
4608 public:
4609         PaymentPurpose(const PaymentPurpose&) = delete;
4610         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
4611         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
4612         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
4613         ~PaymentPurpose() { PaymentPurpose_free(self); }
4614         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
4615         LDKPaymentPurpose* operator &() { return &self; }
4616         LDKPaymentPurpose* operator ->() { return &self; }
4617         const LDKPaymentPurpose* operator &() const { return &self; }
4618         const LDKPaymentPurpose* operator ->() const { return &self; }
4619 };
4620 class PathFailure {
4621 private:
4622         LDKPathFailure self;
4623 public:
4624         PathFailure(const PathFailure&) = delete;
4625         PathFailure(PathFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PathFailure)); }
4626         PathFailure(LDKPathFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPathFailure)); }
4627         operator LDKPathFailure() && { LDKPathFailure res = self; memset(&self, 0, sizeof(LDKPathFailure)); return res; }
4628         ~PathFailure() { PathFailure_free(self); }
4629         PathFailure& operator=(PathFailure&& o) { PathFailure_free(self); self = o.self; memset(&o, 0, sizeof(PathFailure)); return *this; }
4630         LDKPathFailure* operator &() { return &self; }
4631         LDKPathFailure* operator ->() { return &self; }
4632         const LDKPathFailure* operator &() const { return &self; }
4633         const LDKPathFailure* operator ->() const { return &self; }
4634 };
4635 class ClosureReason {
4636 private:
4637         LDKClosureReason self;
4638 public:
4639         ClosureReason(const ClosureReason&) = delete;
4640         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
4641         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
4642         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
4643         ~ClosureReason() { ClosureReason_free(self); }
4644         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
4645         LDKClosureReason* operator &() { return &self; }
4646         LDKClosureReason* operator ->() { return &self; }
4647         const LDKClosureReason* operator &() const { return &self; }
4648         const LDKClosureReason* operator ->() const { return &self; }
4649 };
4650 class HTLCDestination {
4651 private:
4652         LDKHTLCDestination self;
4653 public:
4654         HTLCDestination(const HTLCDestination&) = delete;
4655         HTLCDestination(HTLCDestination&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDestination)); }
4656         HTLCDestination(LDKHTLCDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDestination)); }
4657         operator LDKHTLCDestination() && { LDKHTLCDestination res = self; memset(&self, 0, sizeof(LDKHTLCDestination)); return res; }
4658         ~HTLCDestination() { HTLCDestination_free(self); }
4659         HTLCDestination& operator=(HTLCDestination&& o) { HTLCDestination_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDestination)); return *this; }
4660         LDKHTLCDestination* operator &() { return &self; }
4661         LDKHTLCDestination* operator ->() { return &self; }
4662         const LDKHTLCDestination* operator &() const { return &self; }
4663         const LDKHTLCDestination* operator ->() const { return &self; }
4664 };
4665 class PaymentFailureReason {
4666 private:
4667         LDKPaymentFailureReason self;
4668 public:
4669         PaymentFailureReason(const PaymentFailureReason&) = delete;
4670         PaymentFailureReason(PaymentFailureReason&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentFailureReason)); }
4671         PaymentFailureReason(LDKPaymentFailureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentFailureReason)); }
4672         operator LDKPaymentFailureReason() && { LDKPaymentFailureReason res = self; memset(&self, 0, sizeof(LDKPaymentFailureReason)); return res; }
4673         PaymentFailureReason& operator=(PaymentFailureReason&& o) { self = o.self; memset(&o, 0, sizeof(PaymentFailureReason)); return *this; }
4674         LDKPaymentFailureReason* operator &() { return &self; }
4675         LDKPaymentFailureReason* operator ->() { return &self; }
4676         const LDKPaymentFailureReason* operator &() const { return &self; }
4677         const LDKPaymentFailureReason* operator ->() const { return &self; }
4678 };
4679 class Event {
4680 private:
4681         LDKEvent self;
4682 public:
4683         Event(const Event&) = delete;
4684         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
4685         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
4686         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
4687         ~Event() { Event_free(self); }
4688         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
4689         LDKEvent* operator &() { return &self; }
4690         LDKEvent* operator ->() { return &self; }
4691         const LDKEvent* operator &() const { return &self; }
4692         const LDKEvent* operator ->() const { return &self; }
4693 };
4694 class MessageSendEvent {
4695 private:
4696         LDKMessageSendEvent self;
4697 public:
4698         MessageSendEvent(const MessageSendEvent&) = delete;
4699         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
4700         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
4701         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
4702         ~MessageSendEvent() { MessageSendEvent_free(self); }
4703         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
4704         LDKMessageSendEvent* operator &() { return &self; }
4705         LDKMessageSendEvent* operator ->() { return &self; }
4706         const LDKMessageSendEvent* operator &() const { return &self; }
4707         const LDKMessageSendEvent* operator ->() const { return &self; }
4708 };
4709 class MessageSendEventsProvider {
4710 private:
4711         LDKMessageSendEventsProvider self;
4712 public:
4713         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
4714         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
4715         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
4716         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
4717         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
4718         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
4719         LDKMessageSendEventsProvider* operator &() { return &self; }
4720         LDKMessageSendEventsProvider* operator ->() { return &self; }
4721         const LDKMessageSendEventsProvider* operator &() const { return &self; }
4722         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
4723         /**
4724          *  Gets the list of pending events which were generated by previous actions, clearing the list
4725          *  in the process.
4726          */
4727         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
4728 };
4729 class OnionMessageProvider {
4730 private:
4731         LDKOnionMessageProvider self;
4732 public:
4733         OnionMessageProvider(const OnionMessageProvider&) = delete;
4734         OnionMessageProvider(OnionMessageProvider&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageProvider)); }
4735         OnionMessageProvider(LDKOnionMessageProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageProvider)); }
4736         operator LDKOnionMessageProvider() && { LDKOnionMessageProvider res = self; memset(&self, 0, sizeof(LDKOnionMessageProvider)); return res; }
4737         ~OnionMessageProvider() { OnionMessageProvider_free(self); }
4738         OnionMessageProvider& operator=(OnionMessageProvider&& o) { OnionMessageProvider_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageProvider)); return *this; }
4739         LDKOnionMessageProvider* operator &() { return &self; }
4740         LDKOnionMessageProvider* operator ->() { return &self; }
4741         const LDKOnionMessageProvider* operator &() const { return &self; }
4742         const LDKOnionMessageProvider* operator ->() const { return &self; }
4743         /**
4744          *  Gets the next pending onion message for the peer with the given node id.
4745          * 
4746          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
4747          */
4748         inline LDK::OnionMessage next_onion_message_for_peer(struct LDKPublicKey peer_node_id);
4749 };
4750 class EventsProvider {
4751 private:
4752         LDKEventsProvider self;
4753 public:
4754         EventsProvider(const EventsProvider&) = delete;
4755         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
4756         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
4757         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
4758         ~EventsProvider() { EventsProvider_free(self); }
4759         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
4760         LDKEventsProvider* operator &() { return &self; }
4761         LDKEventsProvider* operator ->() { return &self; }
4762         const LDKEventsProvider* operator &() const { return &self; }
4763         const LDKEventsProvider* operator ->() const { return &self; }
4764         /**
4765          *  Processes any events generated since the last call using the given event handler.
4766          * 
4767          *  See the trait-level documentation for requirements.
4768          */
4769         inline void process_pending_events(struct LDKEventHandler handler);
4770 };
4771 class EventHandler {
4772 private:
4773         LDKEventHandler self;
4774 public:
4775         EventHandler(const EventHandler&) = delete;
4776         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
4777         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
4778         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
4779         ~EventHandler() { EventHandler_free(self); }
4780         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
4781         LDKEventHandler* operator &() { return &self; }
4782         LDKEventHandler* operator ->() { return &self; }
4783         const LDKEventHandler* operator &() const { return &self; }
4784         const LDKEventHandler* operator ->() const { return &self; }
4785         /**
4786          *  Handles the given [`Event`].
4787          * 
4788          *  See [`EventsProvider`] for details that must be considered when implementing this method.
4789          */
4790         inline void handle_event(struct LDKEvent event);
4791 };
4792 class FilesystemPersister {
4793 private:
4794         LDKFilesystemPersister self;
4795 public:
4796         FilesystemPersister(const FilesystemPersister&) = delete;
4797         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
4798         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
4799         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
4800         ~FilesystemPersister() { FilesystemPersister_free(self); }
4801         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
4802         LDKFilesystemPersister* operator &() { return &self; }
4803         LDKFilesystemPersister* operator ->() { return &self; }
4804         const LDKFilesystemPersister* operator &() const { return &self; }
4805         const LDKFilesystemPersister* operator ->() const { return &self; }
4806 };
4807 class Bolt11ParseError {
4808 private:
4809         LDKBolt11ParseError self;
4810 public:
4811         Bolt11ParseError(const Bolt11ParseError&) = delete;
4812         Bolt11ParseError(Bolt11ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11ParseError)); }
4813         Bolt11ParseError(LDKBolt11ParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11ParseError)); }
4814         operator LDKBolt11ParseError() && { LDKBolt11ParseError res = self; memset(&self, 0, sizeof(LDKBolt11ParseError)); return res; }
4815         ~Bolt11ParseError() { Bolt11ParseError_free(self); }
4816         Bolt11ParseError& operator=(Bolt11ParseError&& o) { Bolt11ParseError_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11ParseError)); return *this; }
4817         LDKBolt11ParseError* operator &() { return &self; }
4818         LDKBolt11ParseError* operator ->() { return &self; }
4819         const LDKBolt11ParseError* operator &() const { return &self; }
4820         const LDKBolt11ParseError* operator ->() const { return &self; }
4821 };
4822 class ParseOrSemanticError {
4823 private:
4824         LDKParseOrSemanticError self;
4825 public:
4826         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
4827         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
4828         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
4829         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
4830         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
4831         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
4832         LDKParseOrSemanticError* operator &() { return &self; }
4833         LDKParseOrSemanticError* operator ->() { return &self; }
4834         const LDKParseOrSemanticError* operator &() const { return &self; }
4835         const LDKParseOrSemanticError* operator ->() const { return &self; }
4836 };
4837 class Bolt11Invoice {
4838 private:
4839         LDKBolt11Invoice self;
4840 public:
4841         Bolt11Invoice(const Bolt11Invoice&) = delete;
4842         Bolt11Invoice(Bolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11Invoice)); }
4843         Bolt11Invoice(LDKBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11Invoice)); }
4844         operator LDKBolt11Invoice() && { LDKBolt11Invoice res = self; memset(&self, 0, sizeof(LDKBolt11Invoice)); return res; }
4845         ~Bolt11Invoice() { Bolt11Invoice_free(self); }
4846         Bolt11Invoice& operator=(Bolt11Invoice&& o) { Bolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11Invoice)); return *this; }
4847         LDKBolt11Invoice* operator &() { return &self; }
4848         LDKBolt11Invoice* operator ->() { return &self; }
4849         const LDKBolt11Invoice* operator &() const { return &self; }
4850         const LDKBolt11Invoice* operator ->() const { return &self; }
4851 };
4852 class SignedRawBolt11Invoice {
4853 private:
4854         LDKSignedRawBolt11Invoice self;
4855 public:
4856         SignedRawBolt11Invoice(const SignedRawBolt11Invoice&) = delete;
4857         SignedRawBolt11Invoice(SignedRawBolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawBolt11Invoice)); }
4858         SignedRawBolt11Invoice(LDKSignedRawBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawBolt11Invoice)); }
4859         operator LDKSignedRawBolt11Invoice() && { LDKSignedRawBolt11Invoice res = self; memset(&self, 0, sizeof(LDKSignedRawBolt11Invoice)); return res; }
4860         ~SignedRawBolt11Invoice() { SignedRawBolt11Invoice_free(self); }
4861         SignedRawBolt11Invoice& operator=(SignedRawBolt11Invoice&& o) { SignedRawBolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawBolt11Invoice)); return *this; }
4862         LDKSignedRawBolt11Invoice* operator &() { return &self; }
4863         LDKSignedRawBolt11Invoice* operator ->() { return &self; }
4864         const LDKSignedRawBolt11Invoice* operator &() const { return &self; }
4865         const LDKSignedRawBolt11Invoice* operator ->() const { return &self; }
4866 };
4867 class RawBolt11Invoice {
4868 private:
4869         LDKRawBolt11Invoice self;
4870 public:
4871         RawBolt11Invoice(const RawBolt11Invoice&) = delete;
4872         RawBolt11Invoice(RawBolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawBolt11Invoice)); }
4873         RawBolt11Invoice(LDKRawBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawBolt11Invoice)); }
4874         operator LDKRawBolt11Invoice() && { LDKRawBolt11Invoice res = self; memset(&self, 0, sizeof(LDKRawBolt11Invoice)); return res; }
4875         ~RawBolt11Invoice() { RawBolt11Invoice_free(self); }
4876         RawBolt11Invoice& operator=(RawBolt11Invoice&& o) { RawBolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(RawBolt11Invoice)); return *this; }
4877         LDKRawBolt11Invoice* operator &() { return &self; }
4878         LDKRawBolt11Invoice* operator ->() { return &self; }
4879         const LDKRawBolt11Invoice* operator &() const { return &self; }
4880         const LDKRawBolt11Invoice* operator ->() const { return &self; }
4881 };
4882 class RawDataPart {
4883 private:
4884         LDKRawDataPart self;
4885 public:
4886         RawDataPart(const RawDataPart&) = delete;
4887         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
4888         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
4889         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
4890         ~RawDataPart() { RawDataPart_free(self); }
4891         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
4892         LDKRawDataPart* operator &() { return &self; }
4893         LDKRawDataPart* operator ->() { return &self; }
4894         const LDKRawDataPart* operator &() const { return &self; }
4895         const LDKRawDataPart* operator ->() const { return &self; }
4896 };
4897 class PositiveTimestamp {
4898 private:
4899         LDKPositiveTimestamp self;
4900 public:
4901         PositiveTimestamp(const PositiveTimestamp&) = delete;
4902         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
4903         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
4904         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
4905         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
4906         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
4907         LDKPositiveTimestamp* operator &() { return &self; }
4908         LDKPositiveTimestamp* operator ->() { return &self; }
4909         const LDKPositiveTimestamp* operator &() const { return &self; }
4910         const LDKPositiveTimestamp* operator ->() const { return &self; }
4911 };
4912 class SiPrefix {
4913 private:
4914         LDKSiPrefix self;
4915 public:
4916         SiPrefix(const SiPrefix&) = delete;
4917         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
4918         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
4919         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
4920         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
4921         LDKSiPrefix* operator &() { return &self; }
4922         LDKSiPrefix* operator ->() { return &self; }
4923         const LDKSiPrefix* operator &() const { return &self; }
4924         const LDKSiPrefix* operator ->() const { return &self; }
4925 };
4926 class Currency {
4927 private:
4928         LDKCurrency self;
4929 public:
4930         Currency(const Currency&) = delete;
4931         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
4932         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
4933         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
4934         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
4935         LDKCurrency* operator &() { return &self; }
4936         LDKCurrency* operator ->() { return &self; }
4937         const LDKCurrency* operator &() const { return &self; }
4938         const LDKCurrency* operator ->() const { return &self; }
4939 };
4940 class Sha256 {
4941 private:
4942         LDKSha256 self;
4943 public:
4944         Sha256(const Sha256&) = delete;
4945         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
4946         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
4947         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
4948         ~Sha256() { Sha256_free(self); }
4949         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
4950         LDKSha256* operator &() { return &self; }
4951         LDKSha256* operator ->() { return &self; }
4952         const LDKSha256* operator &() const { return &self; }
4953         const LDKSha256* operator ->() const { return &self; }
4954 };
4955 class Description {
4956 private:
4957         LDKDescription self;
4958 public:
4959         Description(const Description&) = delete;
4960         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
4961         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
4962         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
4963         ~Description() { Description_free(self); }
4964         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
4965         LDKDescription* operator &() { return &self; }
4966         LDKDescription* operator ->() { return &self; }
4967         const LDKDescription* operator &() const { return &self; }
4968         const LDKDescription* operator ->() const { return &self; }
4969 };
4970 class PayeePubKey {
4971 private:
4972         LDKPayeePubKey self;
4973 public:
4974         PayeePubKey(const PayeePubKey&) = delete;
4975         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
4976         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
4977         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
4978         ~PayeePubKey() { PayeePubKey_free(self); }
4979         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
4980         LDKPayeePubKey* operator &() { return &self; }
4981         LDKPayeePubKey* operator ->() { return &self; }
4982         const LDKPayeePubKey* operator &() const { return &self; }
4983         const LDKPayeePubKey* operator ->() const { return &self; }
4984 };
4985 class ExpiryTime {
4986 private:
4987         LDKExpiryTime self;
4988 public:
4989         ExpiryTime(const ExpiryTime&) = delete;
4990         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
4991         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
4992         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
4993         ~ExpiryTime() { ExpiryTime_free(self); }
4994         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
4995         LDKExpiryTime* operator &() { return &self; }
4996         LDKExpiryTime* operator ->() { return &self; }
4997         const LDKExpiryTime* operator &() const { return &self; }
4998         const LDKExpiryTime* operator ->() const { return &self; }
4999 };
5000 class MinFinalCltvExpiryDelta {
5001 private:
5002         LDKMinFinalCltvExpiryDelta self;
5003 public:
5004         MinFinalCltvExpiryDelta(const MinFinalCltvExpiryDelta&) = delete;
5005         MinFinalCltvExpiryDelta(MinFinalCltvExpiryDelta&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); }
5006         MinFinalCltvExpiryDelta(LDKMinFinalCltvExpiryDelta&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); }
5007         operator LDKMinFinalCltvExpiryDelta() && { LDKMinFinalCltvExpiryDelta res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); return res; }
5008         ~MinFinalCltvExpiryDelta() { MinFinalCltvExpiryDelta_free(self); }
5009         MinFinalCltvExpiryDelta& operator=(MinFinalCltvExpiryDelta&& o) { MinFinalCltvExpiryDelta_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); return *this; }
5010         LDKMinFinalCltvExpiryDelta* operator &() { return &self; }
5011         LDKMinFinalCltvExpiryDelta* operator ->() { return &self; }
5012         const LDKMinFinalCltvExpiryDelta* operator &() const { return &self; }
5013         const LDKMinFinalCltvExpiryDelta* operator ->() const { return &self; }
5014 };
5015 class Fallback {
5016 private:
5017         LDKFallback self;
5018 public:
5019         Fallback(const Fallback&) = delete;
5020         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
5021         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
5022         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
5023         ~Fallback() { Fallback_free(self); }
5024         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
5025         LDKFallback* operator &() { return &self; }
5026         LDKFallback* operator ->() { return &self; }
5027         const LDKFallback* operator &() const { return &self; }
5028         const LDKFallback* operator ->() const { return &self; }
5029 };
5030 class Bolt11InvoiceSignature {
5031 private:
5032         LDKBolt11InvoiceSignature self;
5033 public:
5034         Bolt11InvoiceSignature(const Bolt11InvoiceSignature&) = delete;
5035         Bolt11InvoiceSignature(Bolt11InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11InvoiceSignature)); }
5036         Bolt11InvoiceSignature(LDKBolt11InvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11InvoiceSignature)); }
5037         operator LDKBolt11InvoiceSignature() && { LDKBolt11InvoiceSignature res = self; memset(&self, 0, sizeof(LDKBolt11InvoiceSignature)); return res; }
5038         ~Bolt11InvoiceSignature() { Bolt11InvoiceSignature_free(self); }
5039         Bolt11InvoiceSignature& operator=(Bolt11InvoiceSignature&& o) { Bolt11InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11InvoiceSignature)); return *this; }
5040         LDKBolt11InvoiceSignature* operator &() { return &self; }
5041         LDKBolt11InvoiceSignature* operator ->() { return &self; }
5042         const LDKBolt11InvoiceSignature* operator &() const { return &self; }
5043         const LDKBolt11InvoiceSignature* operator ->() const { return &self; }
5044 };
5045 class PrivateRoute {
5046 private:
5047         LDKPrivateRoute self;
5048 public:
5049         PrivateRoute(const PrivateRoute&) = delete;
5050         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
5051         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
5052         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
5053         ~PrivateRoute() { PrivateRoute_free(self); }
5054         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
5055         LDKPrivateRoute* operator &() { return &self; }
5056         LDKPrivateRoute* operator ->() { return &self; }
5057         const LDKPrivateRoute* operator &() const { return &self; }
5058         const LDKPrivateRoute* operator ->() const { return &self; }
5059 };
5060 class CreationError {
5061 private:
5062         LDKCreationError self;
5063 public:
5064         CreationError(const CreationError&) = delete;
5065         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
5066         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
5067         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
5068         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
5069         LDKCreationError* operator &() { return &self; }
5070         LDKCreationError* operator ->() { return &self; }
5071         const LDKCreationError* operator &() const { return &self; }
5072         const LDKCreationError* operator ->() const { return &self; }
5073 };
5074 class Bolt11SemanticError {
5075 private:
5076         LDKBolt11SemanticError self;
5077 public:
5078         Bolt11SemanticError(const Bolt11SemanticError&) = delete;
5079         Bolt11SemanticError(Bolt11SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11SemanticError)); }
5080         Bolt11SemanticError(LDKBolt11SemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11SemanticError)); }
5081         operator LDKBolt11SemanticError() && { LDKBolt11SemanticError res = self; memset(&self, 0, sizeof(LDKBolt11SemanticError)); return res; }
5082         Bolt11SemanticError& operator=(Bolt11SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(Bolt11SemanticError)); return *this; }
5083         LDKBolt11SemanticError* operator &() { return &self; }
5084         LDKBolt11SemanticError* operator ->() { return &self; }
5085         const LDKBolt11SemanticError* operator &() const { return &self; }
5086         const LDKBolt11SemanticError* operator ->() const { return &self; }
5087 };
5088 class SignOrCreationError {
5089 private:
5090         LDKSignOrCreationError self;
5091 public:
5092         SignOrCreationError(const SignOrCreationError&) = delete;
5093         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
5094         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
5095         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
5096         ~SignOrCreationError() { SignOrCreationError_free(self); }
5097         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
5098         LDKSignOrCreationError* operator &() { return &self; }
5099         LDKSignOrCreationError* operator ->() { return &self; }
5100         const LDKSignOrCreationError* operator &() const { return &self; }
5101         const LDKSignOrCreationError* operator ->() const { return &self; }
5102 };
5103 class OutPoint {
5104 private:
5105         LDKOutPoint self;
5106 public:
5107         OutPoint(const OutPoint&) = delete;
5108         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
5109         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
5110         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
5111         ~OutPoint() { OutPoint_free(self); }
5112         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
5113         LDKOutPoint* operator &() { return &self; }
5114         LDKOutPoint* operator ->() { return &self; }
5115         const LDKOutPoint* operator &() const { return &self; }
5116         const LDKOutPoint* operator ->() const { return &self; }
5117 };
5118 class BigSize {
5119 private:
5120         LDKBigSize self;
5121 public:
5122         BigSize(const BigSize&) = delete;
5123         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
5124         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
5125         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
5126         ~BigSize() { BigSize_free(self); }
5127         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
5128         LDKBigSize* operator &() { return &self; }
5129         LDKBigSize* operator ->() { return &self; }
5130         const LDKBigSize* operator &() const { return &self; }
5131         const LDKBigSize* operator ->() const { return &self; }
5132 };
5133 class Hostname {
5134 private:
5135         LDKHostname self;
5136 public:
5137         Hostname(const Hostname&) = delete;
5138         Hostname(Hostname&& o) : self(o.self) { memset(&o, 0, sizeof(Hostname)); }
5139         Hostname(LDKHostname&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHostname)); }
5140         operator LDKHostname() && { LDKHostname res = self; memset(&self, 0, sizeof(LDKHostname)); return res; }
5141         ~Hostname() { Hostname_free(self); }
5142         Hostname& operator=(Hostname&& o) { Hostname_free(self); self = o.self; memset(&o, 0, sizeof(Hostname)); return *this; }
5143         LDKHostname* operator &() { return &self; }
5144         LDKHostname* operator ->() { return &self; }
5145         const LDKHostname* operator &() const { return &self; }
5146         const LDKHostname* operator ->() const { return &self; }
5147 };
5148 class TransactionU16LenLimited {
5149 private:
5150         LDKTransactionU16LenLimited self;
5151 public:
5152         TransactionU16LenLimited(const TransactionU16LenLimited&) = delete;
5153         TransactionU16LenLimited(TransactionU16LenLimited&& o) : self(o.self) { memset(&o, 0, sizeof(TransactionU16LenLimited)); }
5154         TransactionU16LenLimited(LDKTransactionU16LenLimited&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTransactionU16LenLimited)); }
5155         operator LDKTransactionU16LenLimited() && { LDKTransactionU16LenLimited res = self; memset(&self, 0, sizeof(LDKTransactionU16LenLimited)); return res; }
5156         ~TransactionU16LenLimited() { TransactionU16LenLimited_free(self); }
5157         TransactionU16LenLimited& operator=(TransactionU16LenLimited&& o) { TransactionU16LenLimited_free(self); self = o.self; memset(&o, 0, sizeof(TransactionU16LenLimited)); return *this; }
5158         LDKTransactionU16LenLimited* operator &() { return &self; }
5159         LDKTransactionU16LenLimited* operator ->() { return &self; }
5160         const LDKTransactionU16LenLimited* operator &() const { return &self; }
5161         const LDKTransactionU16LenLimited* operator ->() const { return &self; }
5162 };
5163 class UntrustedString {
5164 private:
5165         LDKUntrustedString self;
5166 public:
5167         UntrustedString(const UntrustedString&) = delete;
5168         UntrustedString(UntrustedString&& o) : self(o.self) { memset(&o, 0, sizeof(UntrustedString)); }
5169         UntrustedString(LDKUntrustedString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUntrustedString)); }
5170         operator LDKUntrustedString() && { LDKUntrustedString res = self; memset(&self, 0, sizeof(LDKUntrustedString)); return res; }
5171         ~UntrustedString() { UntrustedString_free(self); }
5172         UntrustedString& operator=(UntrustedString&& o) { UntrustedString_free(self); self = o.self; memset(&o, 0, sizeof(UntrustedString)); return *this; }
5173         LDKUntrustedString* operator &() { return &self; }
5174         LDKUntrustedString* operator ->() { return &self; }
5175         const LDKUntrustedString* operator &() const { return &self; }
5176         const LDKUntrustedString* operator ->() const { return &self; }
5177 };
5178 class PrintableString {
5179 private:
5180         LDKPrintableString self;
5181 public:
5182         PrintableString(const PrintableString&) = delete;
5183         PrintableString(PrintableString&& o) : self(o.self) { memset(&o, 0, sizeof(PrintableString)); }
5184         PrintableString(LDKPrintableString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrintableString)); }
5185         operator LDKPrintableString() && { LDKPrintableString res = self; memset(&self, 0, sizeof(LDKPrintableString)); return res; }
5186         ~PrintableString() { PrintableString_free(self); }
5187         PrintableString& operator=(PrintableString&& o) { PrintableString_free(self); self = o.self; memset(&o, 0, sizeof(PrintableString)); return *this; }
5188         LDKPrintableString* operator &() { return &self; }
5189         LDKPrintableString* operator ->() { return &self; }
5190         const LDKPrintableString* operator &() const { return &self; }
5191         const LDKPrintableString* operator ->() const { return &self; }
5192 };
5193 class CustomMessageReader {
5194 private:
5195         LDKCustomMessageReader self;
5196 public:
5197         CustomMessageReader(const CustomMessageReader&) = delete;
5198         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
5199         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
5200         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
5201         ~CustomMessageReader() { CustomMessageReader_free(self); }
5202         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
5203         LDKCustomMessageReader* operator &() { return &self; }
5204         LDKCustomMessageReader* operator ->() { return &self; }
5205         const LDKCustomMessageReader* operator &() const { return &self; }
5206         const LDKCustomMessageReader* operator ->() const { return &self; }
5207         /**
5208          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
5209          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
5210          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
5211          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
5212          */
5213         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
5214 };
5215 class Type {
5216 private:
5217         LDKType self;
5218 public:
5219         Type(const Type&) = delete;
5220         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
5221         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
5222         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
5223         ~Type() { Type_free(self); }
5224         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
5225         LDKType* operator &() { return &self; }
5226         LDKType* operator ->() { return &self; }
5227         const LDKType* operator &() const { return &self; }
5228         const LDKType* operator ->() const { return &self; }
5229         /**
5230          *  Returns the type identifying the message payload.
5231          */
5232         inline uint16_t type_id();
5233         /**
5234          * Return a human-readable "debug" string describing this object
5235          */
5236         inline LDK::Str debug_str();
5237 };
5238 class PaymentError {
5239 private:
5240         LDKPaymentError self;
5241 public:
5242         PaymentError(const PaymentError&) = delete;
5243         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
5244         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
5245         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
5246         ~PaymentError() { PaymentError_free(self); }
5247         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
5248         LDKPaymentError* operator &() { return &self; }
5249         LDKPaymentError* operator ->() { return &self; }
5250         const LDKPaymentError* operator &() const { return &self; }
5251         const LDKPaymentError* operator ->() const { return &self; }
5252 };
5253 class UtxoLookupError {
5254 private:
5255         LDKUtxoLookupError self;
5256 public:
5257         UtxoLookupError(const UtxoLookupError&) = delete;
5258         UtxoLookupError(UtxoLookupError&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookupError)); }
5259         UtxoLookupError(LDKUtxoLookupError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookupError)); }
5260         operator LDKUtxoLookupError() && { LDKUtxoLookupError res = self; memset(&self, 0, sizeof(LDKUtxoLookupError)); return res; }
5261         UtxoLookupError& operator=(UtxoLookupError&& o) { self = o.self; memset(&o, 0, sizeof(UtxoLookupError)); return *this; }
5262         LDKUtxoLookupError* operator &() { return &self; }
5263         LDKUtxoLookupError* operator ->() { return &self; }
5264         const LDKUtxoLookupError* operator &() const { return &self; }
5265         const LDKUtxoLookupError* operator ->() const { return &self; }
5266 };
5267 class UtxoResult {
5268 private:
5269         LDKUtxoResult self;
5270 public:
5271         UtxoResult(const UtxoResult&) = delete;
5272         UtxoResult(UtxoResult&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoResult)); }
5273         UtxoResult(LDKUtxoResult&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoResult)); }
5274         operator LDKUtxoResult() && { LDKUtxoResult res = self; memset(&self, 0, sizeof(LDKUtxoResult)); return res; }
5275         ~UtxoResult() { UtxoResult_free(self); }
5276         UtxoResult& operator=(UtxoResult&& o) { UtxoResult_free(self); self = o.self; memset(&o, 0, sizeof(UtxoResult)); return *this; }
5277         LDKUtxoResult* operator &() { return &self; }
5278         LDKUtxoResult* operator ->() { return &self; }
5279         const LDKUtxoResult* operator &() const { return &self; }
5280         const LDKUtxoResult* operator ->() const { return &self; }
5281 };
5282 class UtxoLookup {
5283 private:
5284         LDKUtxoLookup self;
5285 public:
5286         UtxoLookup(const UtxoLookup&) = delete;
5287         UtxoLookup(UtxoLookup&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookup)); }
5288         UtxoLookup(LDKUtxoLookup&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookup)); }
5289         operator LDKUtxoLookup() && { LDKUtxoLookup res = self; memset(&self, 0, sizeof(LDKUtxoLookup)); return res; }
5290         ~UtxoLookup() { UtxoLookup_free(self); }
5291         UtxoLookup& operator=(UtxoLookup&& o) { UtxoLookup_free(self); self = o.self; memset(&o, 0, sizeof(UtxoLookup)); return *this; }
5292         LDKUtxoLookup* operator &() { return &self; }
5293         LDKUtxoLookup* operator ->() { return &self; }
5294         const LDKUtxoLookup* operator &() const { return &self; }
5295         const LDKUtxoLookup* operator ->() const { return &self; }
5296         /**
5297          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
5298          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
5299          *  is unknown.
5300          * 
5301          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
5302          */
5303         inline LDK::UtxoResult get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
5304 };
5305 class UtxoFuture {
5306 private:
5307         LDKUtxoFuture self;
5308 public:
5309         UtxoFuture(const UtxoFuture&) = delete;
5310         UtxoFuture(UtxoFuture&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoFuture)); }
5311         UtxoFuture(LDKUtxoFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoFuture)); }
5312         operator LDKUtxoFuture() && { LDKUtxoFuture res = self; memset(&self, 0, sizeof(LDKUtxoFuture)); return res; }
5313         ~UtxoFuture() { UtxoFuture_free(self); }
5314         UtxoFuture& operator=(UtxoFuture&& o) { UtxoFuture_free(self); self = o.self; memset(&o, 0, sizeof(UtxoFuture)); return *this; }
5315         LDKUtxoFuture* operator &() { return &self; }
5316         LDKUtxoFuture* operator ->() { return &self; }
5317         const LDKUtxoFuture* operator &() const { return &self; }
5318         const LDKUtxoFuture* operator ->() const { return &self; }
5319 };
5320 class OnionMessenger {
5321 private:
5322         LDKOnionMessenger self;
5323 public:
5324         OnionMessenger(const OnionMessenger&) = delete;
5325         OnionMessenger(OnionMessenger&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessenger)); }
5326         OnionMessenger(LDKOnionMessenger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessenger)); }
5327         operator LDKOnionMessenger() && { LDKOnionMessenger res = self; memset(&self, 0, sizeof(LDKOnionMessenger)); return res; }
5328         ~OnionMessenger() { OnionMessenger_free(self); }
5329         OnionMessenger& operator=(OnionMessenger&& o) { OnionMessenger_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessenger)); return *this; }
5330         LDKOnionMessenger* operator &() { return &self; }
5331         LDKOnionMessenger* operator ->() { return &self; }
5332         const LDKOnionMessenger* operator &() const { return &self; }
5333         const LDKOnionMessenger* operator ->() const { return &self; }
5334 };
5335 class MessageRouter {
5336 private:
5337         LDKMessageRouter self;
5338 public:
5339         MessageRouter(const MessageRouter&) = delete;
5340         MessageRouter(MessageRouter&& o) : self(o.self) { memset(&o, 0, sizeof(MessageRouter)); }
5341         MessageRouter(LDKMessageRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageRouter)); }
5342         operator LDKMessageRouter() && { LDKMessageRouter res = self; memset(&self, 0, sizeof(LDKMessageRouter)); return res; }
5343         ~MessageRouter() { MessageRouter_free(self); }
5344         MessageRouter& operator=(MessageRouter&& o) { MessageRouter_free(self); self = o.self; memset(&o, 0, sizeof(MessageRouter)); return *this; }
5345         LDKMessageRouter* operator &() { return &self; }
5346         LDKMessageRouter* operator ->() { return &self; }
5347         const LDKMessageRouter* operator &() const { return &self; }
5348         const LDKMessageRouter* operator ->() const { return &self; }
5349         /**
5350          *  Returns a route for sending an [`OnionMessage`] to the given [`Destination`].
5351          * 
5352          *  [`OnionMessage`]: msgs::OnionMessage
5353          */
5354         inline LDK::CResult_OnionMessagePathNoneZ find_path(struct LDKPublicKey sender, struct LDKCVec_PublicKeyZ peers, struct LDKDestination destination);
5355 };
5356 class DefaultMessageRouter {
5357 private:
5358         LDKDefaultMessageRouter self;
5359 public:
5360         DefaultMessageRouter(const DefaultMessageRouter&) = delete;
5361         DefaultMessageRouter(DefaultMessageRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultMessageRouter)); }
5362         DefaultMessageRouter(LDKDefaultMessageRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultMessageRouter)); }
5363         operator LDKDefaultMessageRouter() && { LDKDefaultMessageRouter res = self; memset(&self, 0, sizeof(LDKDefaultMessageRouter)); return res; }
5364         ~DefaultMessageRouter() { DefaultMessageRouter_free(self); }
5365         DefaultMessageRouter& operator=(DefaultMessageRouter&& o) { DefaultMessageRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultMessageRouter)); return *this; }
5366         LDKDefaultMessageRouter* operator &() { return &self; }
5367         LDKDefaultMessageRouter* operator ->() { return &self; }
5368         const LDKDefaultMessageRouter* operator &() const { return &self; }
5369         const LDKDefaultMessageRouter* operator ->() const { return &self; }
5370 };
5371 class OnionMessagePath {
5372 private:
5373         LDKOnionMessagePath self;
5374 public:
5375         OnionMessagePath(const OnionMessagePath&) = delete;
5376         OnionMessagePath(OnionMessagePath&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessagePath)); }
5377         OnionMessagePath(LDKOnionMessagePath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessagePath)); }
5378         operator LDKOnionMessagePath() && { LDKOnionMessagePath res = self; memset(&self, 0, sizeof(LDKOnionMessagePath)); return res; }
5379         ~OnionMessagePath() { OnionMessagePath_free(self); }
5380         OnionMessagePath& operator=(OnionMessagePath&& o) { OnionMessagePath_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessagePath)); return *this; }
5381         LDKOnionMessagePath* operator &() { return &self; }
5382         LDKOnionMessagePath* operator ->() { return &self; }
5383         const LDKOnionMessagePath* operator &() const { return &self; }
5384         const LDKOnionMessagePath* operator ->() const { return &self; }
5385 };
5386 class Destination {
5387 private:
5388         LDKDestination self;
5389 public:
5390         Destination(const Destination&) = delete;
5391         Destination(Destination&& o) : self(o.self) { memset(&o, 0, sizeof(Destination)); }
5392         Destination(LDKDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDestination)); }
5393         operator LDKDestination() && { LDKDestination res = self; memset(&self, 0, sizeof(LDKDestination)); return res; }
5394         ~Destination() { Destination_free(self); }
5395         Destination& operator=(Destination&& o) { Destination_free(self); self = o.self; memset(&o, 0, sizeof(Destination)); return *this; }
5396         LDKDestination* operator &() { return &self; }
5397         LDKDestination* operator ->() { return &self; }
5398         const LDKDestination* operator &() const { return &self; }
5399         const LDKDestination* operator ->() const { return &self; }
5400 };
5401 class SendError {
5402 private:
5403         LDKSendError self;
5404 public:
5405         SendError(const SendError&) = delete;
5406         SendError(SendError&& o) : self(o.self) { memset(&o, 0, sizeof(SendError)); }
5407         SendError(LDKSendError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendError)); }
5408         operator LDKSendError() && { LDKSendError res = self; memset(&self, 0, sizeof(LDKSendError)); return res; }
5409         ~SendError() { SendError_free(self); }
5410         SendError& operator=(SendError&& o) { SendError_free(self); self = o.self; memset(&o, 0, sizeof(SendError)); return *this; }
5411         LDKSendError* operator &() { return &self; }
5412         LDKSendError* operator ->() { return &self; }
5413         const LDKSendError* operator &() const { return &self; }
5414         const LDKSendError* operator ->() const { return &self; }
5415 };
5416 class CustomOnionMessageHandler {
5417 private:
5418         LDKCustomOnionMessageHandler self;
5419 public:
5420         CustomOnionMessageHandler(const CustomOnionMessageHandler&) = delete;
5421         CustomOnionMessageHandler(CustomOnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageHandler)); }
5422         CustomOnionMessageHandler(LDKCustomOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageHandler)); }
5423         operator LDKCustomOnionMessageHandler() && { LDKCustomOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageHandler)); return res; }
5424         ~CustomOnionMessageHandler() { CustomOnionMessageHandler_free(self); }
5425         CustomOnionMessageHandler& operator=(CustomOnionMessageHandler&& o) { CustomOnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageHandler)); return *this; }
5426         LDKCustomOnionMessageHandler* operator &() { return &self; }
5427         LDKCustomOnionMessageHandler* operator ->() { return &self; }
5428         const LDKCustomOnionMessageHandler* operator &() const { return &self; }
5429         const LDKCustomOnionMessageHandler* operator ->() const { return &self; }
5430         /**
5431          *  Called with the custom message that was received, returning a response to send, if any.
5432          */
5433         inline LDK::COption_CustomOnionMessageContentsZ handle_custom_message(struct LDKCustomOnionMessageContents msg);
5434         /**
5435          *  Read a custom message of type `message_type` from `buffer`, returning `Ok(None)` if the
5436          *  message type is unknown.
5437          */
5438         inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ read_custom_message(uint64_t message_type, struct LDKu8slice buffer);
5439 };
5440 class BlindedPath {
5441 private:
5442         LDKBlindedPath self;
5443 public:
5444         BlindedPath(const BlindedPath&) = delete;
5445         BlindedPath(BlindedPath&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPath)); }
5446         BlindedPath(LDKBlindedPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPath)); }
5447         operator LDKBlindedPath() && { LDKBlindedPath res = self; memset(&self, 0, sizeof(LDKBlindedPath)); return res; }
5448         ~BlindedPath() { BlindedPath_free(self); }
5449         BlindedPath& operator=(BlindedPath&& o) { BlindedPath_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPath)); return *this; }
5450         LDKBlindedPath* operator &() { return &self; }
5451         LDKBlindedPath* operator ->() { return &self; }
5452         const LDKBlindedPath* operator &() const { return &self; }
5453         const LDKBlindedPath* operator ->() const { return &self; }
5454 };
5455 class BlindedHop {
5456 private:
5457         LDKBlindedHop self;
5458 public:
5459         BlindedHop(const BlindedHop&) = delete;
5460         BlindedHop(BlindedHop&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHop)); }
5461         BlindedHop(LDKBlindedHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHop)); }
5462         operator LDKBlindedHop() && { LDKBlindedHop res = self; memset(&self, 0, sizeof(LDKBlindedHop)); return res; }
5463         ~BlindedHop() { BlindedHop_free(self); }
5464         BlindedHop& operator=(BlindedHop&& o) { BlindedHop_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHop)); return *this; }
5465         LDKBlindedHop* operator &() { return &self; }
5466         LDKBlindedHop* operator ->() { return &self; }
5467         const LDKBlindedHop* operator &() const { return &self; }
5468         const LDKBlindedHop* operator ->() const { return &self; }
5469 };
5470 class GraphSyncError {
5471 private:
5472         LDKGraphSyncError self;
5473 public:
5474         GraphSyncError(const GraphSyncError&) = delete;
5475         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
5476         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
5477         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
5478         ~GraphSyncError() { GraphSyncError_free(self); }
5479         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
5480         LDKGraphSyncError* operator &() { return &self; }
5481         LDKGraphSyncError* operator ->() { return &self; }
5482         const LDKGraphSyncError* operator &() const { return &self; }
5483         const LDKGraphSyncError* operator ->() const { return &self; }
5484 };
5485 class InvoiceError {
5486 private:
5487         LDKInvoiceError self;
5488 public:
5489         InvoiceError(const InvoiceError&) = delete;
5490         InvoiceError(InvoiceError&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceError)); }
5491         InvoiceError(LDKInvoiceError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceError)); }
5492         operator LDKInvoiceError() && { LDKInvoiceError res = self; memset(&self, 0, sizeof(LDKInvoiceError)); return res; }
5493         ~InvoiceError() { InvoiceError_free(self); }
5494         InvoiceError& operator=(InvoiceError&& o) { InvoiceError_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceError)); return *this; }
5495         LDKInvoiceError* operator &() { return &self; }
5496         LDKInvoiceError* operator ->() { return &self; }
5497         const LDKInvoiceError* operator &() const { return &self; }
5498         const LDKInvoiceError* operator ->() const { return &self; }
5499 };
5500 class ErroneousField {
5501 private:
5502         LDKErroneousField self;
5503 public:
5504         ErroneousField(const ErroneousField&) = delete;
5505         ErroneousField(ErroneousField&& o) : self(o.self) { memset(&o, 0, sizeof(ErroneousField)); }
5506         ErroneousField(LDKErroneousField&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroneousField)); }
5507         operator LDKErroneousField() && { LDKErroneousField res = self; memset(&self, 0, sizeof(LDKErroneousField)); return res; }
5508         ~ErroneousField() { ErroneousField_free(self); }
5509         ErroneousField& operator=(ErroneousField&& o) { ErroneousField_free(self); self = o.self; memset(&o, 0, sizeof(ErroneousField)); return *this; }
5510         LDKErroneousField* operator &() { return &self; }
5511         LDKErroneousField* operator ->() { return &self; }
5512         const LDKErroneousField* operator &() const { return &self; }
5513         const LDKErroneousField* operator ->() const { return &self; }
5514 };
5515 class MonitorUpdateId {
5516 private:
5517         LDKMonitorUpdateId self;
5518 public:
5519         MonitorUpdateId(const MonitorUpdateId&) = delete;
5520         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
5521         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
5522         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
5523         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
5524         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
5525         LDKMonitorUpdateId* operator &() { return &self; }
5526         LDKMonitorUpdateId* operator ->() { return &self; }
5527         const LDKMonitorUpdateId* operator &() const { return &self; }
5528         const LDKMonitorUpdateId* operator ->() const { return &self; }
5529 };
5530 class Persist {
5531 private:
5532         LDKPersist self;
5533 public:
5534         Persist(const Persist&) = delete;
5535         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
5536         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
5537         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
5538         ~Persist() { Persist_free(self); }
5539         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
5540         LDKPersist* operator &() { return &self; }
5541         LDKPersist* operator ->() { return &self; }
5542         const LDKPersist* operator &() const { return &self; }
5543         const LDKPersist* operator ->() const { return &self; }
5544         /**
5545          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
5546          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
5547          * 
5548          *  The data can be stored any way you want, but the identifier provided by LDK is the
5549          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
5550          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
5551          * 
5552          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
5553          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
5554          * 
5555          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
5556          *  and [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
5557          * 
5558          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
5559          *  [`Writeable::write`]: crate::util::ser::Writeable::write
5560          */
5561         inline LDK::ChannelMonitorUpdateStatus persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
5562         /**
5563          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
5564          *  update.
5565          * 
5566          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
5567          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
5568          *  details.
5569          * 
5570          *  During blockchain synchronization operations, this may be called with no
5571          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
5572          *  Note that after the full [`ChannelMonitor`] is persisted any previous
5573          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
5574          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
5575          * 
5576          *  If an implementer chooses to persist the updates only, they need to make
5577          *  sure that all the updates are applied to the `ChannelMonitors` *before*
5578          *  the set of channel monitors is given to the `ChannelManager`
5579          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
5580          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
5581          *  persisted, then there is no need to persist individual updates.
5582          * 
5583          *  Note that there could be a performance tradeoff between persisting complete
5584          *  channel monitors on every update vs. persisting only updates and applying
5585          *  them in batches. The size of each monitor grows `O(number of state updates)`
5586          *  whereas updates are small and `O(1)`.
5587          * 
5588          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
5589          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
5590          * 
5591          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
5592          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
5593          *  [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
5594          * 
5595          *  [`Writeable::write`]: crate::util::ser::Writeable::write
5596          * 
5597          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
5598          */
5599         inline LDK::ChannelMonitorUpdateStatus update_persisted_channel(struct LDKOutPoint channel_id, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
5600 };
5601 class LockedChannelMonitor {
5602 private:
5603         LDKLockedChannelMonitor self;
5604 public:
5605         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
5606         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
5607         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
5608         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
5609         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
5610         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
5611         LDKLockedChannelMonitor* operator &() { return &self; }
5612         LDKLockedChannelMonitor* operator ->() { return &self; }
5613         const LDKLockedChannelMonitor* operator &() const { return &self; }
5614         const LDKLockedChannelMonitor* operator ->() const { return &self; }
5615 };
5616 class ChainMonitor {
5617 private:
5618         LDKChainMonitor self;
5619 public:
5620         ChainMonitor(const ChainMonitor&) = delete;
5621         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
5622         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
5623         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
5624         ~ChainMonitor() { ChainMonitor_free(self); }
5625         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
5626         LDKChainMonitor* operator &() { return &self; }
5627         LDKChainMonitor* operator ->() { return &self; }
5628         const LDKChainMonitor* operator &() const { return &self; }
5629         const LDKChainMonitor* operator ->() const { return &self; }
5630 };
5631 class CResult_LockedChannelMonitorNoneZ {
5632 private:
5633         LDKCResult_LockedChannelMonitorNoneZ self;
5634 public:
5635         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
5636         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
5637         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
5638         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
5639         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
5640         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
5641         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
5642         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
5643         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
5644         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
5645 };
5646 class CResult_TransactionU16LenLimitedNoneZ {
5647 private:
5648         LDKCResult_TransactionU16LenLimitedNoneZ self;
5649 public:
5650         CResult_TransactionU16LenLimitedNoneZ(const CResult_TransactionU16LenLimitedNoneZ&) = delete;
5651         CResult_TransactionU16LenLimitedNoneZ(CResult_TransactionU16LenLimitedNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedNoneZ)); }
5652         CResult_TransactionU16LenLimitedNoneZ(LDKCResult_TransactionU16LenLimitedNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionU16LenLimitedNoneZ)); }
5653         operator LDKCResult_TransactionU16LenLimitedNoneZ() && { LDKCResult_TransactionU16LenLimitedNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionU16LenLimitedNoneZ)); return res; }
5654         ~CResult_TransactionU16LenLimitedNoneZ() { CResult_TransactionU16LenLimitedNoneZ_free(self); }
5655         CResult_TransactionU16LenLimitedNoneZ& operator=(CResult_TransactionU16LenLimitedNoneZ&& o) { CResult_TransactionU16LenLimitedNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedNoneZ)); return *this; }
5656         LDKCResult_TransactionU16LenLimitedNoneZ* operator &() { return &self; }
5657         LDKCResult_TransactionU16LenLimitedNoneZ* operator ->() { return &self; }
5658         const LDKCResult_TransactionU16LenLimitedNoneZ* operator &() const { return &self; }
5659         const LDKCResult_TransactionU16LenLimitedNoneZ* operator ->() const { return &self; }
5660 };
5661 class CVec_C2Tuple_BlindedPayInfoBlindedPathZZ {
5662 private:
5663         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ self;
5664 public:
5665         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(const CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&) = delete;
5666         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); }
5667         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); }
5668         operator LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ() && { LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); return res; }
5669         ~CVec_C2Tuple_BlindedPayInfoBlindedPathZZ() { CVec_C2Tuple_BlindedPayInfoBlindedPathZZ_free(self); }
5670         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; }
5671         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator &() { return &self; }
5672         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator ->() { return &self; }
5673         const LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator &() const { return &self; }
5674         const LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator ->() const { return &self; }
5675 };
5676 class CResult_PhantomRouteHintsDecodeErrorZ {
5677 private:
5678         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
5679 public:
5680         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
5681         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
5682         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
5683         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
5684         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
5685         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
5686         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
5687         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
5688         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
5689         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
5690 };
5691 class CResult_FundingCreatedDecodeErrorZ {
5692 private:
5693         LDKCResult_FundingCreatedDecodeErrorZ self;
5694 public:
5695         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
5696         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
5697         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
5698         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
5699         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
5700         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
5701         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
5702         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
5703         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
5704         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
5705 };
5706 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
5707 private:
5708         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
5709 public:
5710         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
5711         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
5712         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)); }
5713         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
5714         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
5715         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; }
5716         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
5717         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
5718         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
5719         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
5720 };
5721 class CVec_C2Tuple_u32TxOutZZ {
5722 private:
5723         LDKCVec_C2Tuple_u32TxOutZZ self;
5724 public:
5725         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
5726         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
5727         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
5728         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
5729         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
5730         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; }
5731         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
5732         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
5733         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
5734         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
5735 };
5736 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
5737 private:
5738         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
5739 public:
5740         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
5741         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
5742         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
5743         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
5744         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
5745         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; }
5746         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
5747         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
5748         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
5749         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
5750 };
5751 class COption_PaymentSecretZ {
5752 private:
5753         LDKCOption_PaymentSecretZ self;
5754 public:
5755         COption_PaymentSecretZ(const COption_PaymentSecretZ&) = delete;
5756         COption_PaymentSecretZ(COption_PaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentSecretZ)); }
5757         COption_PaymentSecretZ(LDKCOption_PaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentSecretZ)); }
5758         operator LDKCOption_PaymentSecretZ() && { LDKCOption_PaymentSecretZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentSecretZ)); return res; }
5759         ~COption_PaymentSecretZ() { COption_PaymentSecretZ_free(self); }
5760         COption_PaymentSecretZ& operator=(COption_PaymentSecretZ&& o) { COption_PaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentSecretZ)); return *this; }
5761         LDKCOption_PaymentSecretZ* operator &() { return &self; }
5762         LDKCOption_PaymentSecretZ* operator ->() { return &self; }
5763         const LDKCOption_PaymentSecretZ* operator &() const { return &self; }
5764         const LDKCOption_PaymentSecretZ* operator ->() const { return &self; }
5765 };
5766 class CResult_ChannelInfoDecodeErrorZ {
5767 private:
5768         LDKCResult_ChannelInfoDecodeErrorZ self;
5769 public:
5770         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
5771         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
5772         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
5773         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
5774         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
5775         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
5776         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
5777         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
5778         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
5779         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
5780 };
5781 class COption_MaxDustHTLCExposureZ {
5782 private:
5783         LDKCOption_MaxDustHTLCExposureZ self;
5784 public:
5785         COption_MaxDustHTLCExposureZ(const COption_MaxDustHTLCExposureZ&) = delete;
5786         COption_MaxDustHTLCExposureZ(COption_MaxDustHTLCExposureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MaxDustHTLCExposureZ)); }
5787         COption_MaxDustHTLCExposureZ(LDKCOption_MaxDustHTLCExposureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MaxDustHTLCExposureZ)); }
5788         operator LDKCOption_MaxDustHTLCExposureZ() && { LDKCOption_MaxDustHTLCExposureZ res = self; memset(&self, 0, sizeof(LDKCOption_MaxDustHTLCExposureZ)); return res; }
5789         ~COption_MaxDustHTLCExposureZ() { COption_MaxDustHTLCExposureZ_free(self); }
5790         COption_MaxDustHTLCExposureZ& operator=(COption_MaxDustHTLCExposureZ&& o) { COption_MaxDustHTLCExposureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MaxDustHTLCExposureZ)); return *this; }
5791         LDKCOption_MaxDustHTLCExposureZ* operator &() { return &self; }
5792         LDKCOption_MaxDustHTLCExposureZ* operator ->() { return &self; }
5793         const LDKCOption_MaxDustHTLCExposureZ* operator &() const { return &self; }
5794         const LDKCOption_MaxDustHTLCExposureZ* operator ->() const { return &self; }
5795 };
5796 class CResult_NoneSendErrorZ {
5797 private:
5798         LDKCResult_NoneSendErrorZ self;
5799 public:
5800         CResult_NoneSendErrorZ(const CResult_NoneSendErrorZ&) = delete;
5801         CResult_NoneSendErrorZ(CResult_NoneSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); }
5802         CResult_NoneSendErrorZ(LDKCResult_NoneSendErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSendErrorZ)); }
5803         operator LDKCResult_NoneSendErrorZ() && { LDKCResult_NoneSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSendErrorZ)); return res; }
5804         ~CResult_NoneSendErrorZ() { CResult_NoneSendErrorZ_free(self); }
5805         CResult_NoneSendErrorZ& operator=(CResult_NoneSendErrorZ&& o) { CResult_NoneSendErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); return *this; }
5806         LDKCResult_NoneSendErrorZ* operator &() { return &self; }
5807         LDKCResult_NoneSendErrorZ* operator ->() { return &self; }
5808         const LDKCResult_NoneSendErrorZ* operator &() const { return &self; }
5809         const LDKCResult_NoneSendErrorZ* operator ->() const { return &self; }
5810 };
5811 class COption_OffersMessageZ {
5812 private:
5813         LDKCOption_OffersMessageZ self;
5814 public:
5815         COption_OffersMessageZ(const COption_OffersMessageZ&) = delete;
5816         COption_OffersMessageZ(COption_OffersMessageZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_OffersMessageZ)); }
5817         COption_OffersMessageZ(LDKCOption_OffersMessageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_OffersMessageZ)); }
5818         operator LDKCOption_OffersMessageZ() && { LDKCOption_OffersMessageZ res = self; memset(&self, 0, sizeof(LDKCOption_OffersMessageZ)); return res; }
5819         ~COption_OffersMessageZ() { COption_OffersMessageZ_free(self); }
5820         COption_OffersMessageZ& operator=(COption_OffersMessageZ&& o) { COption_OffersMessageZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_OffersMessageZ)); return *this; }
5821         LDKCOption_OffersMessageZ* operator &() { return &self; }
5822         LDKCOption_OffersMessageZ* operator ->() { return &self; }
5823         const LDKCOption_OffersMessageZ* operator &() const { return &self; }
5824         const LDKCOption_OffersMessageZ* operator ->() const { return &self; }
5825 };
5826 class CResult_CVec_u8ZPeerHandleErrorZ {
5827 private:
5828         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
5829 public:
5830         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
5831         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
5832         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
5833         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
5834         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
5835         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; }
5836         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
5837         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
5838         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
5839         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
5840 };
5841 class COption_NetworkUpdateZ {
5842 private:
5843         LDKCOption_NetworkUpdateZ self;
5844 public:
5845         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
5846         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
5847         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
5848         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
5849         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
5850         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
5851         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
5852         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
5853         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
5854         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
5855 };
5856 class COption_u64Z {
5857 private:
5858         LDKCOption_u64Z self;
5859 public:
5860         COption_u64Z(const COption_u64Z&) = delete;
5861         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
5862         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
5863         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
5864         ~COption_u64Z() { COption_u64Z_free(self); }
5865         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
5866         LDKCOption_u64Z* operator &() { return &self; }
5867         LDKCOption_u64Z* operator ->() { return &self; }
5868         const LDKCOption_u64Z* operator &() const { return &self; }
5869         const LDKCOption_u64Z* operator ->() const { return &self; }
5870 };
5871 class CResult_GossipTimestampFilterDecodeErrorZ {
5872 private:
5873         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
5874 public:
5875         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
5876         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
5877         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
5878         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
5879         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
5880         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
5881         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
5882         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
5883         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
5884         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
5885 };
5886 class CResult_PaymentPreimageAPIErrorZ {
5887 private:
5888         LDKCResult_PaymentPreimageAPIErrorZ self;
5889 public:
5890         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
5891         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
5892         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
5893         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
5894         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
5895         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
5896         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
5897         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
5898         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
5899         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
5900 };
5901 class CResult_RouteHintDecodeErrorZ {
5902 private:
5903         LDKCResult_RouteHintDecodeErrorZ self;
5904 public:
5905         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
5906         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
5907         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
5908         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
5909         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
5910         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
5911         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
5912         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
5913         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
5914         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
5915 };
5916 class COption_FilterZ {
5917 private:
5918         LDKCOption_FilterZ self;
5919 public:
5920         COption_FilterZ(const COption_FilterZ&) = delete;
5921         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
5922         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
5923         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
5924         ~COption_FilterZ() { COption_FilterZ_free(self); }
5925         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
5926         LDKCOption_FilterZ* operator &() { return &self; }
5927         LDKCOption_FilterZ* operator ->() { return &self; }
5928         const LDKCOption_FilterZ* operator &() const { return &self; }
5929         const LDKCOption_FilterZ* operator ->() const { return &self; }
5930 };
5931 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
5932 private:
5933         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
5934 public:
5935         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
5936         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5937         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5938         operator LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
5939         ~COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
5940         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; }
5941         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
5942         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
5943         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
5944         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
5945 };
5946 class CResult_COption_APIErrorZDecodeErrorZ {
5947 private:
5948         LDKCResult_COption_APIErrorZDecodeErrorZ self;
5949 public:
5950         CResult_COption_APIErrorZDecodeErrorZ(const CResult_COption_APIErrorZDecodeErrorZ&) = delete;
5951         CResult_COption_APIErrorZDecodeErrorZ(CResult_COption_APIErrorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_APIErrorZDecodeErrorZ)); }
5952         CResult_COption_APIErrorZDecodeErrorZ(LDKCResult_COption_APIErrorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); }
5953         operator LDKCResult_COption_APIErrorZDecodeErrorZ() && { LDKCResult_COption_APIErrorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); return res; }
5954         ~CResult_COption_APIErrorZDecodeErrorZ() { CResult_COption_APIErrorZDecodeErrorZ_free(self); }
5955         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; }
5956         LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() { return &self; }
5957         LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() { return &self; }
5958         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() const { return &self; }
5959         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() const { return &self; }
5960 };
5961 class CVec_UpdateAddHTLCZ {
5962 private:
5963         LDKCVec_UpdateAddHTLCZ self;
5964 public:
5965         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
5966         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
5967         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
5968         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
5969         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
5970         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
5971         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
5972         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
5973         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
5974         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
5975 };
5976 class CResult_TxAbortDecodeErrorZ {
5977 private:
5978         LDKCResult_TxAbortDecodeErrorZ self;
5979 public:
5980         CResult_TxAbortDecodeErrorZ(const CResult_TxAbortDecodeErrorZ&) = delete;
5981         CResult_TxAbortDecodeErrorZ(CResult_TxAbortDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAbortDecodeErrorZ)); }
5982         CResult_TxAbortDecodeErrorZ(LDKCResult_TxAbortDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAbortDecodeErrorZ)); }
5983         operator LDKCResult_TxAbortDecodeErrorZ() && { LDKCResult_TxAbortDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAbortDecodeErrorZ)); return res; }
5984         ~CResult_TxAbortDecodeErrorZ() { CResult_TxAbortDecodeErrorZ_free(self); }
5985         CResult_TxAbortDecodeErrorZ& operator=(CResult_TxAbortDecodeErrorZ&& o) { CResult_TxAbortDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAbortDecodeErrorZ)); return *this; }
5986         LDKCResult_TxAbortDecodeErrorZ* operator &() { return &self; }
5987         LDKCResult_TxAbortDecodeErrorZ* operator ->() { return &self; }
5988         const LDKCResult_TxAbortDecodeErrorZ* operator &() const { return &self; }
5989         const LDKCResult_TxAbortDecodeErrorZ* operator ->() const { return &self; }
5990 };
5991 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
5992 private:
5993         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
5994 public:
5995         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
5996         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
5997         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
5998         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
5999         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
6000         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
6001         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6002         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6003         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6004         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6005 };
6006 class COption_u32Z {
6007 private:
6008         LDKCOption_u32Z self;
6009 public:
6010         COption_u32Z(const COption_u32Z&) = delete;
6011         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
6012         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
6013         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
6014         ~COption_u32Z() { COption_u32Z_free(self); }
6015         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
6016         LDKCOption_u32Z* operator &() { return &self; }
6017         LDKCOption_u32Z* operator ->() { return &self; }
6018         const LDKCOption_u32Z* operator &() const { return &self; }
6019         const LDKCOption_u32Z* operator ->() const { return &self; }
6020 };
6021 class CResult_CommitmentSignedDecodeErrorZ {
6022 private:
6023         LDKCResult_CommitmentSignedDecodeErrorZ self;
6024 public:
6025         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
6026         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
6027         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
6028         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
6029         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
6030         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
6031         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
6032         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
6033         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
6034         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
6035 };
6036 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
6037 private:
6038         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
6039 public:
6040         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
6041         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
6042         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
6043         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
6044         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
6045         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
6046         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
6047         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
6048         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
6049         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
6050 };
6051 class CResult_TransactionNoneZ {
6052 private:
6053         LDKCResult_TransactionNoneZ self;
6054 public:
6055         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
6056         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
6057         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
6058         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
6059         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
6060         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
6061         LDKCResult_TransactionNoneZ* operator &() { return &self; }
6062         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
6063         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
6064         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
6065 };
6066 class CResult_CommitmentTransactionDecodeErrorZ {
6067 private:
6068         LDKCResult_CommitmentTransactionDecodeErrorZ self;
6069 public:
6070         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
6071         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
6072         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
6073         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
6074         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
6075         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
6076         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
6077         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
6078         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
6079         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
6080 };
6081 class COption_DurationZ {
6082 private:
6083         LDKCOption_DurationZ self;
6084 public:
6085         COption_DurationZ(const COption_DurationZ&) = delete;
6086         COption_DurationZ(COption_DurationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_DurationZ)); }
6087         COption_DurationZ(LDKCOption_DurationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_DurationZ)); }
6088         operator LDKCOption_DurationZ() && { LDKCOption_DurationZ res = self; memset(&self, 0, sizeof(LDKCOption_DurationZ)); return res; }
6089         ~COption_DurationZ() { COption_DurationZ_free(self); }
6090         COption_DurationZ& operator=(COption_DurationZ&& o) { COption_DurationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_DurationZ)); return *this; }
6091         LDKCOption_DurationZ* operator &() { return &self; }
6092         LDKCOption_DurationZ* operator ->() { return &self; }
6093         const LDKCOption_DurationZ* operator &() const { return &self; }
6094         const LDKCOption_DurationZ* operator ->() const { return &self; }
6095 };
6096 class C2Tuple_TxidCOption_BlockHashZZ {
6097 private:
6098         LDKC2Tuple_TxidCOption_BlockHashZZ self;
6099 public:
6100         C2Tuple_TxidCOption_BlockHashZZ(const C2Tuple_TxidCOption_BlockHashZZ&) = delete;
6101         C2Tuple_TxidCOption_BlockHashZZ(C2Tuple_TxidCOption_BlockHashZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCOption_BlockHashZZ)); }
6102         C2Tuple_TxidCOption_BlockHashZZ(LDKC2Tuple_TxidCOption_BlockHashZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCOption_BlockHashZZ)); }
6103         operator LDKC2Tuple_TxidCOption_BlockHashZZ() && { LDKC2Tuple_TxidCOption_BlockHashZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCOption_BlockHashZZ)); return res; }
6104         ~C2Tuple_TxidCOption_BlockHashZZ() { C2Tuple_TxidCOption_BlockHashZZ_free(self); }
6105         C2Tuple_TxidCOption_BlockHashZZ& operator=(C2Tuple_TxidCOption_BlockHashZZ&& o) { C2Tuple_TxidCOption_BlockHashZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_TxidCOption_BlockHashZZ)); return *this; }
6106         LDKC2Tuple_TxidCOption_BlockHashZZ* operator &() { return &self; }
6107         LDKC2Tuple_TxidCOption_BlockHashZZ* operator ->() { return &self; }
6108         const LDKC2Tuple_TxidCOption_BlockHashZZ* operator &() const { return &self; }
6109         const LDKC2Tuple_TxidCOption_BlockHashZZ* operator ->() const { return &self; }
6110 };
6111 class COption_PaymentHashZ {
6112 private:
6113         LDKCOption_PaymentHashZ self;
6114 public:
6115         COption_PaymentHashZ(const COption_PaymentHashZ&) = delete;
6116         COption_PaymentHashZ(COption_PaymentHashZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentHashZ)); }
6117         COption_PaymentHashZ(LDKCOption_PaymentHashZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentHashZ)); }
6118         operator LDKCOption_PaymentHashZ() && { LDKCOption_PaymentHashZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentHashZ)); return res; }
6119         ~COption_PaymentHashZ() { COption_PaymentHashZ_free(self); }
6120         COption_PaymentHashZ& operator=(COption_PaymentHashZ&& o) { COption_PaymentHashZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentHashZ)); return *this; }
6121         LDKCOption_PaymentHashZ* operator &() { return &self; }
6122         LDKCOption_PaymentHashZ* operator ->() { return &self; }
6123         const LDKCOption_PaymentHashZ* operator &() const { return &self; }
6124         const LDKCOption_PaymentHashZ* operator ->() const { return &self; }
6125 };
6126 class CResult_OpenChannelDecodeErrorZ {
6127 private:
6128         LDKCResult_OpenChannelDecodeErrorZ self;
6129 public:
6130         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
6131         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
6132         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
6133         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
6134         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
6135         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
6136         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
6137         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
6138         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
6139         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
6140 };
6141 class CResult_ErrorMessageDecodeErrorZ {
6142 private:
6143         LDKCResult_ErrorMessageDecodeErrorZ self;
6144 public:
6145         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
6146         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
6147         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
6148         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
6149         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
6150         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
6151         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
6152         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
6153         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
6154         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
6155 };
6156 class COption_APIErrorZ {
6157 private:
6158         LDKCOption_APIErrorZ self;
6159 public:
6160         COption_APIErrorZ(const COption_APIErrorZ&) = delete;
6161         COption_APIErrorZ(COption_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_APIErrorZ)); }
6162         COption_APIErrorZ(LDKCOption_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_APIErrorZ)); }
6163         operator LDKCOption_APIErrorZ() && { LDKCOption_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCOption_APIErrorZ)); return res; }
6164         ~COption_APIErrorZ() { COption_APIErrorZ_free(self); }
6165         COption_APIErrorZ& operator=(COption_APIErrorZ&& o) { COption_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_APIErrorZ)); return *this; }
6166         LDKCOption_APIErrorZ* operator &() { return &self; }
6167         LDKCOption_APIErrorZ* operator ->() { return &self; }
6168         const LDKCOption_APIErrorZ* operator &() const { return &self; }
6169         const LDKCOption_APIErrorZ* operator ->() const { return &self; }
6170 };
6171 class CResult_QueryChannelRangeDecodeErrorZ {
6172 private:
6173         LDKCResult_QueryChannelRangeDecodeErrorZ self;
6174 public:
6175         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
6176         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
6177         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
6178         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
6179         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
6180         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
6181         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
6182         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
6183         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
6184         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
6185 };
6186 class CVec_TransactionZ {
6187 private:
6188         LDKCVec_TransactionZ self;
6189 public:
6190         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
6191         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
6192         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
6193         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
6194         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
6195         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
6196         LDKCVec_TransactionZ* operator &() { return &self; }
6197         LDKCVec_TransactionZ* operator ->() { return &self; }
6198         const LDKCVec_TransactionZ* operator &() const { return &self; }
6199         const LDKCVec_TransactionZ* operator ->() const { return &self; }
6200 };
6201 class CVec_InputZ {
6202 private:
6203         LDKCVec_InputZ self;
6204 public:
6205         CVec_InputZ(const CVec_InputZ&) = delete;
6206         CVec_InputZ(CVec_InputZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_InputZ)); }
6207         CVec_InputZ(LDKCVec_InputZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_InputZ)); }
6208         operator LDKCVec_InputZ() && { LDKCVec_InputZ res = self; memset(&self, 0, sizeof(LDKCVec_InputZ)); return res; }
6209         ~CVec_InputZ() { CVec_InputZ_free(self); }
6210         CVec_InputZ& operator=(CVec_InputZ&& o) { CVec_InputZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_InputZ)); return *this; }
6211         LDKCVec_InputZ* operator &() { return &self; }
6212         LDKCVec_InputZ* operator ->() { return &self; }
6213         const LDKCVec_InputZ* operator &() const { return &self; }
6214         const LDKCVec_InputZ* operator ->() const { return &self; }
6215 };
6216 class CResult_PartiallySignedTransactionNoneZ {
6217 private:
6218         LDKCResult_PartiallySignedTransactionNoneZ self;
6219 public:
6220         CResult_PartiallySignedTransactionNoneZ(const CResult_PartiallySignedTransactionNoneZ&) = delete;
6221         CResult_PartiallySignedTransactionNoneZ(CResult_PartiallySignedTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PartiallySignedTransactionNoneZ)); }
6222         CResult_PartiallySignedTransactionNoneZ(LDKCResult_PartiallySignedTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PartiallySignedTransactionNoneZ)); }
6223         operator LDKCResult_PartiallySignedTransactionNoneZ() && { LDKCResult_PartiallySignedTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PartiallySignedTransactionNoneZ)); return res; }
6224         ~CResult_PartiallySignedTransactionNoneZ() { CResult_PartiallySignedTransactionNoneZ_free(self); }
6225         CResult_PartiallySignedTransactionNoneZ& operator=(CResult_PartiallySignedTransactionNoneZ&& o) { CResult_PartiallySignedTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PartiallySignedTransactionNoneZ)); return *this; }
6226         LDKCResult_PartiallySignedTransactionNoneZ* operator &() { return &self; }
6227         LDKCResult_PartiallySignedTransactionNoneZ* operator ->() { return &self; }
6228         const LDKCResult_PartiallySignedTransactionNoneZ* operator &() const { return &self; }
6229         const LDKCResult_PartiallySignedTransactionNoneZ* operator ->() const { return &self; }
6230 };
6231 class CResult_ChannelFeaturesDecodeErrorZ {
6232 private:
6233         LDKCResult_ChannelFeaturesDecodeErrorZ self;
6234 public:
6235         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
6236         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
6237         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
6238         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
6239         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
6240         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
6241         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
6242         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
6243         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
6244         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
6245 };
6246 class CResult_ChannelReadyDecodeErrorZ {
6247 private:
6248         LDKCResult_ChannelReadyDecodeErrorZ self;
6249 public:
6250         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
6251         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
6252         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
6253         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
6254         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
6255         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
6256         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
6257         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
6258         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
6259         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
6260 };
6261 class CResult_UpdateFeeDecodeErrorZ {
6262 private:
6263         LDKCResult_UpdateFeeDecodeErrorZ self;
6264 public:
6265         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
6266         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
6267         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
6268         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
6269         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
6270         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
6271         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
6272         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
6273         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
6274         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
6275 };
6276 class CResult_NoneBolt11SemanticErrorZ {
6277 private:
6278         LDKCResult_NoneBolt11SemanticErrorZ self;
6279 public:
6280         CResult_NoneBolt11SemanticErrorZ(const CResult_NoneBolt11SemanticErrorZ&) = delete;
6281         CResult_NoneBolt11SemanticErrorZ(CResult_NoneBolt11SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneBolt11SemanticErrorZ)); }
6282         CResult_NoneBolt11SemanticErrorZ(LDKCResult_NoneBolt11SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneBolt11SemanticErrorZ)); }
6283         operator LDKCResult_NoneBolt11SemanticErrorZ() && { LDKCResult_NoneBolt11SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneBolt11SemanticErrorZ)); return res; }
6284         ~CResult_NoneBolt11SemanticErrorZ() { CResult_NoneBolt11SemanticErrorZ_free(self); }
6285         CResult_NoneBolt11SemanticErrorZ& operator=(CResult_NoneBolt11SemanticErrorZ&& o) { CResult_NoneBolt11SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneBolt11SemanticErrorZ)); return *this; }
6286         LDKCResult_NoneBolt11SemanticErrorZ* operator &() { return &self; }
6287         LDKCResult_NoneBolt11SemanticErrorZ* operator ->() { return &self; }
6288         const LDKCResult_NoneBolt11SemanticErrorZ* operator &() const { return &self; }
6289         const LDKCResult_NoneBolt11SemanticErrorZ* operator ->() const { return &self; }
6290 };
6291 class CResult_NoneRetryableSendFailureZ {
6292 private:
6293         LDKCResult_NoneRetryableSendFailureZ self;
6294 public:
6295         CResult_NoneRetryableSendFailureZ(const CResult_NoneRetryableSendFailureZ&) = delete;
6296         CResult_NoneRetryableSendFailureZ(CResult_NoneRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); }
6297         CResult_NoneRetryableSendFailureZ(LDKCResult_NoneRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); }
6298         operator LDKCResult_NoneRetryableSendFailureZ() && { LDKCResult_NoneRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); return res; }
6299         ~CResult_NoneRetryableSendFailureZ() { CResult_NoneRetryableSendFailureZ_free(self); }
6300         CResult_NoneRetryableSendFailureZ& operator=(CResult_NoneRetryableSendFailureZ&& o) { CResult_NoneRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); return *this; }
6301         LDKCResult_NoneRetryableSendFailureZ* operator &() { return &self; }
6302         LDKCResult_NoneRetryableSendFailureZ* operator ->() { return &self; }
6303         const LDKCResult_NoneRetryableSendFailureZ* operator &() const { return &self; }
6304         const LDKCResult_NoneRetryableSendFailureZ* operator ->() const { return &self; }
6305 };
6306 class COption_BlockHashZ {
6307 private:
6308         LDKCOption_BlockHashZ self;
6309 public:
6310         COption_BlockHashZ(const COption_BlockHashZ&) = delete;
6311         COption_BlockHashZ(COption_BlockHashZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_BlockHashZ)); }
6312         COption_BlockHashZ(LDKCOption_BlockHashZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_BlockHashZ)); }
6313         operator LDKCOption_BlockHashZ() && { LDKCOption_BlockHashZ res = self; memset(&self, 0, sizeof(LDKCOption_BlockHashZ)); return res; }
6314         ~COption_BlockHashZ() { COption_BlockHashZ_free(self); }
6315         COption_BlockHashZ& operator=(COption_BlockHashZ&& o) { COption_BlockHashZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_BlockHashZ)); return *this; }
6316         LDKCOption_BlockHashZ* operator &() { return &self; }
6317         LDKCOption_BlockHashZ* operator ->() { return &self; }
6318         const LDKCOption_BlockHashZ* operator &() const { return &self; }
6319         const LDKCOption_BlockHashZ* operator ->() const { return &self; }
6320 };
6321 class CResult_NodeIdDecodeErrorZ {
6322 private:
6323         LDKCResult_NodeIdDecodeErrorZ self;
6324 public:
6325         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
6326         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
6327         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
6328         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
6329         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
6330         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
6331         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
6332         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
6333         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
6334         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
6335 };
6336 class CResult_boolLightningErrorZ {
6337 private:
6338         LDKCResult_boolLightningErrorZ self;
6339 public:
6340         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
6341         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
6342         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
6343         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
6344         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
6345         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
6346         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
6347         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
6348         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
6349         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
6350 };
6351 class CResult_ChannelShutdownStateDecodeErrorZ {
6352 private:
6353         LDKCResult_ChannelShutdownStateDecodeErrorZ self;
6354 public:
6355         CResult_ChannelShutdownStateDecodeErrorZ(const CResult_ChannelShutdownStateDecodeErrorZ&) = delete;
6356         CResult_ChannelShutdownStateDecodeErrorZ(CResult_ChannelShutdownStateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelShutdownStateDecodeErrorZ)); }
6357         CResult_ChannelShutdownStateDecodeErrorZ(LDKCResult_ChannelShutdownStateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelShutdownStateDecodeErrorZ)); }
6358         operator LDKCResult_ChannelShutdownStateDecodeErrorZ() && { LDKCResult_ChannelShutdownStateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelShutdownStateDecodeErrorZ)); return res; }
6359         ~CResult_ChannelShutdownStateDecodeErrorZ() { CResult_ChannelShutdownStateDecodeErrorZ_free(self); }
6360         CResult_ChannelShutdownStateDecodeErrorZ& operator=(CResult_ChannelShutdownStateDecodeErrorZ&& o) { CResult_ChannelShutdownStateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelShutdownStateDecodeErrorZ)); return *this; }
6361         LDKCResult_ChannelShutdownStateDecodeErrorZ* operator &() { return &self; }
6362         LDKCResult_ChannelShutdownStateDecodeErrorZ* operator ->() { return &self; }
6363         const LDKCResult_ChannelShutdownStateDecodeErrorZ* operator &() const { return &self; }
6364         const LDKCResult_ChannelShutdownStateDecodeErrorZ* operator ->() const { return &self; }
6365 };
6366 class CResult_NodeAnnouncementInfoDecodeErrorZ {
6367 private:
6368         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
6369 public:
6370         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
6371         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
6372         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
6373         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
6374         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
6375         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
6376         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
6377         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
6378         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
6379         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
6380 };
6381 class C2Tuple_BlockHashChannelMonitorZ {
6382 private:
6383         LDKC2Tuple_BlockHashChannelMonitorZ self;
6384 public:
6385         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
6386         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
6387         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
6388         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
6389         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
6390         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
6391         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
6392         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
6393         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
6394         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
6395 };
6396 class CResult_COption_NetworkUpdateZDecodeErrorZ {
6397 private:
6398         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
6399 public:
6400         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
6401         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
6402         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
6403         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
6404         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
6405         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; }
6406         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
6407         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
6408         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
6409         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
6410 };
6411 class CVec_UpdateFailMalformedHTLCZ {
6412 private:
6413         LDKCVec_UpdateFailMalformedHTLCZ self;
6414 public:
6415         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
6416         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
6417         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
6418         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
6419         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
6420         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
6421         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
6422         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
6423         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
6424         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
6425 };
6426 class CResult_ShutdownScriptNoneZ {
6427 private:
6428         LDKCResult_ShutdownScriptNoneZ self;
6429 public:
6430         CResult_ShutdownScriptNoneZ(const CResult_ShutdownScriptNoneZ&) = delete;
6431         CResult_ShutdownScriptNoneZ(CResult_ShutdownScriptNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptNoneZ)); }
6432         CResult_ShutdownScriptNoneZ(LDKCResult_ShutdownScriptNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptNoneZ)); }
6433         operator LDKCResult_ShutdownScriptNoneZ() && { LDKCResult_ShutdownScriptNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptNoneZ)); return res; }
6434         ~CResult_ShutdownScriptNoneZ() { CResult_ShutdownScriptNoneZ_free(self); }
6435         CResult_ShutdownScriptNoneZ& operator=(CResult_ShutdownScriptNoneZ&& o) { CResult_ShutdownScriptNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptNoneZ)); return *this; }
6436         LDKCResult_ShutdownScriptNoneZ* operator &() { return &self; }
6437         LDKCResult_ShutdownScriptNoneZ* operator ->() { return &self; }
6438         const LDKCResult_ShutdownScriptNoneZ* operator &() const { return &self; }
6439         const LDKCResult_ShutdownScriptNoneZ* operator ->() const { return &self; }
6440 };
6441 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
6442 private:
6443         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
6444 public:
6445         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
6446         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
6447         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
6448         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
6449         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
6450         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
6451         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
6452         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
6453         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
6454         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
6455 };
6456 class CResult_ShutdownScriptInvalidShutdownScriptZ {
6457 private:
6458         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
6459 public:
6460         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
6461         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
6462         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
6463         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
6464         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
6465         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
6466         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
6467         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
6468         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
6469         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
6470 };
6471 class CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ {
6472 private:
6473         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ self;
6474 public:
6475         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(const CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&) = delete;
6476         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); }
6477         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); }
6478         operator LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ() && { LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); return res; }
6479         ~CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ() { CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ_free(self); }
6480         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; }
6481         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator &() { return &self; }
6482         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator ->() { return &self; }
6483         const LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator &() const { return &self; }
6484         const LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator ->() const { return &self; }
6485 };
6486 class COption_HTLCDestinationZ {
6487 private:
6488         LDKCOption_HTLCDestinationZ self;
6489 public:
6490         COption_HTLCDestinationZ(const COption_HTLCDestinationZ&) = delete;
6491         COption_HTLCDestinationZ(COption_HTLCDestinationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCDestinationZ)); }
6492         COption_HTLCDestinationZ(LDKCOption_HTLCDestinationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCDestinationZ)); }
6493         operator LDKCOption_HTLCDestinationZ() && { LDKCOption_HTLCDestinationZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCDestinationZ)); return res; }
6494         ~COption_HTLCDestinationZ() { COption_HTLCDestinationZ_free(self); }
6495         COption_HTLCDestinationZ& operator=(COption_HTLCDestinationZ&& o) { COption_HTLCDestinationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCDestinationZ)); return *this; }
6496         LDKCOption_HTLCDestinationZ* operator &() { return &self; }
6497         LDKCOption_HTLCDestinationZ* operator ->() { return &self; }
6498         const LDKCOption_HTLCDestinationZ* operator &() const { return &self; }
6499         const LDKCOption_HTLCDestinationZ* operator ->() const { return &self; }
6500 };
6501 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ {
6502 private:
6503         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ self;
6504 public:
6505         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(const CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&) = delete;
6506         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
6507         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
6508         operator LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() && { LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); return res; }
6509         ~CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() { CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ_free(self); }
6510         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; }
6511         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() { return &self; }
6512         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() { return &self; }
6513         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() const { return &self; }
6514         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() const { return &self; }
6515 };
6516 class CVec_RouteHopZ {
6517 private:
6518         LDKCVec_RouteHopZ self;
6519 public:
6520         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
6521         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
6522         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
6523         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
6524         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
6525         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
6526         LDKCVec_RouteHopZ* operator &() { return &self; }
6527         LDKCVec_RouteHopZ* operator ->() { return &self; }
6528         const LDKCVec_RouteHopZ* operator &() const { return &self; }
6529         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
6530 };
6531 class CResult_CVec_UtxoZNoneZ {
6532 private:
6533         LDKCResult_CVec_UtxoZNoneZ self;
6534 public:
6535         CResult_CVec_UtxoZNoneZ(const CResult_CVec_UtxoZNoneZ&) = delete;
6536         CResult_CVec_UtxoZNoneZ(CResult_CVec_UtxoZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_UtxoZNoneZ)); }
6537         CResult_CVec_UtxoZNoneZ(LDKCResult_CVec_UtxoZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_UtxoZNoneZ)); }
6538         operator LDKCResult_CVec_UtxoZNoneZ() && { LDKCResult_CVec_UtxoZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_UtxoZNoneZ)); return res; }
6539         ~CResult_CVec_UtxoZNoneZ() { CResult_CVec_UtxoZNoneZ_free(self); }
6540         CResult_CVec_UtxoZNoneZ& operator=(CResult_CVec_UtxoZNoneZ&& o) { CResult_CVec_UtxoZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_UtxoZNoneZ)); return *this; }
6541         LDKCResult_CVec_UtxoZNoneZ* operator &() { return &self; }
6542         LDKCResult_CVec_UtxoZNoneZ* operator ->() { return &self; }
6543         const LDKCResult_CVec_UtxoZNoneZ* operator &() const { return &self; }
6544         const LDKCResult_CVec_UtxoZNoneZ* operator ->() const { return &self; }
6545 };
6546 class COption_CustomOnionMessageContentsZ {
6547 private:
6548         LDKCOption_CustomOnionMessageContentsZ self;
6549 public:
6550         COption_CustomOnionMessageContentsZ(const COption_CustomOnionMessageContentsZ&) = delete;
6551         COption_CustomOnionMessageContentsZ(COption_CustomOnionMessageContentsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); }
6552         COption_CustomOnionMessageContentsZ(LDKCOption_CustomOnionMessageContentsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); }
6553         operator LDKCOption_CustomOnionMessageContentsZ() && { LDKCOption_CustomOnionMessageContentsZ res = self; memset(&self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); return res; }
6554         ~COption_CustomOnionMessageContentsZ() { COption_CustomOnionMessageContentsZ_free(self); }
6555         COption_CustomOnionMessageContentsZ& operator=(COption_CustomOnionMessageContentsZ&& o) { COption_CustomOnionMessageContentsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); return *this; }
6556         LDKCOption_CustomOnionMessageContentsZ* operator &() { return &self; }
6557         LDKCOption_CustomOnionMessageContentsZ* operator ->() { return &self; }
6558         const LDKCOption_CustomOnionMessageContentsZ* operator &() const { return &self; }
6559         const LDKCOption_CustomOnionMessageContentsZ* operator ->() const { return &self; }
6560 };
6561 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
6562 private:
6563         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
6564 public:
6565         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
6566         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
6567         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
6568         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
6569         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
6570         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; }
6571         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
6572         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
6573         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
6574         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
6575 };
6576 class CResult_COption_KeyPairZNoneZ {
6577 private:
6578         LDKCResult_COption_KeyPairZNoneZ self;
6579 public:
6580         CResult_COption_KeyPairZNoneZ(const CResult_COption_KeyPairZNoneZ&) = delete;
6581         CResult_COption_KeyPairZNoneZ(CResult_COption_KeyPairZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_KeyPairZNoneZ)); }
6582         CResult_COption_KeyPairZNoneZ(LDKCResult_COption_KeyPairZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_KeyPairZNoneZ)); }
6583         operator LDKCResult_COption_KeyPairZNoneZ() && { LDKCResult_COption_KeyPairZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_KeyPairZNoneZ)); return res; }
6584         ~CResult_COption_KeyPairZNoneZ() { CResult_COption_KeyPairZNoneZ_free(self); }
6585         CResult_COption_KeyPairZNoneZ& operator=(CResult_COption_KeyPairZNoneZ&& o) { CResult_COption_KeyPairZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_KeyPairZNoneZ)); return *this; }
6586         LDKCResult_COption_KeyPairZNoneZ* operator &() { return &self; }
6587         LDKCResult_COption_KeyPairZNoneZ* operator ->() { return &self; }
6588         const LDKCResult_COption_KeyPairZNoneZ* operator &() const { return &self; }
6589         const LDKCResult_COption_KeyPairZNoneZ* operator ->() const { return &self; }
6590 };
6591 class CVec_ThirtyTwoBytesZ {
6592 private:
6593         LDKCVec_ThirtyTwoBytesZ self;
6594 public:
6595         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
6596         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
6597         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
6598         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
6599         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
6600         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
6601         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
6602         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
6603         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
6604         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
6605 };
6606 class CResult_ClosingSignedDecodeErrorZ {
6607 private:
6608         LDKCResult_ClosingSignedDecodeErrorZ self;
6609 public:
6610         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
6611         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
6612         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
6613         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
6614         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
6615         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
6616         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
6617         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
6618         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
6619         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
6620 };
6621 class CResult_NonePaymentErrorZ {
6622 private:
6623         LDKCResult_NonePaymentErrorZ self;
6624 public:
6625         CResult_NonePaymentErrorZ(const CResult_NonePaymentErrorZ&) = delete;
6626         CResult_NonePaymentErrorZ(CResult_NonePaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentErrorZ)); }
6627         CResult_NonePaymentErrorZ(LDKCResult_NonePaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentErrorZ)); }
6628         operator LDKCResult_NonePaymentErrorZ() && { LDKCResult_NonePaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentErrorZ)); return res; }
6629         ~CResult_NonePaymentErrorZ() { CResult_NonePaymentErrorZ_free(self); }
6630         CResult_NonePaymentErrorZ& operator=(CResult_NonePaymentErrorZ&& o) { CResult_NonePaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentErrorZ)); return *this; }
6631         LDKCResult_NonePaymentErrorZ* operator &() { return &self; }
6632         LDKCResult_NonePaymentErrorZ* operator ->() { return &self; }
6633         const LDKCResult_NonePaymentErrorZ* operator &() const { return &self; }
6634         const LDKCResult_NonePaymentErrorZ* operator ->() const { return &self; }
6635 };
6636 class CVec_CResult_NoneAPIErrorZZ {
6637 private:
6638         LDKCVec_CResult_NoneAPIErrorZZ self;
6639 public:
6640         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
6641         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
6642         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
6643         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
6644         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
6645         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; }
6646         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
6647         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
6648         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
6649         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
6650 };
6651 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
6652 private:
6653         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
6654 public:
6655         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
6656         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
6657         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
6658         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
6659         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
6660         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
6661         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
6662         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
6663         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
6664         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
6665 };
6666 class CVec_RecentPaymentDetailsZ {
6667 private:
6668         LDKCVec_RecentPaymentDetailsZ self;
6669 public:
6670         CVec_RecentPaymentDetailsZ(const CVec_RecentPaymentDetailsZ&) = delete;
6671         CVec_RecentPaymentDetailsZ(CVec_RecentPaymentDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); }
6672         CVec_RecentPaymentDetailsZ(LDKCVec_RecentPaymentDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); }
6673         operator LDKCVec_RecentPaymentDetailsZ() && { LDKCVec_RecentPaymentDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); return res; }
6674         ~CVec_RecentPaymentDetailsZ() { CVec_RecentPaymentDetailsZ_free(self); }
6675         CVec_RecentPaymentDetailsZ& operator=(CVec_RecentPaymentDetailsZ&& o) { CVec_RecentPaymentDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); return *this; }
6676         LDKCVec_RecentPaymentDetailsZ* operator &() { return &self; }
6677         LDKCVec_RecentPaymentDetailsZ* operator ->() { return &self; }
6678         const LDKCVec_RecentPaymentDetailsZ* operator &() const { return &self; }
6679         const LDKCVec_RecentPaymentDetailsZ* operator ->() const { return &self; }
6680 };
6681 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
6682 private:
6683         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
6684 public:
6685         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
6686         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
6687         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
6688         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
6689         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
6690         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; }
6691         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
6692         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
6693         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
6694         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
6695 };
6696 class CVec_RouteHintHopZ {
6697 private:
6698         LDKCVec_RouteHintHopZ self;
6699 public:
6700         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
6701         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
6702         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
6703         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
6704         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
6705         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
6706         LDKCVec_RouteHintHopZ* operator &() { return &self; }
6707         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
6708         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
6709         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
6710 };
6711 class CResult_UntrustedStringDecodeErrorZ {
6712 private:
6713         LDKCResult_UntrustedStringDecodeErrorZ self;
6714 public:
6715         CResult_UntrustedStringDecodeErrorZ(const CResult_UntrustedStringDecodeErrorZ&) = delete;
6716         CResult_UntrustedStringDecodeErrorZ(CResult_UntrustedStringDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UntrustedStringDecodeErrorZ)); }
6717         CResult_UntrustedStringDecodeErrorZ(LDKCResult_UntrustedStringDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UntrustedStringDecodeErrorZ)); }
6718         operator LDKCResult_UntrustedStringDecodeErrorZ() && { LDKCResult_UntrustedStringDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UntrustedStringDecodeErrorZ)); return res; }
6719         ~CResult_UntrustedStringDecodeErrorZ() { CResult_UntrustedStringDecodeErrorZ_free(self); }
6720         CResult_UntrustedStringDecodeErrorZ& operator=(CResult_UntrustedStringDecodeErrorZ&& o) { CResult_UntrustedStringDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UntrustedStringDecodeErrorZ)); return *this; }
6721         LDKCResult_UntrustedStringDecodeErrorZ* operator &() { return &self; }
6722         LDKCResult_UntrustedStringDecodeErrorZ* operator ->() { return &self; }
6723         const LDKCResult_UntrustedStringDecodeErrorZ* operator &() const { return &self; }
6724         const LDKCResult_UntrustedStringDecodeErrorZ* operator ->() const { return &self; }
6725 };
6726 class CVec_U5Z {
6727 private:
6728         LDKCVec_U5Z self;
6729 public:
6730         CVec_U5Z(const CVec_U5Z&) = delete;
6731         CVec_U5Z(CVec_U5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_U5Z)); }
6732         CVec_U5Z(LDKCVec_U5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_U5Z)); }
6733         operator LDKCVec_U5Z() && { LDKCVec_U5Z res = self; memset(&self, 0, sizeof(LDKCVec_U5Z)); return res; }
6734         ~CVec_U5Z() { CVec_U5Z_free(self); }
6735         CVec_U5Z& operator=(CVec_U5Z&& o) { CVec_U5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_U5Z)); return *this; }
6736         LDKCVec_U5Z* operator &() { return &self; }
6737         LDKCVec_U5Z* operator ->() { return &self; }
6738         const LDKCVec_U5Z* operator &() const { return &self; }
6739         const LDKCVec_U5Z* operator ->() const { return &self; }
6740 };
6741 class CResult_PaymentParametersDecodeErrorZ {
6742 private:
6743         LDKCResult_PaymentParametersDecodeErrorZ self;
6744 public:
6745         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
6746         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
6747         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
6748         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
6749         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
6750         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
6751         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
6752         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
6753         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
6754         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
6755 };
6756 class CResult_TxAckRbfDecodeErrorZ {
6757 private:
6758         LDKCResult_TxAckRbfDecodeErrorZ self;
6759 public:
6760         CResult_TxAckRbfDecodeErrorZ(const CResult_TxAckRbfDecodeErrorZ&) = delete;
6761         CResult_TxAckRbfDecodeErrorZ(CResult_TxAckRbfDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAckRbfDecodeErrorZ)); }
6762         CResult_TxAckRbfDecodeErrorZ(LDKCResult_TxAckRbfDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAckRbfDecodeErrorZ)); }
6763         operator LDKCResult_TxAckRbfDecodeErrorZ() && { LDKCResult_TxAckRbfDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAckRbfDecodeErrorZ)); return res; }
6764         ~CResult_TxAckRbfDecodeErrorZ() { CResult_TxAckRbfDecodeErrorZ_free(self); }
6765         CResult_TxAckRbfDecodeErrorZ& operator=(CResult_TxAckRbfDecodeErrorZ&& o) { CResult_TxAckRbfDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAckRbfDecodeErrorZ)); return *this; }
6766         LDKCResult_TxAckRbfDecodeErrorZ* operator &() { return &self; }
6767         LDKCResult_TxAckRbfDecodeErrorZ* operator ->() { return &self; }
6768         const LDKCResult_TxAckRbfDecodeErrorZ* operator &() const { return &self; }
6769         const LDKCResult_TxAckRbfDecodeErrorZ* operator ->() const { return &self; }
6770 };
6771 class CResult_Bolt11InvoiceBolt11SemanticErrorZ {
6772 private:
6773         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ self;
6774 public:
6775         CResult_Bolt11InvoiceBolt11SemanticErrorZ(const CResult_Bolt11InvoiceBolt11SemanticErrorZ&) = delete;
6776         CResult_Bolt11InvoiceBolt11SemanticErrorZ(CResult_Bolt11InvoiceBolt11SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceBolt11SemanticErrorZ)); }
6777         CResult_Bolt11InvoiceBolt11SemanticErrorZ(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ)); }
6778         operator LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ() && { LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ)); return res; }
6779         ~CResult_Bolt11InvoiceBolt11SemanticErrorZ() { CResult_Bolt11InvoiceBolt11SemanticErrorZ_free(self); }
6780         CResult_Bolt11InvoiceBolt11SemanticErrorZ& operator=(CResult_Bolt11InvoiceBolt11SemanticErrorZ&& o) { CResult_Bolt11InvoiceBolt11SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceBolt11SemanticErrorZ)); return *this; }
6781         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator &() { return &self; }
6782         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator ->() { return &self; }
6783         const LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator &() const { return &self; }
6784         const LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator ->() const { return &self; }
6785 };
6786 class COption_UtxoLookupZ {
6787 private:
6788         LDKCOption_UtxoLookupZ self;
6789 public:
6790         COption_UtxoLookupZ(const COption_UtxoLookupZ&) = delete;
6791         COption_UtxoLookupZ(COption_UtxoLookupZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_UtxoLookupZ)); }
6792         COption_UtxoLookupZ(LDKCOption_UtxoLookupZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_UtxoLookupZ)); }
6793         operator LDKCOption_UtxoLookupZ() && { LDKCOption_UtxoLookupZ res = self; memset(&self, 0, sizeof(LDKCOption_UtxoLookupZ)); return res; }
6794         ~COption_UtxoLookupZ() { COption_UtxoLookupZ_free(self); }
6795         COption_UtxoLookupZ& operator=(COption_UtxoLookupZ&& o) { COption_UtxoLookupZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_UtxoLookupZ)); return *this; }
6796         LDKCOption_UtxoLookupZ* operator &() { return &self; }
6797         LDKCOption_UtxoLookupZ* operator ->() { return &self; }
6798         const LDKCOption_UtxoLookupZ* operator &() const { return &self; }
6799         const LDKCOption_UtxoLookupZ* operator ->() const { return &self; }
6800 };
6801 class CResult_PongDecodeErrorZ {
6802 private:
6803         LDKCResult_PongDecodeErrorZ self;
6804 public:
6805         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
6806         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
6807         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
6808         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
6809         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
6810         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
6811         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
6812         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
6813         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
6814         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
6815 };
6816 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
6817 private:
6818         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
6819 public:
6820         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
6821         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
6822         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
6823         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
6824         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
6825         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
6826         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
6827         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
6828         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
6829         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6830 };
6831 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ {
6832 private:
6833         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ self;
6834 public:
6835         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(const C2Tuple_OutPointCVec_MonitorUpdateIdZZ&) = delete;
6836         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(C2Tuple_OutPointCVec_MonitorUpdateIdZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
6837         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
6838         operator LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ() && { LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); return res; }
6839         ~C2Tuple_OutPointCVec_MonitorUpdateIdZZ() { C2Tuple_OutPointCVec_MonitorUpdateIdZZ_free(self); }
6840         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; }
6841         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() { return &self; }
6842         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() { return &self; }
6843         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() const { return &self; }
6844         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() const { return &self; }
6845 };
6846 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
6847 private:
6848         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
6849 public:
6850         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
6851         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
6852         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
6853         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
6854         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
6855         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; }
6856         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
6857         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
6858         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
6859         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
6860 };
6861 class C2Tuple_BlockHashChannelManagerZ {
6862 private:
6863         LDKC2Tuple_BlockHashChannelManagerZ self;
6864 public:
6865         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
6866         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
6867         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
6868         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
6869         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
6870         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
6871         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
6872         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
6873         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
6874         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
6875 };
6876 class CResult_ChannelTransactionParametersDecodeErrorZ {
6877 private:
6878         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
6879 public:
6880         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
6881         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
6882         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
6883         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
6884         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
6885         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
6886         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
6887         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
6888         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
6889         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
6890 };
6891 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ {
6892 private:
6893         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ self;
6894 public:
6895         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(const CResult_WriteableEcdsaChannelSignerDecodeErrorZ&) = delete;
6896         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
6897         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
6898         operator LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ() && { LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return res; }
6899         ~CResult_WriteableEcdsaChannelSignerDecodeErrorZ() { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); }
6900         CResult_WriteableEcdsaChannelSignerDecodeErrorZ& operator=(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return *this; }
6901         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() { return &self; }
6902         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() { return &self; }
6903         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() const { return &self; }
6904         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() const { return &self; }
6905 };
6906 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
6907 private:
6908         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
6909 public:
6910         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
6911         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
6912         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
6913         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
6914         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
6915         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
6916         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6917         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6918         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6919         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6920 };
6921 class C2Tuple_PaymentHashPaymentIdZ {
6922 private:
6923         LDKC2Tuple_PaymentHashPaymentIdZ self;
6924 public:
6925         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
6926         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
6927         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
6928         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
6929         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
6930         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
6931         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
6932         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
6933         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
6934         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
6935 };
6936 class CResult_NoneErrorZ {
6937 private:
6938         LDKCResult_NoneErrorZ self;
6939 public:
6940         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
6941         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
6942         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
6943         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
6944         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
6945         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
6946         LDKCResult_NoneErrorZ* operator &() { return &self; }
6947         LDKCResult_NoneErrorZ* operator ->() { return &self; }
6948         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
6949         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
6950 };
6951 class CResult_InFlightHtlcsDecodeErrorZ {
6952 private:
6953         LDKCResult_InFlightHtlcsDecodeErrorZ self;
6954 public:
6955         CResult_InFlightHtlcsDecodeErrorZ(const CResult_InFlightHtlcsDecodeErrorZ&) = delete;
6956         CResult_InFlightHtlcsDecodeErrorZ(CResult_InFlightHtlcsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); }
6957         CResult_InFlightHtlcsDecodeErrorZ(LDKCResult_InFlightHtlcsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); }
6958         operator LDKCResult_InFlightHtlcsDecodeErrorZ() && { LDKCResult_InFlightHtlcsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); return res; }
6959         ~CResult_InFlightHtlcsDecodeErrorZ() { CResult_InFlightHtlcsDecodeErrorZ_free(self); }
6960         CResult_InFlightHtlcsDecodeErrorZ& operator=(CResult_InFlightHtlcsDecodeErrorZ&& o) { CResult_InFlightHtlcsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); return *this; }
6961         LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() { return &self; }
6962         LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() { return &self; }
6963         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() const { return &self; }
6964         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() const { return &self; }
6965 };
6966 class CResult_COption_HTLCDestinationZDecodeErrorZ {
6967 private:
6968         LDKCResult_COption_HTLCDestinationZDecodeErrorZ self;
6969 public:
6970         CResult_COption_HTLCDestinationZDecodeErrorZ(const CResult_COption_HTLCDestinationZDecodeErrorZ&) = delete;
6971         CResult_COption_HTLCDestinationZDecodeErrorZ(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); }
6972         CResult_COption_HTLCDestinationZDecodeErrorZ(LDKCResult_COption_HTLCDestinationZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); }
6973         operator LDKCResult_COption_HTLCDestinationZDecodeErrorZ() && { LDKCResult_COption_HTLCDestinationZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); return res; }
6974         ~CResult_COption_HTLCDestinationZDecodeErrorZ() { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); }
6975         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; }
6976         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() { return &self; }
6977         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() { return &self; }
6978         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() const { return &self; }
6979         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() const { return &self; }
6980 };
6981 class C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ {
6982 private:
6983         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ self;
6984 public:
6985         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(const C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&) = delete;
6986         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); }
6987         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); }
6988         operator LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ() && { LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); return res; }
6989         ~C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ() { C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ_free(self); }
6990         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ& operator=(C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&& o) { C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); return *this; }
6991         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator &() { return &self; }
6992         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator ->() { return &self; }
6993         const LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator &() const { return &self; }
6994         const LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator ->() const { return &self; }
6995 };
6996 class CResult_BlindedHopDecodeErrorZ {
6997 private:
6998         LDKCResult_BlindedHopDecodeErrorZ self;
6999 public:
7000         CResult_BlindedHopDecodeErrorZ(const CResult_BlindedHopDecodeErrorZ&) = delete;
7001         CResult_BlindedHopDecodeErrorZ(CResult_BlindedHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); }
7002         CResult_BlindedHopDecodeErrorZ(LDKCResult_BlindedHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); }
7003         operator LDKCResult_BlindedHopDecodeErrorZ() && { LDKCResult_BlindedHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); return res; }
7004         ~CResult_BlindedHopDecodeErrorZ() { CResult_BlindedHopDecodeErrorZ_free(self); }
7005         CResult_BlindedHopDecodeErrorZ& operator=(CResult_BlindedHopDecodeErrorZ&& o) { CResult_BlindedHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); return *this; }
7006         LDKCResult_BlindedHopDecodeErrorZ* operator &() { return &self; }
7007         LDKCResult_BlindedHopDecodeErrorZ* operator ->() { return &self; }
7008         const LDKCResult_BlindedHopDecodeErrorZ* operator &() const { return &self; }
7009         const LDKCResult_BlindedHopDecodeErrorZ* operator ->() const { return &self; }
7010 };
7011 class CResult_NoneLightningErrorZ {
7012 private:
7013         LDKCResult_NoneLightningErrorZ self;
7014 public:
7015         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
7016         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
7017         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
7018         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
7019         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
7020         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
7021         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
7022         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
7023         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
7024         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
7025 };
7026 class CResult_FixedPenaltyScorerDecodeErrorZ {
7027 private:
7028         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
7029 public:
7030         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
7031         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
7032         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
7033         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
7034         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
7035         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
7036         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
7037         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
7038         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
7039         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
7040 };
7041 class CVec_BlindedPathZ {
7042 private:
7043         LDKCVec_BlindedPathZ self;
7044 public:
7045         CVec_BlindedPathZ(const CVec_BlindedPathZ&) = delete;
7046         CVec_BlindedPathZ(CVec_BlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BlindedPathZ)); }
7047         CVec_BlindedPathZ(LDKCVec_BlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BlindedPathZ)); }
7048         operator LDKCVec_BlindedPathZ() && { LDKCVec_BlindedPathZ res = self; memset(&self, 0, sizeof(LDKCVec_BlindedPathZ)); return res; }
7049         ~CVec_BlindedPathZ() { CVec_BlindedPathZ_free(self); }
7050         CVec_BlindedPathZ& operator=(CVec_BlindedPathZ&& o) { CVec_BlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BlindedPathZ)); return *this; }
7051         LDKCVec_BlindedPathZ* operator &() { return &self; }
7052         LDKCVec_BlindedPathZ* operator ->() { return &self; }
7053         const LDKCVec_BlindedPathZ* operator &() const { return &self; }
7054         const LDKCVec_BlindedPathZ* operator ->() const { return &self; }
7055 };
7056 class CResult_PaymentHashRetryableSendFailureZ {
7057 private:
7058         LDKCResult_PaymentHashRetryableSendFailureZ self;
7059 public:
7060         CResult_PaymentHashRetryableSendFailureZ(const CResult_PaymentHashRetryableSendFailureZ&) = delete;
7061         CResult_PaymentHashRetryableSendFailureZ(CResult_PaymentHashRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentHashRetryableSendFailureZ)); }
7062         CResult_PaymentHashRetryableSendFailureZ(LDKCResult_PaymentHashRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentHashRetryableSendFailureZ)); }
7063         operator LDKCResult_PaymentHashRetryableSendFailureZ() && { LDKCResult_PaymentHashRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentHashRetryableSendFailureZ)); return res; }
7064         ~CResult_PaymentHashRetryableSendFailureZ() { CResult_PaymentHashRetryableSendFailureZ_free(self); }
7065         CResult_PaymentHashRetryableSendFailureZ& operator=(CResult_PaymentHashRetryableSendFailureZ&& o) { CResult_PaymentHashRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentHashRetryableSendFailureZ)); return *this; }
7066         LDKCResult_PaymentHashRetryableSendFailureZ* operator &() { return &self; }
7067         LDKCResult_PaymentHashRetryableSendFailureZ* operator ->() { return &self; }
7068         const LDKCResult_PaymentHashRetryableSendFailureZ* operator &() const { return &self; }
7069         const LDKCResult_PaymentHashRetryableSendFailureZ* operator ->() const { return &self; }
7070 };
7071 class C2Tuple_PublicKeyCOption_NetAddressZZ {
7072 private:
7073         LDKC2Tuple_PublicKeyCOption_NetAddressZZ self;
7074 public:
7075         C2Tuple_PublicKeyCOption_NetAddressZZ(const C2Tuple_PublicKeyCOption_NetAddressZZ&) = delete;
7076         C2Tuple_PublicKeyCOption_NetAddressZZ(C2Tuple_PublicKeyCOption_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyCOption_NetAddressZZ)); }
7077         C2Tuple_PublicKeyCOption_NetAddressZZ(LDKC2Tuple_PublicKeyCOption_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyCOption_NetAddressZZ)); }
7078         operator LDKC2Tuple_PublicKeyCOption_NetAddressZZ() && { LDKC2Tuple_PublicKeyCOption_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyCOption_NetAddressZZ)); return res; }
7079         ~C2Tuple_PublicKeyCOption_NetAddressZZ() { C2Tuple_PublicKeyCOption_NetAddressZZ_free(self); }
7080         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; }
7081         LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator &() { return &self; }
7082         LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator ->() { return &self; }
7083         const LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator &() const { return &self; }
7084         const LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator ->() const { return &self; }
7085 };
7086 class COption_CVec_NetAddressZZ {
7087 private:
7088         LDKCOption_CVec_NetAddressZZ self;
7089 public:
7090         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
7091         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
7092         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
7093         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
7094         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
7095         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; }
7096         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
7097         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
7098         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
7099         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
7100 };
7101 class CResult_NonePeerHandleErrorZ {
7102 private:
7103         LDKCResult_NonePeerHandleErrorZ self;
7104 public:
7105         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
7106         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
7107         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
7108         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
7109         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
7110         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
7111         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
7112         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
7113         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
7114         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
7115 };
7116 class CResult_TrustedCommitmentTransactionNoneZ {
7117 private:
7118         LDKCResult_TrustedCommitmentTransactionNoneZ self;
7119 public:
7120         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
7121         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
7122         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
7123         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
7124         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
7125         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
7126         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
7127         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
7128         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
7129         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
7130 };
7131 class CResult_CVec_SignatureZNoneZ {
7132 private:
7133         LDKCResult_CVec_SignatureZNoneZ self;
7134 public:
7135         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
7136         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
7137         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
7138         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
7139         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
7140         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; }
7141         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
7142         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
7143         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
7144         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
7145 };
7146 class CResult_PaymentFailureReasonDecodeErrorZ {
7147 private:
7148         LDKCResult_PaymentFailureReasonDecodeErrorZ self;
7149 public:
7150         CResult_PaymentFailureReasonDecodeErrorZ(const CResult_PaymentFailureReasonDecodeErrorZ&) = delete;
7151         CResult_PaymentFailureReasonDecodeErrorZ(CResult_PaymentFailureReasonDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentFailureReasonDecodeErrorZ)); }
7152         CResult_PaymentFailureReasonDecodeErrorZ(LDKCResult_PaymentFailureReasonDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentFailureReasonDecodeErrorZ)); }
7153         operator LDKCResult_PaymentFailureReasonDecodeErrorZ() && { LDKCResult_PaymentFailureReasonDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentFailureReasonDecodeErrorZ)); return res; }
7154         ~CResult_PaymentFailureReasonDecodeErrorZ() { CResult_PaymentFailureReasonDecodeErrorZ_free(self); }
7155         CResult_PaymentFailureReasonDecodeErrorZ& operator=(CResult_PaymentFailureReasonDecodeErrorZ&& o) { CResult_PaymentFailureReasonDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentFailureReasonDecodeErrorZ)); return *this; }
7156         LDKCResult_PaymentFailureReasonDecodeErrorZ* operator &() { return &self; }
7157         LDKCResult_PaymentFailureReasonDecodeErrorZ* operator ->() { return &self; }
7158         const LDKCResult_PaymentFailureReasonDecodeErrorZ* operator &() const { return &self; }
7159         const LDKCResult_PaymentFailureReasonDecodeErrorZ* operator ->() const { return &self; }
7160 };
7161 class CResult__u832APIErrorZ {
7162 private:
7163         LDKCResult__u832APIErrorZ self;
7164 public:
7165         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
7166         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
7167         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
7168         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
7169         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
7170         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
7171         LDKCResult__u832APIErrorZ* operator &() { return &self; }
7172         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
7173         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
7174         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
7175 };
7176 class CResult_COption_MonitorEventZDecodeErrorZ {
7177 private:
7178         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
7179 public:
7180         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
7181         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
7182         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
7183         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
7184         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
7185         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; }
7186         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
7187         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
7188         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
7189         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
7190 };
7191 class CResult_COption_EventZDecodeErrorZ {
7192 private:
7193         LDKCResult_COption_EventZDecodeErrorZ self;
7194 public:
7195         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
7196         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
7197         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
7198         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
7199         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
7200         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; }
7201         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
7202         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
7203         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
7204         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
7205 };
7206 class CResult_RoutingFeesDecodeErrorZ {
7207 private:
7208         LDKCResult_RoutingFeesDecodeErrorZ self;
7209 public:
7210         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
7211         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
7212         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
7213         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
7214         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
7215         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
7216         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
7217         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
7218         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
7219         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
7220 };
7221 class CResult_PayeePubKeyErrorZ {
7222 private:
7223         LDKCResult_PayeePubKeyErrorZ self;
7224 public:
7225         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
7226         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
7227         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
7228         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
7229         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
7230         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
7231         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
7232         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
7233         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
7234         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
7235 };
7236 class CResult_DescriptionCreationErrorZ {
7237 private:
7238         LDKCResult_DescriptionCreationErrorZ self;
7239 public:
7240         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
7241         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
7242         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
7243         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
7244         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
7245         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
7246         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
7247         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
7248         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
7249         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
7250 };
7251 class CResult_PaymentIdPaymentErrorZ {
7252 private:
7253         LDKCResult_PaymentIdPaymentErrorZ self;
7254 public:
7255         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
7256         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
7257         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
7258         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
7259         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
7260         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
7261         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
7262         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
7263         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
7264         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
7265 };
7266 class CResult_QueryShortChannelIdsDecodeErrorZ {
7267 private:
7268         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
7269 public:
7270         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
7271         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
7272         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
7273         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
7274         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
7275         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
7276         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
7277         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
7278         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
7279         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
7280 };
7281 class CResult_UpdateAddHTLCDecodeErrorZ {
7282 private:
7283         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
7284 public:
7285         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
7286         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
7287         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
7288         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
7289         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
7290         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
7291         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
7292         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
7293         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
7294         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
7295 };
7296 class COption_MonitorEventZ {
7297 private:
7298         LDKCOption_MonitorEventZ self;
7299 public:
7300         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
7301         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
7302         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
7303         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
7304         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
7305         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
7306         LDKCOption_MonitorEventZ* operator &() { return &self; }
7307         LDKCOption_MonitorEventZ* operator ->() { return &self; }
7308         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
7309         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
7310 };
7311 class COption_CVec_ChainHashZZ {
7312 private:
7313         LDKCOption_CVec_ChainHashZZ self;
7314 public:
7315         COption_CVec_ChainHashZZ(const COption_CVec_ChainHashZZ&) = delete;
7316         COption_CVec_ChainHashZZ(COption_CVec_ChainHashZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_ChainHashZZ)); }
7317         COption_CVec_ChainHashZZ(LDKCOption_CVec_ChainHashZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_ChainHashZZ)); }
7318         operator LDKCOption_CVec_ChainHashZZ() && { LDKCOption_CVec_ChainHashZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_ChainHashZZ)); return res; }
7319         ~COption_CVec_ChainHashZZ() { COption_CVec_ChainHashZZ_free(self); }
7320         COption_CVec_ChainHashZZ& operator=(COption_CVec_ChainHashZZ&& o) { COption_CVec_ChainHashZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CVec_ChainHashZZ)); return *this; }
7321         LDKCOption_CVec_ChainHashZZ* operator &() { return &self; }
7322         LDKCOption_CVec_ChainHashZZ* operator ->() { return &self; }
7323         const LDKCOption_CVec_ChainHashZZ* operator &() const { return &self; }
7324         const LDKCOption_CVec_ChainHashZZ* operator ->() const { return &self; }
7325 };
7326 class COption_TypeZ {
7327 private:
7328         LDKCOption_TypeZ self;
7329 public:
7330         COption_TypeZ(const COption_TypeZ&) = delete;
7331         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
7332         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
7333         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
7334         ~COption_TypeZ() { COption_TypeZ_free(self); }
7335         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
7336         LDKCOption_TypeZ* operator &() { return &self; }
7337         LDKCOption_TypeZ* operator ->() { return &self; }
7338         const LDKCOption_TypeZ* operator &() const { return &self; }
7339         const LDKCOption_TypeZ* operator ->() const { return &self; }
7340 };
7341 class CResult_COption_TypeZDecodeErrorZ {
7342 private:
7343         LDKCResult_COption_TypeZDecodeErrorZ self;
7344 public:
7345         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
7346         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
7347         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
7348         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
7349         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
7350         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; }
7351         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
7352         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
7353         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
7354         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
7355 };
7356 class COption_KeyPairZ {
7357 private:
7358         LDKCOption_KeyPairZ self;
7359 public:
7360         COption_KeyPairZ(const COption_KeyPairZ&) = delete;
7361         COption_KeyPairZ(COption_KeyPairZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_KeyPairZ)); }
7362         COption_KeyPairZ(LDKCOption_KeyPairZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_KeyPairZ)); }
7363         operator LDKCOption_KeyPairZ() && { LDKCOption_KeyPairZ res = self; memset(&self, 0, sizeof(LDKCOption_KeyPairZ)); return res; }
7364         ~COption_KeyPairZ() { COption_KeyPairZ_free(self); }
7365         COption_KeyPairZ& operator=(COption_KeyPairZ&& o) { COption_KeyPairZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_KeyPairZ)); return *this; }
7366         LDKCOption_KeyPairZ* operator &() { return &self; }
7367         LDKCOption_KeyPairZ* operator ->() { return &self; }
7368         const LDKCOption_KeyPairZ* operator &() const { return &self; }
7369         const LDKCOption_KeyPairZ* operator ->() const { return &self; }
7370 };
7371 class CResult_Bolt11InvoiceSignOrCreationErrorZ {
7372 private:
7373         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ self;
7374 public:
7375         CResult_Bolt11InvoiceSignOrCreationErrorZ(const CResult_Bolt11InvoiceSignOrCreationErrorZ&) = delete;
7376         CResult_Bolt11InvoiceSignOrCreationErrorZ(CResult_Bolt11InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceSignOrCreationErrorZ)); }
7377         CResult_Bolt11InvoiceSignOrCreationErrorZ(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ)); }
7378         operator LDKCResult_Bolt11InvoiceSignOrCreationErrorZ() && { LDKCResult_Bolt11InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ)); return res; }
7379         ~CResult_Bolt11InvoiceSignOrCreationErrorZ() { CResult_Bolt11InvoiceSignOrCreationErrorZ_free(self); }
7380         CResult_Bolt11InvoiceSignOrCreationErrorZ& operator=(CResult_Bolt11InvoiceSignOrCreationErrorZ&& o) { CResult_Bolt11InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceSignOrCreationErrorZ)); return *this; }
7381         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator &() { return &self; }
7382         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
7383         const LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
7384         const LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
7385 };
7386 class COption_ScriptZ {
7387 private:
7388         LDKCOption_ScriptZ self;
7389 public:
7390         COption_ScriptZ(const COption_ScriptZ&) = delete;
7391         COption_ScriptZ(COption_ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ScriptZ)); }
7392         COption_ScriptZ(LDKCOption_ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ScriptZ)); }
7393         operator LDKCOption_ScriptZ() && { LDKCOption_ScriptZ res = self; memset(&self, 0, sizeof(LDKCOption_ScriptZ)); return res; }
7394         ~COption_ScriptZ() { COption_ScriptZ_free(self); }
7395         COption_ScriptZ& operator=(COption_ScriptZ&& o) { COption_ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ScriptZ)); return *this; }
7396         LDKCOption_ScriptZ* operator &() { return &self; }
7397         LDKCOption_ScriptZ* operator ->() { return &self; }
7398         const LDKCOption_ScriptZ* operator &() const { return &self; }
7399         const LDKCOption_ScriptZ* operator ->() const { return &self; }
7400 };
7401 class CResult_UpdateFailHTLCDecodeErrorZ {
7402 private:
7403         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
7404 public:
7405         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
7406         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
7407         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
7408         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
7409         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
7410         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
7411         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
7412         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
7413         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
7414         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
7415 };
7416 class CResult_COption_PathFailureZDecodeErrorZ {
7417 private:
7418         LDKCResult_COption_PathFailureZDecodeErrorZ self;
7419 public:
7420         CResult_COption_PathFailureZDecodeErrorZ(const CResult_COption_PathFailureZDecodeErrorZ&) = delete;
7421         CResult_COption_PathFailureZDecodeErrorZ(CResult_COption_PathFailureZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_PathFailureZDecodeErrorZ)); }
7422         CResult_COption_PathFailureZDecodeErrorZ(LDKCResult_COption_PathFailureZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); }
7423         operator LDKCResult_COption_PathFailureZDecodeErrorZ() && { LDKCResult_COption_PathFailureZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); return res; }
7424         ~CResult_COption_PathFailureZDecodeErrorZ() { CResult_COption_PathFailureZDecodeErrorZ_free(self); }
7425         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; }
7426         LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() { return &self; }
7427         LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() { return &self; }
7428         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() const { return &self; }
7429         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() const { return &self; }
7430 };
7431 class CResult_RevokeAndACKDecodeErrorZ {
7432 private:
7433         LDKCResult_RevokeAndACKDecodeErrorZ self;
7434 public:
7435         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
7436         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
7437         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
7438         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
7439         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
7440         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
7441         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
7442         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
7443         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
7444         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
7445 };
7446 class CResult_SpendableOutputDescriptorDecodeErrorZ {
7447 private:
7448         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
7449 public:
7450         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
7451         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
7452         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
7453         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
7454         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
7455         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
7456         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
7457         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
7458         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
7459         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
7460 };
7461 class CResult_UnsignedChannelUpdateDecodeErrorZ {
7462 private:
7463         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
7464 public:
7465         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
7466         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
7467         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
7468         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
7469         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
7470         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
7471         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
7472         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
7473         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
7474         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
7475 };
7476 class CVec_C2Tuple_u32ScriptZZ {
7477 private:
7478         LDKCVec_C2Tuple_u32ScriptZZ self;
7479 public:
7480         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
7481         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
7482         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
7483         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
7484         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
7485         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; }
7486         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
7487         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
7488         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
7489         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
7490 };
7491 class CResult_InvoiceErrorDecodeErrorZ {
7492 private:
7493         LDKCResult_InvoiceErrorDecodeErrorZ self;
7494 public:
7495         CResult_InvoiceErrorDecodeErrorZ(const CResult_InvoiceErrorDecodeErrorZ&) = delete;
7496         CResult_InvoiceErrorDecodeErrorZ(CResult_InvoiceErrorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceErrorDecodeErrorZ)); }
7497         CResult_InvoiceErrorDecodeErrorZ(LDKCResult_InvoiceErrorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceErrorDecodeErrorZ)); }
7498         operator LDKCResult_InvoiceErrorDecodeErrorZ() && { LDKCResult_InvoiceErrorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceErrorDecodeErrorZ)); return res; }
7499         ~CResult_InvoiceErrorDecodeErrorZ() { CResult_InvoiceErrorDecodeErrorZ_free(self); }
7500         CResult_InvoiceErrorDecodeErrorZ& operator=(CResult_InvoiceErrorDecodeErrorZ&& o) { CResult_InvoiceErrorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceErrorDecodeErrorZ)); return *this; }
7501         LDKCResult_InvoiceErrorDecodeErrorZ* operator &() { return &self; }
7502         LDKCResult_InvoiceErrorDecodeErrorZ* operator ->() { return &self; }
7503         const LDKCResult_InvoiceErrorDecodeErrorZ* operator &() const { return &self; }
7504         const LDKCResult_InvoiceErrorDecodeErrorZ* operator ->() const { return &self; }
7505 };
7506 class CVec_BlindedHopZ {
7507 private:
7508         LDKCVec_BlindedHopZ self;
7509 public:
7510         CVec_BlindedHopZ(const CVec_BlindedHopZ&) = delete;
7511         CVec_BlindedHopZ(CVec_BlindedHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BlindedHopZ)); }
7512         CVec_BlindedHopZ(LDKCVec_BlindedHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BlindedHopZ)); }
7513         operator LDKCVec_BlindedHopZ() && { LDKCVec_BlindedHopZ res = self; memset(&self, 0, sizeof(LDKCVec_BlindedHopZ)); return res; }
7514         ~CVec_BlindedHopZ() { CVec_BlindedHopZ_free(self); }
7515         CVec_BlindedHopZ& operator=(CVec_BlindedHopZ&& o) { CVec_BlindedHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BlindedHopZ)); return *this; }
7516         LDKCVec_BlindedHopZ* operator &() { return &self; }
7517         LDKCVec_BlindedHopZ* operator ->() { return &self; }
7518         const LDKCVec_BlindedHopZ* operator &() const { return &self; }
7519         const LDKCVec_BlindedHopZ* operator ->() const { return &self; }
7520 };
7521 class CResult_PaymentHashPaymentSendFailureZ {
7522 private:
7523         LDKCResult_PaymentHashPaymentSendFailureZ self;
7524 public:
7525         CResult_PaymentHashPaymentSendFailureZ(const CResult_PaymentHashPaymentSendFailureZ&) = delete;
7526         CResult_PaymentHashPaymentSendFailureZ(CResult_PaymentHashPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); }
7527         CResult_PaymentHashPaymentSendFailureZ(LDKCResult_PaymentHashPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); }
7528         operator LDKCResult_PaymentHashPaymentSendFailureZ() && { LDKCResult_PaymentHashPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); return res; }
7529         ~CResult_PaymentHashPaymentSendFailureZ() { CResult_PaymentHashPaymentSendFailureZ_free(self); }
7530         CResult_PaymentHashPaymentSendFailureZ& operator=(CResult_PaymentHashPaymentSendFailureZ&& o) { CResult_PaymentHashPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); return *this; }
7531         LDKCResult_PaymentHashPaymentSendFailureZ* operator &() { return &self; }
7532         LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() { return &self; }
7533         const LDKCResult_PaymentHashPaymentSendFailureZ* operator &() const { return &self; }
7534         const LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() const { return &self; }
7535 };
7536 class CResult_COption_ClosureReasonZDecodeErrorZ {
7537 private:
7538         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
7539 public:
7540         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
7541         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
7542         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
7543         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
7544         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
7545         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; }
7546         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
7547         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
7548         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
7549         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
7550 };
7551 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
7552 private:
7553         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
7554 public:
7555         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
7556         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
7557         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
7558         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
7559         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
7560         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
7561         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
7562         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
7563         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
7564         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
7565 };
7566 class CResult_RouteParametersDecodeErrorZ {
7567 private:
7568         LDKCResult_RouteParametersDecodeErrorZ self;
7569 public:
7570         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
7571         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
7572         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
7573         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
7574         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
7575         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
7576         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
7577         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
7578         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
7579         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
7580 };
7581 class CResult_PrivateRouteCreationErrorZ {
7582 private:
7583         LDKCResult_PrivateRouteCreationErrorZ self;
7584 public:
7585         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
7586         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
7587         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
7588         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
7589         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
7590         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
7591         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
7592         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
7593         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
7594         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
7595 };
7596 class CResult_NodeAliasDecodeErrorZ {
7597 private:
7598         LDKCResult_NodeAliasDecodeErrorZ self;
7599 public:
7600         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
7601         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
7602         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
7603         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
7604         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
7605         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
7606         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
7607         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
7608         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
7609         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
7610 };
7611 class CVec_UpdateFulfillHTLCZ {
7612 private:
7613         LDKCVec_UpdateFulfillHTLCZ self;
7614 public:
7615         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
7616         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
7617         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
7618         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
7619         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
7620         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
7621         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
7622         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
7623         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
7624         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
7625 };
7626 class CResult_AnnouncementSignaturesDecodeErrorZ {
7627 private:
7628         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
7629 public:
7630         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
7631         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
7632         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
7633         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
7634         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
7635         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
7636         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
7637         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
7638         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
7639         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
7640 };
7641 class CResult_UpdateFulfillHTLCDecodeErrorZ {
7642 private:
7643         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
7644 public:
7645         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
7646         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
7647         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
7648         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
7649         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
7650         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
7651         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
7652         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
7653         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
7654         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
7655 };
7656 class CResult_TxCompleteDecodeErrorZ {
7657 private:
7658         LDKCResult_TxCompleteDecodeErrorZ self;
7659 public:
7660         CResult_TxCompleteDecodeErrorZ(const CResult_TxCompleteDecodeErrorZ&) = delete;
7661         CResult_TxCompleteDecodeErrorZ(CResult_TxCompleteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCompleteDecodeErrorZ)); }
7662         CResult_TxCompleteDecodeErrorZ(LDKCResult_TxCompleteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCompleteDecodeErrorZ)); }
7663         operator LDKCResult_TxCompleteDecodeErrorZ() && { LDKCResult_TxCompleteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCompleteDecodeErrorZ)); return res; }
7664         ~CResult_TxCompleteDecodeErrorZ() { CResult_TxCompleteDecodeErrorZ_free(self); }
7665         CResult_TxCompleteDecodeErrorZ& operator=(CResult_TxCompleteDecodeErrorZ&& o) { CResult_TxCompleteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCompleteDecodeErrorZ)); return *this; }
7666         LDKCResult_TxCompleteDecodeErrorZ* operator &() { return &self; }
7667         LDKCResult_TxCompleteDecodeErrorZ* operator ->() { return &self; }
7668         const LDKCResult_TxCompleteDecodeErrorZ* operator &() const { return &self; }
7669         const LDKCResult_TxCompleteDecodeErrorZ* operator ->() const { return &self; }
7670 };
7671 class CResult_NodeFeaturesDecodeErrorZ {
7672 private:
7673         LDKCResult_NodeFeaturesDecodeErrorZ self;
7674 public:
7675         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
7676         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
7677         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
7678         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
7679         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
7680         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
7681         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
7682         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
7683         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
7684         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
7685 };
7686 class CResult_InMemorySignerDecodeErrorZ {
7687 private:
7688         LDKCResult_InMemorySignerDecodeErrorZ self;
7689 public:
7690         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
7691         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
7692         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
7693         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
7694         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
7695         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
7696         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
7697         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
7698         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
7699         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
7700 };
7701 class CResult_TxSignaturesDecodeErrorZ {
7702 private:
7703         LDKCResult_TxSignaturesDecodeErrorZ self;
7704 public:
7705         CResult_TxSignaturesDecodeErrorZ(const CResult_TxSignaturesDecodeErrorZ&) = delete;
7706         CResult_TxSignaturesDecodeErrorZ(CResult_TxSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxSignaturesDecodeErrorZ)); }
7707         CResult_TxSignaturesDecodeErrorZ(LDKCResult_TxSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxSignaturesDecodeErrorZ)); }
7708         operator LDKCResult_TxSignaturesDecodeErrorZ() && { LDKCResult_TxSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxSignaturesDecodeErrorZ)); return res; }
7709         ~CResult_TxSignaturesDecodeErrorZ() { CResult_TxSignaturesDecodeErrorZ_free(self); }
7710         CResult_TxSignaturesDecodeErrorZ& operator=(CResult_TxSignaturesDecodeErrorZ&& o) { CResult_TxSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxSignaturesDecodeErrorZ)); return *this; }
7711         LDKCResult_TxSignaturesDecodeErrorZ* operator &() { return &self; }
7712         LDKCResult_TxSignaturesDecodeErrorZ* operator ->() { return &self; }
7713         const LDKCResult_TxSignaturesDecodeErrorZ* operator &() const { return &self; }
7714         const LDKCResult_TxSignaturesDecodeErrorZ* operator ->() const { return &self; }
7715 };
7716 class CVec_HTLCDescriptorZ {
7717 private:
7718         LDKCVec_HTLCDescriptorZ self;
7719 public:
7720         CVec_HTLCDescriptorZ(const CVec_HTLCDescriptorZ&) = delete;
7721         CVec_HTLCDescriptorZ(CVec_HTLCDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_HTLCDescriptorZ)); }
7722         CVec_HTLCDescriptorZ(LDKCVec_HTLCDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_HTLCDescriptorZ)); }
7723         operator LDKCVec_HTLCDescriptorZ() && { LDKCVec_HTLCDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_HTLCDescriptorZ)); return res; }
7724         ~CVec_HTLCDescriptorZ() { CVec_HTLCDescriptorZ_free(self); }
7725         CVec_HTLCDescriptorZ& operator=(CVec_HTLCDescriptorZ&& o) { CVec_HTLCDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_HTLCDescriptorZ)); return *this; }
7726         LDKCVec_HTLCDescriptorZ* operator &() { return &self; }
7727         LDKCVec_HTLCDescriptorZ* operator ->() { return &self; }
7728         const LDKCVec_HTLCDescriptorZ* operator &() const { return &self; }
7729         const LDKCVec_HTLCDescriptorZ* operator ->() const { return &self; }
7730 };
7731 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
7732 private:
7733         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
7734 public:
7735         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
7736         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
7737         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
7738         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
7739         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
7740         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
7741         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
7742         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
7743         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
7744         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
7745 };
7746 class COption_ScalarZ {
7747 private:
7748         LDKCOption_ScalarZ self;
7749 public:
7750         COption_ScalarZ(const COption_ScalarZ&) = delete;
7751         COption_ScalarZ(COption_ScalarZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ScalarZ)); }
7752         COption_ScalarZ(LDKCOption_ScalarZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ScalarZ)); }
7753         operator LDKCOption_ScalarZ() && { LDKCOption_ScalarZ res = self; memset(&self, 0, sizeof(LDKCOption_ScalarZ)); return res; }
7754         ~COption_ScalarZ() { COption_ScalarZ_free(self); }
7755         COption_ScalarZ& operator=(COption_ScalarZ&& o) { COption_ScalarZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ScalarZ)); return *this; }
7756         LDKCOption_ScalarZ* operator &() { return &self; }
7757         LDKCOption_ScalarZ* operator ->() { return &self; }
7758         const LDKCOption_ScalarZ* operator &() const { return &self; }
7759         const LDKCOption_ScalarZ* operator ->() const { return &self; }
7760 };
7761 class COption_PathFailureZ {
7762 private:
7763         LDKCOption_PathFailureZ self;
7764 public:
7765         COption_PathFailureZ(const COption_PathFailureZ&) = delete;
7766         COption_PathFailureZ(COption_PathFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PathFailureZ)); }
7767         COption_PathFailureZ(LDKCOption_PathFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PathFailureZ)); }
7768         operator LDKCOption_PathFailureZ() && { LDKCOption_PathFailureZ res = self; memset(&self, 0, sizeof(LDKCOption_PathFailureZ)); return res; }
7769         ~COption_PathFailureZ() { COption_PathFailureZ_free(self); }
7770         COption_PathFailureZ& operator=(COption_PathFailureZ&& o) { COption_PathFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PathFailureZ)); return *this; }
7771         LDKCOption_PathFailureZ* operator &() { return &self; }
7772         LDKCOption_PathFailureZ* operator ->() { return &self; }
7773         const LDKCOption_PathFailureZ* operator &() const { return &self; }
7774         const LDKCOption_PathFailureZ* operator ->() const { return &self; }
7775 };
7776 class CResult_ChannelUpdateInfoDecodeErrorZ {
7777 private:
7778         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
7779 public:
7780         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
7781         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
7782         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
7783         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
7784         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
7785         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
7786         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
7787         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
7788         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
7789         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
7790 };
7791 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
7792 private:
7793         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
7794 public:
7795         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
7796         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
7797         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
7798         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
7799         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
7800         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; }
7801         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
7802         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
7803         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
7804         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
7805 };
7806 class CVec_UpdateFailHTLCZ {
7807 private:
7808         LDKCVec_UpdateFailHTLCZ self;
7809 public:
7810         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
7811         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
7812         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
7813         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
7814         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
7815         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
7816         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
7817         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
7818         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
7819         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
7820 };
7821 class CVec_TxOutZ {
7822 private:
7823         LDKCVec_TxOutZ self;
7824 public:
7825         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
7826         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
7827         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
7828         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
7829         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
7830         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
7831         LDKCVec_TxOutZ* operator &() { return &self; }
7832         LDKCVec_TxOutZ* operator ->() { return &self; }
7833         const LDKCVec_TxOutZ* operator &() const { return &self; }
7834         const LDKCVec_TxOutZ* operator ->() const { return &self; }
7835 };
7836 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
7837 private:
7838         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
7839 public:
7840         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
7841         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
7842         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
7843         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
7844         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
7845         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
7846         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
7847         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
7848         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
7849         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
7850 };
7851 class CVec_SpendableOutputDescriptorZ {
7852 private:
7853         LDKCVec_SpendableOutputDescriptorZ self;
7854 public:
7855         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
7856         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
7857         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
7858         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
7859         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
7860         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
7861         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
7862         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
7863         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
7864         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
7865 };
7866 class COption_C2Tuple_u64u64ZZ {
7867 private:
7868         LDKCOption_C2Tuple_u64u64ZZ self;
7869 public:
7870         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
7871         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
7872         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
7873         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
7874         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
7875         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; }
7876         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
7877         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
7878         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
7879         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
7880 };
7881 class CResult_ChannelAnnouncementDecodeErrorZ {
7882 private:
7883         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
7884 public:
7885         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
7886         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
7887         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
7888         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
7889         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
7890         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
7891         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
7892         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
7893         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
7894         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
7895 };
7896 class CResult_HTLCUpdateDecodeErrorZ {
7897 private:
7898         LDKCResult_HTLCUpdateDecodeErrorZ self;
7899 public:
7900         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
7901         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
7902         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
7903         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
7904         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
7905         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
7906         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
7907         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
7908         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
7909         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
7910 };
7911 class C2Tuple_SignatureCVec_SignatureZZ {
7912 private:
7913         LDKC2Tuple_SignatureCVec_SignatureZZ self;
7914 public:
7915         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
7916         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
7917         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
7918         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
7919         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
7920         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; }
7921         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
7922         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
7923         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
7924         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
7925 };
7926 class C2Tuple_PartiallySignedTransactionusizeZ {
7927 private:
7928         LDKC2Tuple_PartiallySignedTransactionusizeZ self;
7929 public:
7930         C2Tuple_PartiallySignedTransactionusizeZ(const C2Tuple_PartiallySignedTransactionusizeZ&) = delete;
7931         C2Tuple_PartiallySignedTransactionusizeZ(C2Tuple_PartiallySignedTransactionusizeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PartiallySignedTransactionusizeZ)); }
7932         C2Tuple_PartiallySignedTransactionusizeZ(LDKC2Tuple_PartiallySignedTransactionusizeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PartiallySignedTransactionusizeZ)); }
7933         operator LDKC2Tuple_PartiallySignedTransactionusizeZ() && { LDKC2Tuple_PartiallySignedTransactionusizeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PartiallySignedTransactionusizeZ)); return res; }
7934         ~C2Tuple_PartiallySignedTransactionusizeZ() { C2Tuple_PartiallySignedTransactionusizeZ_free(self); }
7935         C2Tuple_PartiallySignedTransactionusizeZ& operator=(C2Tuple_PartiallySignedTransactionusizeZ&& o) { C2Tuple_PartiallySignedTransactionusizeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PartiallySignedTransactionusizeZ)); return *this; }
7936         LDKC2Tuple_PartiallySignedTransactionusizeZ* operator &() { return &self; }
7937         LDKC2Tuple_PartiallySignedTransactionusizeZ* operator ->() { return &self; }
7938         const LDKC2Tuple_PartiallySignedTransactionusizeZ* operator &() const { return &self; }
7939         const LDKC2Tuple_PartiallySignedTransactionusizeZ* operator ->() const { return &self; }
7940 };
7941 class CResult_TxAddInputDecodeErrorZ {
7942 private:
7943         LDKCResult_TxAddInputDecodeErrorZ self;
7944 public:
7945         CResult_TxAddInputDecodeErrorZ(const CResult_TxAddInputDecodeErrorZ&) = delete;
7946         CResult_TxAddInputDecodeErrorZ(CResult_TxAddInputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAddInputDecodeErrorZ)); }
7947         CResult_TxAddInputDecodeErrorZ(LDKCResult_TxAddInputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAddInputDecodeErrorZ)); }
7948         operator LDKCResult_TxAddInputDecodeErrorZ() && { LDKCResult_TxAddInputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAddInputDecodeErrorZ)); return res; }
7949         ~CResult_TxAddInputDecodeErrorZ() { CResult_TxAddInputDecodeErrorZ_free(self); }
7950         CResult_TxAddInputDecodeErrorZ& operator=(CResult_TxAddInputDecodeErrorZ&& o) { CResult_TxAddInputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAddInputDecodeErrorZ)); return *this; }
7951         LDKCResult_TxAddInputDecodeErrorZ* operator &() { return &self; }
7952         LDKCResult_TxAddInputDecodeErrorZ* operator ->() { return &self; }
7953         const LDKCResult_TxAddInputDecodeErrorZ* operator &() const { return &self; }
7954         const LDKCResult_TxAddInputDecodeErrorZ* operator ->() const { return &self; }
7955 };
7956 class COption_WriteableScoreZ {
7957 private:
7958         LDKCOption_WriteableScoreZ self;
7959 public:
7960         COption_WriteableScoreZ(const COption_WriteableScoreZ&) = delete;
7961         COption_WriteableScoreZ(COption_WriteableScoreZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_WriteableScoreZ)); }
7962         COption_WriteableScoreZ(LDKCOption_WriteableScoreZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_WriteableScoreZ)); }
7963         operator LDKCOption_WriteableScoreZ() && { LDKCOption_WriteableScoreZ res = self; memset(&self, 0, sizeof(LDKCOption_WriteableScoreZ)); return res; }
7964         ~COption_WriteableScoreZ() { COption_WriteableScoreZ_free(self); }
7965         COption_WriteableScoreZ& operator=(COption_WriteableScoreZ&& o) { COption_WriteableScoreZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_WriteableScoreZ)); return *this; }
7966         LDKCOption_WriteableScoreZ* operator &() { return &self; }
7967         LDKCOption_WriteableScoreZ* operator ->() { return &self; }
7968         const LDKCOption_WriteableScoreZ* operator &() const { return &self; }
7969         const LDKCOption_WriteableScoreZ* operator ->() const { return &self; }
7970 };
7971 class CResult_TxInitRbfDecodeErrorZ {
7972 private:
7973         LDKCResult_TxInitRbfDecodeErrorZ self;
7974 public:
7975         CResult_TxInitRbfDecodeErrorZ(const CResult_TxInitRbfDecodeErrorZ&) = delete;
7976         CResult_TxInitRbfDecodeErrorZ(CResult_TxInitRbfDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxInitRbfDecodeErrorZ)); }
7977         CResult_TxInitRbfDecodeErrorZ(LDKCResult_TxInitRbfDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxInitRbfDecodeErrorZ)); }
7978         operator LDKCResult_TxInitRbfDecodeErrorZ() && { LDKCResult_TxInitRbfDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxInitRbfDecodeErrorZ)); return res; }
7979         ~CResult_TxInitRbfDecodeErrorZ() { CResult_TxInitRbfDecodeErrorZ_free(self); }
7980         CResult_TxInitRbfDecodeErrorZ& operator=(CResult_TxInitRbfDecodeErrorZ&& o) { CResult_TxInitRbfDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxInitRbfDecodeErrorZ)); return *this; }
7981         LDKCResult_TxInitRbfDecodeErrorZ* operator &() { return &self; }
7982         LDKCResult_TxInitRbfDecodeErrorZ* operator ->() { return &self; }
7983         const LDKCResult_TxInitRbfDecodeErrorZ* operator &() const { return &self; }
7984         const LDKCResult_TxInitRbfDecodeErrorZ* operator ->() const { return &self; }
7985 };
7986 class CVec_OutPointZ {
7987 private:
7988         LDKCVec_OutPointZ self;
7989 public:
7990         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
7991         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
7992         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
7993         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
7994         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
7995         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
7996         LDKCVec_OutPointZ* operator &() { return &self; }
7997         LDKCVec_OutPointZ* operator ->() { return &self; }
7998         const LDKCVec_OutPointZ* operator &() const { return &self; }
7999         const LDKCVec_OutPointZ* operator ->() const { return &self; }
8000 };
8001 class CResult_PositiveTimestampCreationErrorZ {
8002 private:
8003         LDKCResult_PositiveTimestampCreationErrorZ self;
8004 public:
8005         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
8006         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
8007         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
8008         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
8009         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
8010         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
8011         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
8012         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
8013         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
8014         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
8015 };
8016 class C2Tuple__u168_u168Z {
8017 private:
8018         LDKC2Tuple__u168_u168Z self;
8019 public:
8020         C2Tuple__u168_u168Z(const C2Tuple__u168_u168Z&) = delete;
8021         C2Tuple__u168_u168Z(C2Tuple__u168_u168Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple__u168_u168Z)); }
8022         C2Tuple__u168_u168Z(LDKC2Tuple__u168_u168Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple__u168_u168Z)); }
8023         operator LDKC2Tuple__u168_u168Z() && { LDKC2Tuple__u168_u168Z res = self; memset(&self, 0, sizeof(LDKC2Tuple__u168_u168Z)); return res; }
8024         ~C2Tuple__u168_u168Z() { C2Tuple__u168_u168Z_free(self); }
8025         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; }
8026         LDKC2Tuple__u168_u168Z* operator &() { return &self; }
8027         LDKC2Tuple__u168_u168Z* operator ->() { return &self; }
8028         const LDKC2Tuple__u168_u168Z* operator &() const { return &self; }
8029         const LDKC2Tuple__u168_u168Z* operator ->() const { return &self; }
8030 };
8031 class CResult_ChannelMonitorUpdateDecodeErrorZ {
8032 private:
8033         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
8034 public:
8035         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
8036         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
8037         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
8038         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
8039         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
8040         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
8041         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
8042         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
8043         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
8044         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
8045 };
8046 class C2Tuple_BlindedPayInfoBlindedPathZ {
8047 private:
8048         LDKC2Tuple_BlindedPayInfoBlindedPathZ self;
8049 public:
8050         C2Tuple_BlindedPayInfoBlindedPathZ(const C2Tuple_BlindedPayInfoBlindedPathZ&) = delete;
8051         C2Tuple_BlindedPayInfoBlindedPathZ(C2Tuple_BlindedPayInfoBlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlindedPayInfoBlindedPathZ)); }
8052         C2Tuple_BlindedPayInfoBlindedPathZ(LDKC2Tuple_BlindedPayInfoBlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlindedPayInfoBlindedPathZ)); }
8053         operator LDKC2Tuple_BlindedPayInfoBlindedPathZ() && { LDKC2Tuple_BlindedPayInfoBlindedPathZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlindedPayInfoBlindedPathZ)); return res; }
8054         ~C2Tuple_BlindedPayInfoBlindedPathZ() { C2Tuple_BlindedPayInfoBlindedPathZ_free(self); }
8055         C2Tuple_BlindedPayInfoBlindedPathZ& operator=(C2Tuple_BlindedPayInfoBlindedPathZ&& o) { C2Tuple_BlindedPayInfoBlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlindedPayInfoBlindedPathZ)); return *this; }
8056         LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator &() { return &self; }
8057         LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator ->() { return &self; }
8058         const LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator &() const { return &self; }
8059         const LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator ->() const { return &self; }
8060 };
8061 class CResult_ReplyChannelRangeDecodeErrorZ {
8062 private:
8063         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
8064 public:
8065         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
8066         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
8067         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
8068         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
8069         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
8070         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
8071         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
8072         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
8073         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
8074         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
8075 };
8076 class COption_PaymentPreimageZ {
8077 private:
8078         LDKCOption_PaymentPreimageZ self;
8079 public:
8080         COption_PaymentPreimageZ(const COption_PaymentPreimageZ&) = delete;
8081         COption_PaymentPreimageZ(COption_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentPreimageZ)); }
8082         COption_PaymentPreimageZ(LDKCOption_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentPreimageZ)); }
8083         operator LDKCOption_PaymentPreimageZ() && { LDKCOption_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentPreimageZ)); return res; }
8084         ~COption_PaymentPreimageZ() { COption_PaymentPreimageZ_free(self); }
8085         COption_PaymentPreimageZ& operator=(COption_PaymentPreimageZ&& o) { COption_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentPreimageZ)); return *this; }
8086         LDKCOption_PaymentPreimageZ* operator &() { return &self; }
8087         LDKCOption_PaymentPreimageZ* operator ->() { return &self; }
8088         const LDKCOption_PaymentPreimageZ* operator &() const { return &self; }
8089         const LDKCOption_PaymentPreimageZ* operator ->() const { return &self; }
8090 };
8091 class CResult_NetAddressDecodeErrorZ {
8092 private:
8093         LDKCResult_NetAddressDecodeErrorZ self;
8094 public:
8095         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
8096         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
8097         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
8098         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
8099         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
8100         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
8101         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
8102         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
8103         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
8104         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
8105 };
8106 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
8107 private:
8108         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
8109 public:
8110         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
8111         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
8112         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
8113         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
8114         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
8115         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
8116         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
8117         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
8118         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
8119         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
8120 };
8121 class C2Tuple_PublicKeyTypeZ {
8122 private:
8123         LDKC2Tuple_PublicKeyTypeZ self;
8124 public:
8125         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
8126         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
8127         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
8128         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
8129         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
8130         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
8131         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
8132         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
8133         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
8134         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
8135 };
8136 class CResult_TxRemoveOutputDecodeErrorZ {
8137 private:
8138         LDKCResult_TxRemoveOutputDecodeErrorZ self;
8139 public:
8140         CResult_TxRemoveOutputDecodeErrorZ(const CResult_TxRemoveOutputDecodeErrorZ&) = delete;
8141         CResult_TxRemoveOutputDecodeErrorZ(CResult_TxRemoveOutputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxRemoveOutputDecodeErrorZ)); }
8142         CResult_TxRemoveOutputDecodeErrorZ(LDKCResult_TxRemoveOutputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxRemoveOutputDecodeErrorZ)); }
8143         operator LDKCResult_TxRemoveOutputDecodeErrorZ() && { LDKCResult_TxRemoveOutputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxRemoveOutputDecodeErrorZ)); return res; }
8144         ~CResult_TxRemoveOutputDecodeErrorZ() { CResult_TxRemoveOutputDecodeErrorZ_free(self); }
8145         CResult_TxRemoveOutputDecodeErrorZ& operator=(CResult_TxRemoveOutputDecodeErrorZ&& o) { CResult_TxRemoveOutputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxRemoveOutputDecodeErrorZ)); return *this; }
8146         LDKCResult_TxRemoveOutputDecodeErrorZ* operator &() { return &self; }
8147         LDKCResult_TxRemoveOutputDecodeErrorZ* operator ->() { return &self; }
8148         const LDKCResult_TxRemoveOutputDecodeErrorZ* operator &() const { return &self; }
8149         const LDKCResult_TxRemoveOutputDecodeErrorZ* operator ->() const { return &self; }
8150 };
8151 class CResult_ChannelReestablishDecodeErrorZ {
8152 private:
8153         LDKCResult_ChannelReestablishDecodeErrorZ self;
8154 public:
8155         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
8156         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
8157         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
8158         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
8159         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
8160         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
8161         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
8162         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
8163         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
8164         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
8165 };
8166 class CResult_ScriptNoneZ {
8167 private:
8168         LDKCResult_ScriptNoneZ self;
8169 public:
8170         CResult_ScriptNoneZ(const CResult_ScriptNoneZ&) = delete;
8171         CResult_ScriptNoneZ(CResult_ScriptNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ScriptNoneZ)); }
8172         CResult_ScriptNoneZ(LDKCResult_ScriptNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ScriptNoneZ)); }
8173         operator LDKCResult_ScriptNoneZ() && { LDKCResult_ScriptNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ScriptNoneZ)); return res; }
8174         ~CResult_ScriptNoneZ() { CResult_ScriptNoneZ_free(self); }
8175         CResult_ScriptNoneZ& operator=(CResult_ScriptNoneZ&& o) { CResult_ScriptNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ScriptNoneZ)); return *this; }
8176         LDKCResult_ScriptNoneZ* operator &() { return &self; }
8177         LDKCResult_ScriptNoneZ* operator ->() { return &self; }
8178         const LDKCResult_ScriptNoneZ* operator &() const { return &self; }
8179         const LDKCResult_ScriptNoneZ* operator ->() const { return &self; }
8180 };
8181 class CResult_OnionMessageDecodeErrorZ {
8182 private:
8183         LDKCResult_OnionMessageDecodeErrorZ self;
8184 public:
8185         CResult_OnionMessageDecodeErrorZ(const CResult_OnionMessageDecodeErrorZ&) = delete;
8186         CResult_OnionMessageDecodeErrorZ(CResult_OnionMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); }
8187         CResult_OnionMessageDecodeErrorZ(LDKCResult_OnionMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); }
8188         operator LDKCResult_OnionMessageDecodeErrorZ() && { LDKCResult_OnionMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); return res; }
8189         ~CResult_OnionMessageDecodeErrorZ() { CResult_OnionMessageDecodeErrorZ_free(self); }
8190         CResult_OnionMessageDecodeErrorZ& operator=(CResult_OnionMessageDecodeErrorZ&& o) { CResult_OnionMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); return *this; }
8191         LDKCResult_OnionMessageDecodeErrorZ* operator &() { return &self; }
8192         LDKCResult_OnionMessageDecodeErrorZ* operator ->() { return &self; }
8193         const LDKCResult_OnionMessageDecodeErrorZ* operator &() const { return &self; }
8194         const LDKCResult_OnionMessageDecodeErrorZ* operator ->() const { return &self; }
8195 };
8196 class CResult_TrustedClosingTransactionNoneZ {
8197 private:
8198         LDKCResult_TrustedClosingTransactionNoneZ self;
8199 public:
8200         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
8201         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
8202         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
8203         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
8204         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
8205         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
8206         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
8207         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
8208         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
8209         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
8210 };
8211 class CResult_Bolt11InvoiceParseOrSemanticErrorZ {
8212 private:
8213         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ self;
8214 public:
8215         CResult_Bolt11InvoiceParseOrSemanticErrorZ(const CResult_Bolt11InvoiceParseOrSemanticErrorZ&) = delete;
8216         CResult_Bolt11InvoiceParseOrSemanticErrorZ(CResult_Bolt11InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceParseOrSemanticErrorZ)); }
8217         CResult_Bolt11InvoiceParseOrSemanticErrorZ(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ)); }
8218         operator LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ() && { LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ)); return res; }
8219         ~CResult_Bolt11InvoiceParseOrSemanticErrorZ() { CResult_Bolt11InvoiceParseOrSemanticErrorZ_free(self); }
8220         CResult_Bolt11InvoiceParseOrSemanticErrorZ& operator=(CResult_Bolt11InvoiceParseOrSemanticErrorZ&& o) { CResult_Bolt11InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceParseOrSemanticErrorZ)); return *this; }
8221         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
8222         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
8223         const LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
8224         const LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
8225 };
8226 class CResult_InitFeaturesDecodeErrorZ {
8227 private:
8228         LDKCResult_InitFeaturesDecodeErrorZ self;
8229 public:
8230         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
8231         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
8232         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
8233         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
8234         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
8235         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
8236         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
8237         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
8238         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
8239         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
8240 };
8241 class CResult_PublicKeyNoneZ {
8242 private:
8243         LDKCResult_PublicKeyNoneZ self;
8244 public:
8245         CResult_PublicKeyNoneZ(const CResult_PublicKeyNoneZ&) = delete;
8246         CResult_PublicKeyNoneZ(CResult_PublicKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); }
8247         CResult_PublicKeyNoneZ(LDKCResult_PublicKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); }
8248         operator LDKCResult_PublicKeyNoneZ() && { LDKCResult_PublicKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); return res; }
8249         ~CResult_PublicKeyNoneZ() { CResult_PublicKeyNoneZ_free(self); }
8250         CResult_PublicKeyNoneZ& operator=(CResult_PublicKeyNoneZ&& o) { CResult_PublicKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); return *this; }
8251         LDKCResult_PublicKeyNoneZ* operator &() { return &self; }
8252         LDKCResult_PublicKeyNoneZ* operator ->() { return &self; }
8253         const LDKCResult_PublicKeyNoneZ* operator &() const { return &self; }
8254         const LDKCResult_PublicKeyNoneZ* operator ->() const { return &self; }
8255 };
8256 class CResult_PingDecodeErrorZ {
8257 private:
8258         LDKCResult_PingDecodeErrorZ self;
8259 public:
8260         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
8261         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
8262         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
8263         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
8264         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
8265         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
8266         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
8267         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
8268         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
8269         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
8270 };
8271 class CResult_BlindedHopFeaturesDecodeErrorZ {
8272 private:
8273         LDKCResult_BlindedHopFeaturesDecodeErrorZ self;
8274 public:
8275         CResult_BlindedHopFeaturesDecodeErrorZ(const CResult_BlindedHopFeaturesDecodeErrorZ&) = delete;
8276         CResult_BlindedHopFeaturesDecodeErrorZ(CResult_BlindedHopFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); }
8277         CResult_BlindedHopFeaturesDecodeErrorZ(LDKCResult_BlindedHopFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); }
8278         operator LDKCResult_BlindedHopFeaturesDecodeErrorZ() && { LDKCResult_BlindedHopFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); return res; }
8279         ~CResult_BlindedHopFeaturesDecodeErrorZ() { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); }
8280         CResult_BlindedHopFeaturesDecodeErrorZ& operator=(CResult_BlindedHopFeaturesDecodeErrorZ&& o) { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); return *this; }
8281         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() { return &self; }
8282         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() { return &self; }
8283         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() const { return &self; }
8284         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() const { return &self; }
8285 };
8286 class COption_PackedLockTimeZ {
8287 private:
8288         LDKCOption_PackedLockTimeZ self;
8289 public:
8290         COption_PackedLockTimeZ(const COption_PackedLockTimeZ&) = delete;
8291         COption_PackedLockTimeZ(COption_PackedLockTimeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PackedLockTimeZ)); }
8292         COption_PackedLockTimeZ(LDKCOption_PackedLockTimeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PackedLockTimeZ)); }
8293         operator LDKCOption_PackedLockTimeZ() && { LDKCOption_PackedLockTimeZ res = self; memset(&self, 0, sizeof(LDKCOption_PackedLockTimeZ)); return res; }
8294         ~COption_PackedLockTimeZ() { COption_PackedLockTimeZ_free(self); }
8295         COption_PackedLockTimeZ& operator=(COption_PackedLockTimeZ&& o) { COption_PackedLockTimeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PackedLockTimeZ)); return *this; }
8296         LDKCOption_PackedLockTimeZ* operator &() { return &self; }
8297         LDKCOption_PackedLockTimeZ* operator ->() { return &self; }
8298         const LDKCOption_PackedLockTimeZ* operator &() const { return &self; }
8299         const LDKCOption_PackedLockTimeZ* operator ->() const { return &self; }
8300 };
8301 class CVec_TransactionOutputsZ {
8302 private:
8303         LDKCVec_TransactionOutputsZ self;
8304 public:
8305         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
8306         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
8307         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
8308         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
8309         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
8310         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
8311         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
8312         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
8313         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
8314         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
8315 };
8316 class COption_HTLCClaimZ {
8317 private:
8318         LDKCOption_HTLCClaimZ self;
8319 public:
8320         COption_HTLCClaimZ(const COption_HTLCClaimZ&) = delete;
8321         COption_HTLCClaimZ(COption_HTLCClaimZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCClaimZ)); }
8322         COption_HTLCClaimZ(LDKCOption_HTLCClaimZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCClaimZ)); }
8323         operator LDKCOption_HTLCClaimZ() && { LDKCOption_HTLCClaimZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCClaimZ)); return res; }
8324         ~COption_HTLCClaimZ() { COption_HTLCClaimZ_free(self); }
8325         COption_HTLCClaimZ& operator=(COption_HTLCClaimZ&& o) { COption_HTLCClaimZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCClaimZ)); return *this; }
8326         LDKCOption_HTLCClaimZ* operator &() { return &self; }
8327         LDKCOption_HTLCClaimZ* operator ->() { return &self; }
8328         const LDKCOption_HTLCClaimZ* operator &() const { return &self; }
8329         const LDKCOption_HTLCClaimZ* operator ->() const { return &self; }
8330 };
8331 class CVec_CVec_u8ZZ {
8332 private:
8333         LDKCVec_CVec_u8ZZ self;
8334 public:
8335         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
8336         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
8337         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
8338         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
8339         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
8340         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; }
8341         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
8342         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
8343         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
8344         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
8345 };
8346 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ {
8347 private:
8348         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ self;
8349 public:
8350         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(const CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&) = delete;
8351         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
8352         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
8353         operator LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ() && { LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); return res; }
8354         ~CResult_COption_CustomOnionMessageContentsZDecodeErrorZ() { CResult_COption_CustomOnionMessageContentsZDecodeErrorZ_free(self); }
8355         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; }
8356         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() { return &self; }
8357         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() { return &self; }
8358         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() const { return &self; }
8359         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() const { return &self; }
8360 };
8361 class CResult_ProbabilisticScorerDecodeErrorZ {
8362 private:
8363         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
8364 public:
8365         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
8366         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
8367         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
8368         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
8369         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
8370         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
8371         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
8372         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
8373         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
8374         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
8375 };
8376 class CResult_ShutdownScriptDecodeErrorZ {
8377 private:
8378         LDKCResult_ShutdownScriptDecodeErrorZ self;
8379 public:
8380         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
8381         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
8382         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
8383         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
8384         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
8385         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
8386         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
8387         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
8388         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
8389         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
8390 };
8391 class CResult_SiPrefixBolt11ParseErrorZ {
8392 private:
8393         LDKCResult_SiPrefixBolt11ParseErrorZ self;
8394 public:
8395         CResult_SiPrefixBolt11ParseErrorZ(const CResult_SiPrefixBolt11ParseErrorZ&) = delete;
8396         CResult_SiPrefixBolt11ParseErrorZ(CResult_SiPrefixBolt11ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixBolt11ParseErrorZ)); }
8397         CResult_SiPrefixBolt11ParseErrorZ(LDKCResult_SiPrefixBolt11ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixBolt11ParseErrorZ)); }
8398         operator LDKCResult_SiPrefixBolt11ParseErrorZ() && { LDKCResult_SiPrefixBolt11ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixBolt11ParseErrorZ)); return res; }
8399         ~CResult_SiPrefixBolt11ParseErrorZ() { CResult_SiPrefixBolt11ParseErrorZ_free(self); }
8400         CResult_SiPrefixBolt11ParseErrorZ& operator=(CResult_SiPrefixBolt11ParseErrorZ&& o) { CResult_SiPrefixBolt11ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixBolt11ParseErrorZ)); return *this; }
8401         LDKCResult_SiPrefixBolt11ParseErrorZ* operator &() { return &self; }
8402         LDKCResult_SiPrefixBolt11ParseErrorZ* operator ->() { return &self; }
8403         const LDKCResult_SiPrefixBolt11ParseErrorZ* operator &() const { return &self; }
8404         const LDKCResult_SiPrefixBolt11ParseErrorZ* operator ->() const { return &self; }
8405 };
8406 class C2Tuple_usizeTransactionZ {
8407 private:
8408         LDKC2Tuple_usizeTransactionZ self;
8409 public:
8410         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
8411         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
8412         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
8413         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
8414         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
8415         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
8416         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
8417         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
8418         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
8419         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
8420 };
8421 class CResult_NodeAnnouncementDecodeErrorZ {
8422 private:
8423         LDKCResult_NodeAnnouncementDecodeErrorZ self;
8424 public:
8425         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
8426         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
8427         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
8428         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
8429         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
8430         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
8431         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
8432         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
8433         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
8434         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
8435 };
8436 class CVec_FutureZ {
8437 private:
8438         LDKCVec_FutureZ self;
8439 public:
8440         CVec_FutureZ(const CVec_FutureZ&) = delete;
8441         CVec_FutureZ(CVec_FutureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_FutureZ)); }
8442         CVec_FutureZ(LDKCVec_FutureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_FutureZ)); }
8443         operator LDKCVec_FutureZ() && { LDKCVec_FutureZ res = self; memset(&self, 0, sizeof(LDKCVec_FutureZ)); return res; }
8444         ~CVec_FutureZ() { CVec_FutureZ_free(self); }
8445         CVec_FutureZ& operator=(CVec_FutureZ&& o) { CVec_FutureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_FutureZ)); return *this; }
8446         LDKCVec_FutureZ* operator &() { return &self; }
8447         LDKCVec_FutureZ* operator ->() { return &self; }
8448         const LDKCVec_FutureZ* operator &() const { return &self; }
8449         const LDKCVec_FutureZ* operator ->() const { return &self; }
8450 };
8451 class CVec_ChannelMonitorZ {
8452 private:
8453         LDKCVec_ChannelMonitorZ self;
8454 public:
8455         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
8456         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
8457         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
8458         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
8459         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
8460         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
8461         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
8462         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
8463         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
8464         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
8465 };
8466 class CResult_AcceptChannelV2DecodeErrorZ {
8467 private:
8468         LDKCResult_AcceptChannelV2DecodeErrorZ self;
8469 public:
8470         CResult_AcceptChannelV2DecodeErrorZ(const CResult_AcceptChannelV2DecodeErrorZ&) = delete;
8471         CResult_AcceptChannelV2DecodeErrorZ(CResult_AcceptChannelV2DecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelV2DecodeErrorZ)); }
8472         CResult_AcceptChannelV2DecodeErrorZ(LDKCResult_AcceptChannelV2DecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelV2DecodeErrorZ)); }
8473         operator LDKCResult_AcceptChannelV2DecodeErrorZ() && { LDKCResult_AcceptChannelV2DecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelV2DecodeErrorZ)); return res; }
8474         ~CResult_AcceptChannelV2DecodeErrorZ() { CResult_AcceptChannelV2DecodeErrorZ_free(self); }
8475         CResult_AcceptChannelV2DecodeErrorZ& operator=(CResult_AcceptChannelV2DecodeErrorZ&& o) { CResult_AcceptChannelV2DecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelV2DecodeErrorZ)); return *this; }
8476         LDKCResult_AcceptChannelV2DecodeErrorZ* operator &() { return &self; }
8477         LDKCResult_AcceptChannelV2DecodeErrorZ* operator ->() { return &self; }
8478         const LDKCResult_AcceptChannelV2DecodeErrorZ* operator &() const { return &self; }
8479         const LDKCResult_AcceptChannelV2DecodeErrorZ* operator ->() const { return &self; }
8480 };
8481 class CResult_TxCreationKeysDecodeErrorZ {
8482 private:
8483         LDKCResult_TxCreationKeysDecodeErrorZ self;
8484 public:
8485         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
8486         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
8487         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
8488         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
8489         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
8490         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
8491         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
8492         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
8493         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
8494         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
8495 };
8496 class CResult_RouteHopDecodeErrorZ {
8497 private:
8498         LDKCResult_RouteHopDecodeErrorZ self;
8499 public:
8500         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
8501         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
8502         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
8503         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
8504         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
8505         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
8506         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
8507         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
8508         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
8509         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
8510 };
8511 class CVec_HTLCOutputInCommitmentZ {
8512 private:
8513         LDKCVec_HTLCOutputInCommitmentZ self;
8514 public:
8515         CVec_HTLCOutputInCommitmentZ(const CVec_HTLCOutputInCommitmentZ&) = delete;
8516         CVec_HTLCOutputInCommitmentZ(CVec_HTLCOutputInCommitmentZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_HTLCOutputInCommitmentZ)); }
8517         CVec_HTLCOutputInCommitmentZ(LDKCVec_HTLCOutputInCommitmentZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_HTLCOutputInCommitmentZ)); }
8518         operator LDKCVec_HTLCOutputInCommitmentZ() && { LDKCVec_HTLCOutputInCommitmentZ res = self; memset(&self, 0, sizeof(LDKCVec_HTLCOutputInCommitmentZ)); return res; }
8519         ~CVec_HTLCOutputInCommitmentZ() { CVec_HTLCOutputInCommitmentZ_free(self); }
8520         CVec_HTLCOutputInCommitmentZ& operator=(CVec_HTLCOutputInCommitmentZ&& o) { CVec_HTLCOutputInCommitmentZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_HTLCOutputInCommitmentZ)); return *this; }
8521         LDKCVec_HTLCOutputInCommitmentZ* operator &() { return &self; }
8522         LDKCVec_HTLCOutputInCommitmentZ* operator ->() { return &self; }
8523         const LDKCVec_HTLCOutputInCommitmentZ* operator &() const { return &self; }
8524         const LDKCVec_HTLCOutputInCommitmentZ* operator ->() const { return &self; }
8525 };
8526 class CResult_CoinSelectionNoneZ {
8527 private:
8528         LDKCResult_CoinSelectionNoneZ self;
8529 public:
8530         CResult_CoinSelectionNoneZ(const CResult_CoinSelectionNoneZ&) = delete;
8531         CResult_CoinSelectionNoneZ(CResult_CoinSelectionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CoinSelectionNoneZ)); }
8532         CResult_CoinSelectionNoneZ(LDKCResult_CoinSelectionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CoinSelectionNoneZ)); }
8533         operator LDKCResult_CoinSelectionNoneZ() && { LDKCResult_CoinSelectionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CoinSelectionNoneZ)); return res; }
8534         ~CResult_CoinSelectionNoneZ() { CResult_CoinSelectionNoneZ_free(self); }
8535         CResult_CoinSelectionNoneZ& operator=(CResult_CoinSelectionNoneZ&& o) { CResult_CoinSelectionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CoinSelectionNoneZ)); return *this; }
8536         LDKCResult_CoinSelectionNoneZ* operator &() { return &self; }
8537         LDKCResult_CoinSelectionNoneZ* operator ->() { return &self; }
8538         const LDKCResult_CoinSelectionNoneZ* operator &() const { return &self; }
8539         const LDKCResult_CoinSelectionNoneZ* operator ->() const { return &self; }
8540 };
8541 class CResult_BlindedPathDecodeErrorZ {
8542 private:
8543         LDKCResult_BlindedPathDecodeErrorZ self;
8544 public:
8545         CResult_BlindedPathDecodeErrorZ(const CResult_BlindedPathDecodeErrorZ&) = delete;
8546         CResult_BlindedPathDecodeErrorZ(CResult_BlindedPathDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); }
8547         CResult_BlindedPathDecodeErrorZ(LDKCResult_BlindedPathDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); }
8548         operator LDKCResult_BlindedPathDecodeErrorZ() && { LDKCResult_BlindedPathDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); return res; }
8549         ~CResult_BlindedPathDecodeErrorZ() { CResult_BlindedPathDecodeErrorZ_free(self); }
8550         CResult_BlindedPathDecodeErrorZ& operator=(CResult_BlindedPathDecodeErrorZ&& o) { CResult_BlindedPathDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); return *this; }
8551         LDKCResult_BlindedPathDecodeErrorZ* operator &() { return &self; }
8552         LDKCResult_BlindedPathDecodeErrorZ* operator ->() { return &self; }
8553         const LDKCResult_BlindedPathDecodeErrorZ* operator &() const { return &self; }
8554         const LDKCResult_BlindedPathDecodeErrorZ* operator ->() const { return &self; }
8555 };
8556 class CVec_BalanceZ {
8557 private:
8558         LDKCVec_BalanceZ self;
8559 public:
8560         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
8561         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
8562         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
8563         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
8564         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
8565         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
8566         LDKCVec_BalanceZ* operator &() { return &self; }
8567         LDKCVec_BalanceZ* operator ->() { return &self; }
8568         const LDKCVec_BalanceZ* operator &() const { return &self; }
8569         const LDKCVec_BalanceZ* operator ->() const { return &self; }
8570 };
8571 class CResult_MaxDustHTLCExposureDecodeErrorZ {
8572 private:
8573         LDKCResult_MaxDustHTLCExposureDecodeErrorZ self;
8574 public:
8575         CResult_MaxDustHTLCExposureDecodeErrorZ(const CResult_MaxDustHTLCExposureDecodeErrorZ&) = delete;
8576         CResult_MaxDustHTLCExposureDecodeErrorZ(CResult_MaxDustHTLCExposureDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_MaxDustHTLCExposureDecodeErrorZ)); }
8577         CResult_MaxDustHTLCExposureDecodeErrorZ(LDKCResult_MaxDustHTLCExposureDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_MaxDustHTLCExposureDecodeErrorZ)); }
8578         operator LDKCResult_MaxDustHTLCExposureDecodeErrorZ() && { LDKCResult_MaxDustHTLCExposureDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_MaxDustHTLCExposureDecodeErrorZ)); return res; }
8579         ~CResult_MaxDustHTLCExposureDecodeErrorZ() { CResult_MaxDustHTLCExposureDecodeErrorZ_free(self); }
8580         CResult_MaxDustHTLCExposureDecodeErrorZ& operator=(CResult_MaxDustHTLCExposureDecodeErrorZ&& o) { CResult_MaxDustHTLCExposureDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_MaxDustHTLCExposureDecodeErrorZ)); return *this; }
8581         LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator &() { return &self; }
8582         LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator ->() { return &self; }
8583         const LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator &() const { return &self; }
8584         const LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator ->() const { return &self; }
8585 };
8586 class CResult_FundingSignedDecodeErrorZ {
8587 private:
8588         LDKCResult_FundingSignedDecodeErrorZ self;
8589 public:
8590         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
8591         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
8592         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
8593         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
8594         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
8595         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
8596         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
8597         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
8598         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
8599         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
8600 };
8601 class CResult_RecoverableSignatureNoneZ {
8602 private:
8603         LDKCResult_RecoverableSignatureNoneZ self;
8604 public:
8605         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
8606         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
8607         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
8608         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
8609         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
8610         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
8611         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
8612         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
8613         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
8614         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
8615 };
8616 class C2Tuple_Z {
8617 private:
8618         LDKC2Tuple_Z self;
8619 public:
8620         C2Tuple_Z(const C2Tuple_Z&) = delete;
8621         C2Tuple_Z(C2Tuple_Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_Z)); }
8622         C2Tuple_Z(LDKC2Tuple_Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_Z)); }
8623         operator LDKC2Tuple_Z() && { LDKC2Tuple_Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_Z)); return res; }
8624         ~C2Tuple_Z() { C2Tuple_Z_free(self); }
8625         C2Tuple_Z& operator=(C2Tuple_Z&& o) { C2Tuple_Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_Z)); return *this; }
8626         LDKC2Tuple_Z* operator &() { return &self; }
8627         LDKC2Tuple_Z* operator ->() { return &self; }
8628         const LDKC2Tuple_Z* operator &() const { return &self; }
8629         const LDKC2Tuple_Z* operator ->() const { return &self; }
8630 };
8631 class CVec_PathZ {
8632 private:
8633         LDKCVec_PathZ self;
8634 public:
8635         CVec_PathZ(const CVec_PathZ&) = delete;
8636         CVec_PathZ(CVec_PathZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PathZ)); }
8637         CVec_PathZ(LDKCVec_PathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PathZ)); }
8638         operator LDKCVec_PathZ() && { LDKCVec_PathZ res = self; memset(&self, 0, sizeof(LDKCVec_PathZ)); return res; }
8639         ~CVec_PathZ() { CVec_PathZ_free(self); }
8640         CVec_PathZ& operator=(CVec_PathZ&& o) { CVec_PathZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PathZ)); return *this; }
8641         LDKCVec_PathZ* operator &() { return &self; }
8642         LDKCVec_PathZ* operator ->() { return &self; }
8643         const LDKCVec_PathZ* operator &() const { return &self; }
8644         const LDKCVec_PathZ* operator ->() const { return &self; }
8645 };
8646 class CResult_NetworkGraphDecodeErrorZ {
8647 private:
8648         LDKCResult_NetworkGraphDecodeErrorZ self;
8649 public:
8650         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
8651         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
8652         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
8653         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
8654         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
8655         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
8656         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
8657         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
8658         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
8659         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
8660 };
8661 class CResult_NodeInfoDecodeErrorZ {
8662 private:
8663         LDKCResult_NodeInfoDecodeErrorZ self;
8664 public:
8665         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
8666         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
8667         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
8668         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
8669         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
8670         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
8671         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
8672         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
8673         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
8674         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
8675 };
8676 class CVec_NodeIdZ {
8677 private:
8678         LDKCVec_NodeIdZ self;
8679 public:
8680         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
8681         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
8682         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
8683         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
8684         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
8685         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
8686         LDKCVec_NodeIdZ* operator &() { return &self; }
8687         LDKCVec_NodeIdZ* operator ->() { return &self; }
8688         const LDKCVec_NodeIdZ* operator &() const { return &self; }
8689         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
8690 };
8691 class CVec_u8Z {
8692 private:
8693         LDKCVec_u8Z self;
8694 public:
8695         CVec_u8Z(const CVec_u8Z&) = delete;
8696         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
8697         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
8698         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
8699         ~CVec_u8Z() { CVec_u8Z_free(self); }
8700         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
8701         LDKCVec_u8Z* operator &() { return &self; }
8702         LDKCVec_u8Z* operator ->() { return &self; }
8703         const LDKCVec_u8Z* operator &() const { return &self; }
8704         const LDKCVec_u8Z* operator ->() const { return &self; }
8705 };
8706 class CResult_RouteLightningErrorZ {
8707 private:
8708         LDKCResult_RouteLightningErrorZ self;
8709 public:
8710         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
8711         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
8712         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
8713         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
8714         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
8715         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
8716         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
8717         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
8718         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
8719         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
8720 };
8721 class CResult_NonePaymentSendFailureZ {
8722 private:
8723         LDKCResult_NonePaymentSendFailureZ self;
8724 public:
8725         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
8726         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
8727         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
8728         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
8729         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
8730         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
8731         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
8732         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
8733         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
8734         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
8735 };
8736 class CResult_ChannelPublicKeysDecodeErrorZ {
8737 private:
8738         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
8739 public:
8740         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
8741         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
8742         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
8743         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
8744         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
8745         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
8746         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
8747         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
8748         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
8749         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
8750 };
8751 class CVec_C2Tuple_TxidCOption_BlockHashZZZ {
8752 private:
8753         LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ self;
8754 public:
8755         CVec_C2Tuple_TxidCOption_BlockHashZZZ(const CVec_C2Tuple_TxidCOption_BlockHashZZZ&) = delete;
8756         CVec_C2Tuple_TxidCOption_BlockHashZZZ(CVec_C2Tuple_TxidCOption_BlockHashZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCOption_BlockHashZZZ)); }
8757         CVec_C2Tuple_TxidCOption_BlockHashZZZ(LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ)); }
8758         operator LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ() && { LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ)); return res; }
8759         ~CVec_C2Tuple_TxidCOption_BlockHashZZZ() { CVec_C2Tuple_TxidCOption_BlockHashZZZ_free(self); }
8760         CVec_C2Tuple_TxidCOption_BlockHashZZZ& operator=(CVec_C2Tuple_TxidCOption_BlockHashZZZ&& o) { CVec_C2Tuple_TxidCOption_BlockHashZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_TxidCOption_BlockHashZZZ)); return *this; }
8761         LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ* operator &() { return &self; }
8762         LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ* operator ->() { return &self; }
8763         const LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ* operator &() const { return &self; }
8764         const LDKCVec_C2Tuple_TxidCOption_BlockHashZZZ* operator ->() const { return &self; }
8765 };
8766 class CResult_HolderCommitmentTransactionDecodeErrorZ {
8767 private:
8768         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
8769 public:
8770         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
8771         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
8772         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
8773         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
8774         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
8775         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
8776         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
8777         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
8778         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
8779         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
8780 };
8781 class CResult_WarningMessageDecodeErrorZ {
8782 private:
8783         LDKCResult_WarningMessageDecodeErrorZ self;
8784 public:
8785         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
8786         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
8787         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
8788         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
8789         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
8790         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
8791         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
8792         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
8793         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
8794         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
8795 };
8796 class CResult_ChannelCounterpartyDecodeErrorZ {
8797 private:
8798         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
8799 public:
8800         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
8801         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
8802         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
8803         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
8804         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
8805         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
8806         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
8807         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
8808         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
8809         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
8810 };
8811 class CResult_SignatureNoneZ {
8812 private:
8813         LDKCResult_SignatureNoneZ self;
8814 public:
8815         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
8816         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
8817         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
8818         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
8819         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
8820         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
8821         LDKCResult_SignatureNoneZ* operator &() { return &self; }
8822         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
8823         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
8824         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
8825 };
8826 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
8827 private:
8828         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
8829 public:
8830         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
8831         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
8832         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
8833         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
8834         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
8835         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; }
8836         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
8837         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
8838         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
8839         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
8840 };
8841 class CResult_InitDecodeErrorZ {
8842 private:
8843         LDKCResult_InitDecodeErrorZ self;
8844 public:
8845         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
8846         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
8847         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
8848         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
8849         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
8850         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
8851         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
8852         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
8853         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
8854         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
8855 };
8856 class CVec_MonitorUpdateIdZ {
8857 private:
8858         LDKCVec_MonitorUpdateIdZ self;
8859 public:
8860         CVec_MonitorUpdateIdZ(const CVec_MonitorUpdateIdZ&) = delete;
8861         CVec_MonitorUpdateIdZ(CVec_MonitorUpdateIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); }
8862         CVec_MonitorUpdateIdZ(LDKCVec_MonitorUpdateIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); }
8863         operator LDKCVec_MonitorUpdateIdZ() && { LDKCVec_MonitorUpdateIdZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); return res; }
8864         ~CVec_MonitorUpdateIdZ() { CVec_MonitorUpdateIdZ_free(self); }
8865         CVec_MonitorUpdateIdZ& operator=(CVec_MonitorUpdateIdZ&& o) { CVec_MonitorUpdateIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); return *this; }
8866         LDKCVec_MonitorUpdateIdZ* operator &() { return &self; }
8867         LDKCVec_MonitorUpdateIdZ* operator ->() { return &self; }
8868         const LDKCVec_MonitorUpdateIdZ* operator &() const { return &self; }
8869         const LDKCVec_MonitorUpdateIdZ* operator ->() const { return &self; }
8870 };
8871 class CResult_PaymentPurposeDecodeErrorZ {
8872 private:
8873         LDKCResult_PaymentPurposeDecodeErrorZ self;
8874 public:
8875         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
8876         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
8877         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
8878         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
8879         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
8880         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
8881         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
8882         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
8883         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
8884         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
8885 };
8886 class CResult_OutPointDecodeErrorZ {
8887 private:
8888         LDKCResult_OutPointDecodeErrorZ self;
8889 public:
8890         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
8891         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
8892         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
8893         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
8894         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
8895         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
8896         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
8897         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
8898         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
8899         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
8900 };
8901 class CVec_ChannelDetailsZ {
8902 private:
8903         LDKCVec_ChannelDetailsZ self;
8904 public:
8905         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
8906         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
8907         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
8908         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
8909         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
8910         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
8911         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
8912         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
8913         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
8914         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
8915 };
8916 class CResult_Bolt11InvoiceFeaturesDecodeErrorZ {
8917 private:
8918         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ self;
8919 public:
8920         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(const CResult_Bolt11InvoiceFeaturesDecodeErrorZ&) = delete;
8921         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(CResult_Bolt11InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceFeaturesDecodeErrorZ)); }
8922         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ)); }
8923         operator LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ() && { LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ)); return res; }
8924         ~CResult_Bolt11InvoiceFeaturesDecodeErrorZ() { CResult_Bolt11InvoiceFeaturesDecodeErrorZ_free(self); }
8925         CResult_Bolt11InvoiceFeaturesDecodeErrorZ& operator=(CResult_Bolt11InvoiceFeaturesDecodeErrorZ&& o) { CResult_Bolt11InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceFeaturesDecodeErrorZ)); return *this; }
8926         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
8927         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
8928         const LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
8929         const LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
8930 };
8931 class CVec_MessageSendEventZ {
8932 private:
8933         LDKCVec_MessageSendEventZ self;
8934 public:
8935         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
8936         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
8937         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
8938         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
8939         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
8940         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
8941         LDKCVec_MessageSendEventZ* operator &() { return &self; }
8942         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
8943         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
8944         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
8945 };
8946 class COption_NetAddressZ {
8947 private:
8948         LDKCOption_NetAddressZ self;
8949 public:
8950         COption_NetAddressZ(const COption_NetAddressZ&) = delete;
8951         COption_NetAddressZ(COption_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetAddressZ)); }
8952         COption_NetAddressZ(LDKCOption_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetAddressZ)); }
8953         operator LDKCOption_NetAddressZ() && { LDKCOption_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_NetAddressZ)); return res; }
8954         ~COption_NetAddressZ() { COption_NetAddressZ_free(self); }
8955         COption_NetAddressZ& operator=(COption_NetAddressZ&& o) { COption_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetAddressZ)); return *this; }
8956         LDKCOption_NetAddressZ* operator &() { return &self; }
8957         LDKCOption_NetAddressZ* operator ->() { return &self; }
8958         const LDKCOption_NetAddressZ* operator &() const { return &self; }
8959         const LDKCOption_NetAddressZ* operator ->() const { return &self; }
8960 };
8961 class C2Tuple_OutPointScriptZ {
8962 private:
8963         LDKC2Tuple_OutPointScriptZ self;
8964 public:
8965         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
8966         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
8967         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
8968         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
8969         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
8970         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
8971         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
8972         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
8973         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
8974         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
8975 };
8976 class CResult_RouteHintHopDecodeErrorZ {
8977 private:
8978         LDKCResult_RouteHintHopDecodeErrorZ self;
8979 public:
8980         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
8981         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
8982         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
8983         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
8984         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
8985         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
8986         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
8987         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
8988         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
8989         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
8990 };
8991 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
8992 private:
8993         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
8994 public:
8995         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
8996         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
8997         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
8998         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
8999         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
9000         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
9001         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
9002         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
9003         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
9004         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
9005 };
9006 class CResult_BlindedPayInfoDecodeErrorZ {
9007 private:
9008         LDKCResult_BlindedPayInfoDecodeErrorZ self;
9009 public:
9010         CResult_BlindedPayInfoDecodeErrorZ(const CResult_BlindedPayInfoDecodeErrorZ&) = delete;
9011         CResult_BlindedPayInfoDecodeErrorZ(CResult_BlindedPayInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPayInfoDecodeErrorZ)); }
9012         CResult_BlindedPayInfoDecodeErrorZ(LDKCResult_BlindedPayInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPayInfoDecodeErrorZ)); }
9013         operator LDKCResult_BlindedPayInfoDecodeErrorZ() && { LDKCResult_BlindedPayInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPayInfoDecodeErrorZ)); return res; }
9014         ~CResult_BlindedPayInfoDecodeErrorZ() { CResult_BlindedPayInfoDecodeErrorZ_free(self); }
9015         CResult_BlindedPayInfoDecodeErrorZ& operator=(CResult_BlindedPayInfoDecodeErrorZ&& o) { CResult_BlindedPayInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPayInfoDecodeErrorZ)); return *this; }
9016         LDKCResult_BlindedPayInfoDecodeErrorZ* operator &() { return &self; }
9017         LDKCResult_BlindedPayInfoDecodeErrorZ* operator ->() { return &self; }
9018         const LDKCResult_BlindedPayInfoDecodeErrorZ* operator &() const { return &self; }
9019         const LDKCResult_BlindedPayInfoDecodeErrorZ* operator ->() const { return &self; }
9020 };
9021 class COption_ChannelShutdownStateZ {
9022 private:
9023         LDKCOption_ChannelShutdownStateZ self;
9024 public:
9025         COption_ChannelShutdownStateZ(const COption_ChannelShutdownStateZ&) = delete;
9026         COption_ChannelShutdownStateZ(COption_ChannelShutdownStateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ChannelShutdownStateZ)); }
9027         COption_ChannelShutdownStateZ(LDKCOption_ChannelShutdownStateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ChannelShutdownStateZ)); }
9028         operator LDKCOption_ChannelShutdownStateZ() && { LDKCOption_ChannelShutdownStateZ res = self; memset(&self, 0, sizeof(LDKCOption_ChannelShutdownStateZ)); return res; }
9029         ~COption_ChannelShutdownStateZ() { COption_ChannelShutdownStateZ_free(self); }
9030         COption_ChannelShutdownStateZ& operator=(COption_ChannelShutdownStateZ&& o) { COption_ChannelShutdownStateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ChannelShutdownStateZ)); return *this; }
9031         LDKCOption_ChannelShutdownStateZ* operator &() { return &self; }
9032         LDKCOption_ChannelShutdownStateZ* operator ->() { return &self; }
9033         const LDKCOption_ChannelShutdownStateZ* operator &() const { return &self; }
9034         const LDKCOption_ChannelShutdownStateZ* operator ->() const { return &self; }
9035 };
9036 class CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ {
9037 private:
9038         LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ self;
9039 public:
9040         CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ(const CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ&) = delete;
9041         CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ(CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ)); }
9042         CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ(LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ)); }
9043         operator LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ() && { LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ)); return res; }
9044         ~CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ() { CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ_free(self); }
9045         CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ& operator=(CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ&& o) { CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ)); return *this; }
9046         LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ* operator &() { return &self; }
9047         LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ* operator ->() { return &self; }
9048         const LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ* operator &() const { return &self; }
9049         const LDKCResult_C2Tuple_PartiallySignedTransactionusizeZNoneZ* operator ->() const { return &self; }
9050 };
9051 class CResult_SharedSecretNoneZ {
9052 private:
9053         LDKCResult_SharedSecretNoneZ self;
9054 public:
9055         CResult_SharedSecretNoneZ(const CResult_SharedSecretNoneZ&) = delete;
9056         CResult_SharedSecretNoneZ(CResult_SharedSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); }
9057         CResult_SharedSecretNoneZ(LDKCResult_SharedSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); }
9058         operator LDKCResult_SharedSecretNoneZ() && { LDKCResult_SharedSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); return res; }
9059         ~CResult_SharedSecretNoneZ() { CResult_SharedSecretNoneZ_free(self); }
9060         CResult_SharedSecretNoneZ& operator=(CResult_SharedSecretNoneZ&& o) { CResult_SharedSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); return *this; }
9061         LDKCResult_SharedSecretNoneZ* operator &() { return &self; }
9062         LDKCResult_SharedSecretNoneZ* operator ->() { return &self; }
9063         const LDKCResult_SharedSecretNoneZ* operator &() const { return &self; }
9064         const LDKCResult_SharedSecretNoneZ* operator ->() const { return &self; }
9065 };
9066 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
9067 private:
9068         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
9069 public:
9070         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
9071         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
9072         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
9073         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
9074         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
9075         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; }
9076         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
9077         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
9078         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
9079         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
9080 };
9081 class CResult_CVec_CVec_u8ZZNoneZ {
9082 private:
9083         LDKCResult_CVec_CVec_u8ZZNoneZ self;
9084 public:
9085         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
9086         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
9087         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
9088         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
9089         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
9090         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; }
9091         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
9092         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
9093         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
9094         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
9095 };
9096 class C2Tuple_PaymentHashPaymentSecretZ {
9097 private:
9098         LDKC2Tuple_PaymentHashPaymentSecretZ self;
9099 public:
9100         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
9101         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
9102         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
9103         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
9104         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
9105         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
9106         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
9107         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
9108         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
9109         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
9110 };
9111 class CResult_AcceptChannelDecodeErrorZ {
9112 private:
9113         LDKCResult_AcceptChannelDecodeErrorZ self;
9114 public:
9115         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
9116         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
9117         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
9118         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
9119         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
9120         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
9121         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
9122         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
9123         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
9124         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
9125 };
9126 class CResult_HostnameDecodeErrorZ {
9127 private:
9128         LDKCResult_HostnameDecodeErrorZ self;
9129 public:
9130         CResult_HostnameDecodeErrorZ(const CResult_HostnameDecodeErrorZ&) = delete;
9131         CResult_HostnameDecodeErrorZ(CResult_HostnameDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HostnameDecodeErrorZ)); }
9132         CResult_HostnameDecodeErrorZ(LDKCResult_HostnameDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HostnameDecodeErrorZ)); }
9133         operator LDKCResult_HostnameDecodeErrorZ() && { LDKCResult_HostnameDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HostnameDecodeErrorZ)); return res; }
9134         ~CResult_HostnameDecodeErrorZ() { CResult_HostnameDecodeErrorZ_free(self); }
9135         CResult_HostnameDecodeErrorZ& operator=(CResult_HostnameDecodeErrorZ&& o) { CResult_HostnameDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HostnameDecodeErrorZ)); return *this; }
9136         LDKCResult_HostnameDecodeErrorZ* operator &() { return &self; }
9137         LDKCResult_HostnameDecodeErrorZ* operator ->() { return &self; }
9138         const LDKCResult_HostnameDecodeErrorZ* operator &() const { return &self; }
9139         const LDKCResult_HostnameDecodeErrorZ* operator ->() const { return &self; }
9140 };
9141 class CVec_SignatureZ {
9142 private:
9143         LDKCVec_SignatureZ self;
9144 public:
9145         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
9146         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
9147         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
9148         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
9149         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
9150         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
9151         LDKCVec_SignatureZ* operator &() { return &self; }
9152         LDKCVec_SignatureZ* operator ->() { return &self; }
9153         const LDKCVec_SignatureZ* operator &() const { return &self; }
9154         const LDKCVec_SignatureZ* operator ->() const { return &self; }
9155 };
9156 class CVec_u64Z {
9157 private:
9158         LDKCVec_u64Z self;
9159 public:
9160         CVec_u64Z(const CVec_u64Z&) = delete;
9161         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
9162         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
9163         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
9164         ~CVec_u64Z() { CVec_u64Z_free(self); }
9165         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
9166         LDKCVec_u64Z* operator &() { return &self; }
9167         LDKCVec_u64Z* operator ->() { return &self; }
9168         const LDKCVec_u64Z* operator &() const { return &self; }
9169         const LDKCVec_u64Z* operator ->() const { return &self; }
9170 };
9171 class CResult_StringErrorZ {
9172 private:
9173         LDKCResult_StringErrorZ self;
9174 public:
9175         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
9176         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
9177         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
9178         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
9179         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
9180         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
9181         LDKCResult_StringErrorZ* operator &() { return &self; }
9182         LDKCResult_StringErrorZ* operator ->() { return &self; }
9183         const LDKCResult_StringErrorZ* operator &() const { return &self; }
9184         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
9185 };
9186 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
9187 private:
9188         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
9189 public:
9190         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
9191         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
9192         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
9193         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
9194         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
9195         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; }
9196         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
9197         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
9198         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
9199         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
9200 };
9201 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
9202 private:
9203         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
9204 public:
9205         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
9206         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
9207         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
9208         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
9209         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
9210         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; }
9211         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
9212         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
9213         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
9214         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
9215 };
9216 class COption_EventZ {
9217 private:
9218         LDKCOption_EventZ self;
9219 public:
9220         COption_EventZ(const COption_EventZ&) = delete;
9221         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
9222         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
9223         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
9224         ~COption_EventZ() { COption_EventZ_free(self); }
9225         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
9226         LDKCOption_EventZ* operator &() { return &self; }
9227         LDKCOption_EventZ* operator ->() { return &self; }
9228         const LDKCOption_EventZ* operator &() const { return &self; }
9229         const LDKCOption_EventZ* operator ->() const { return &self; }
9230 };
9231 class CResult_ChannelTypeFeaturesDecodeErrorZ {
9232 private:
9233         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
9234 public:
9235         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
9236         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
9237         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
9238         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
9239         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
9240         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
9241         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
9242         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
9243         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
9244         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
9245 };
9246 class COption_TxidZ {
9247 private:
9248         LDKCOption_TxidZ self;
9249 public:
9250         COption_TxidZ(const COption_TxidZ&) = delete;
9251         COption_TxidZ(COption_TxidZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TxidZ)); }
9252         COption_TxidZ(LDKCOption_TxidZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TxidZ)); }
9253         operator LDKCOption_TxidZ() && { LDKCOption_TxidZ res = self; memset(&self, 0, sizeof(LDKCOption_TxidZ)); return res; }
9254         ~COption_TxidZ() { COption_TxidZ_free(self); }
9255         COption_TxidZ& operator=(COption_TxidZ&& o) { COption_TxidZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TxidZ)); return *this; }
9256         LDKCOption_TxidZ* operator &() { return &self; }
9257         LDKCOption_TxidZ* operator ->() { return &self; }
9258         const LDKCOption_TxidZ* operator &() const { return &self; }
9259         const LDKCOption_TxidZ* operator ->() const { return &self; }
9260 };
9261 class CVec_RouteHintZ {
9262 private:
9263         LDKCVec_RouteHintZ self;
9264 public:
9265         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
9266         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
9267         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
9268         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
9269         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
9270         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
9271         LDKCVec_RouteHintZ* operator &() { return &self; }
9272         LDKCVec_RouteHintZ* operator ->() { return &self; }
9273         const LDKCVec_RouteHintZ* operator &() const { return &self; }
9274         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
9275 };
9276 class COption_u16Z {
9277 private:
9278         LDKCOption_u16Z self;
9279 public:
9280         COption_u16Z(const COption_u16Z&) = delete;
9281         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
9282         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
9283         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
9284         ~COption_u16Z() { COption_u16Z_free(self); }
9285         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
9286         LDKCOption_u16Z* operator &() { return &self; }
9287         LDKCOption_u16Z* operator ->() { return &self; }
9288         const LDKCOption_u16Z* operator &() const { return &self; }
9289         const LDKCOption_u16Z* operator ->() const { return &self; }
9290 };
9291 class COption_PaymentFailureReasonZ {
9292 private:
9293         LDKCOption_PaymentFailureReasonZ self;
9294 public:
9295         COption_PaymentFailureReasonZ(const COption_PaymentFailureReasonZ&) = delete;
9296         COption_PaymentFailureReasonZ(COption_PaymentFailureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentFailureReasonZ)); }
9297         COption_PaymentFailureReasonZ(LDKCOption_PaymentFailureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentFailureReasonZ)); }
9298         operator LDKCOption_PaymentFailureReasonZ() && { LDKCOption_PaymentFailureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentFailureReasonZ)); return res; }
9299         ~COption_PaymentFailureReasonZ() { COption_PaymentFailureReasonZ_free(self); }
9300         COption_PaymentFailureReasonZ& operator=(COption_PaymentFailureReasonZ&& o) { COption_PaymentFailureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentFailureReasonZ)); return *this; }
9301         LDKCOption_PaymentFailureReasonZ* operator &() { return &self; }
9302         LDKCOption_PaymentFailureReasonZ* operator ->() { return &self; }
9303         const LDKCOption_PaymentFailureReasonZ* operator &() const { return &self; }
9304         const LDKCOption_PaymentFailureReasonZ* operator ->() const { return &self; }
9305 };
9306 class CVec_ChainHashZ {
9307 private:
9308         LDKCVec_ChainHashZ self;
9309 public:
9310         CVec_ChainHashZ(const CVec_ChainHashZ&) = delete;
9311         CVec_ChainHashZ(CVec_ChainHashZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChainHashZ)); }
9312         CVec_ChainHashZ(LDKCVec_ChainHashZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChainHashZ)); }
9313         operator LDKCVec_ChainHashZ() && { LDKCVec_ChainHashZ res = self; memset(&self, 0, sizeof(LDKCVec_ChainHashZ)); return res; }
9314         ~CVec_ChainHashZ() { CVec_ChainHashZ_free(self); }
9315         CVec_ChainHashZ& operator=(CVec_ChainHashZ&& o) { CVec_ChainHashZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChainHashZ)); return *this; }
9316         LDKCVec_ChainHashZ* operator &() { return &self; }
9317         LDKCVec_ChainHashZ* operator ->() { return &self; }
9318         const LDKCVec_ChainHashZ* operator &() const { return &self; }
9319         const LDKCVec_ChainHashZ* operator ->() const { return &self; }
9320 };
9321 class CVec_WitnessZ {
9322 private:
9323         LDKCVec_WitnessZ self;
9324 public:
9325         CVec_WitnessZ(const CVec_WitnessZ&) = delete;
9326         CVec_WitnessZ(CVec_WitnessZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_WitnessZ)); }
9327         CVec_WitnessZ(LDKCVec_WitnessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_WitnessZ)); }
9328         operator LDKCVec_WitnessZ() && { LDKCVec_WitnessZ res = self; memset(&self, 0, sizeof(LDKCVec_WitnessZ)); return res; }
9329         ~CVec_WitnessZ() { CVec_WitnessZ_free(self); }
9330         CVec_WitnessZ& operator=(CVec_WitnessZ&& o) { CVec_WitnessZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_WitnessZ)); return *this; }
9331         LDKCVec_WitnessZ* operator &() { return &self; }
9332         LDKCVec_WitnessZ* operator ->() { return &self; }
9333         const LDKCVec_WitnessZ* operator &() const { return &self; }
9334         const LDKCVec_WitnessZ* operator ->() const { return &self; }
9335 };
9336 class CResult_BlindedTailDecodeErrorZ {
9337 private:
9338         LDKCResult_BlindedTailDecodeErrorZ self;
9339 public:
9340         CResult_BlindedTailDecodeErrorZ(const CResult_BlindedTailDecodeErrorZ&) = delete;
9341         CResult_BlindedTailDecodeErrorZ(CResult_BlindedTailDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedTailDecodeErrorZ)); }
9342         CResult_BlindedTailDecodeErrorZ(LDKCResult_BlindedTailDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedTailDecodeErrorZ)); }
9343         operator LDKCResult_BlindedTailDecodeErrorZ() && { LDKCResult_BlindedTailDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedTailDecodeErrorZ)); return res; }
9344         ~CResult_BlindedTailDecodeErrorZ() { CResult_BlindedTailDecodeErrorZ_free(self); }
9345         CResult_BlindedTailDecodeErrorZ& operator=(CResult_BlindedTailDecodeErrorZ&& o) { CResult_BlindedTailDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedTailDecodeErrorZ)); return *this; }
9346         LDKCResult_BlindedTailDecodeErrorZ* operator &() { return &self; }
9347         LDKCResult_BlindedTailDecodeErrorZ* operator ->() { return &self; }
9348         const LDKCResult_BlindedTailDecodeErrorZ* operator &() const { return &self; }
9349         const LDKCResult_BlindedTailDecodeErrorZ* operator ->() const { return &self; }
9350 };
9351 class CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ {
9352 private:
9353         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ self;
9354 public:
9355         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(const CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&) = delete;
9356         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); }
9357         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); }
9358         operator LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ() && { LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); return res; }
9359         ~CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ() { CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ_free(self); }
9360         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ& operator=(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& o) { CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); return *this; }
9361         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator &() { return &self; }
9362         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator ->() { return &self; }
9363         const LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator &() const { return &self; }
9364         const LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator ->() const { return &self; }
9365 };
9366 class CVec_C2Tuple_PublicKeyTypeZZ {
9367 private:
9368         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
9369 public:
9370         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
9371         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
9372         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
9373         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
9374         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
9375         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; }
9376         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
9377         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
9378         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
9379         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
9380 };
9381 class CResult_OnionMessagePathNoneZ {
9382 private:
9383         LDKCResult_OnionMessagePathNoneZ self;
9384 public:
9385         CResult_OnionMessagePathNoneZ(const CResult_OnionMessagePathNoneZ&) = delete;
9386         CResult_OnionMessagePathNoneZ(CResult_OnionMessagePathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessagePathNoneZ)); }
9387         CResult_OnionMessagePathNoneZ(LDKCResult_OnionMessagePathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessagePathNoneZ)); }
9388         operator LDKCResult_OnionMessagePathNoneZ() && { LDKCResult_OnionMessagePathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessagePathNoneZ)); return res; }
9389         ~CResult_OnionMessagePathNoneZ() { CResult_OnionMessagePathNoneZ_free(self); }
9390         CResult_OnionMessagePathNoneZ& operator=(CResult_OnionMessagePathNoneZ&& o) { CResult_OnionMessagePathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessagePathNoneZ)); return *this; }
9391         LDKCResult_OnionMessagePathNoneZ* operator &() { return &self; }
9392         LDKCResult_OnionMessagePathNoneZ* operator ->() { return &self; }
9393         const LDKCResult_OnionMessagePathNoneZ* operator &() const { return &self; }
9394         const LDKCResult_OnionMessagePathNoneZ* operator ->() const { return &self; }
9395 };
9396 class CResult_RefundBolt12ParseErrorZ {
9397 private:
9398         LDKCResult_RefundBolt12ParseErrorZ self;
9399 public:
9400         CResult_RefundBolt12ParseErrorZ(const CResult_RefundBolt12ParseErrorZ&) = delete;
9401         CResult_RefundBolt12ParseErrorZ(CResult_RefundBolt12ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RefundBolt12ParseErrorZ)); }
9402         CResult_RefundBolt12ParseErrorZ(LDKCResult_RefundBolt12ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RefundBolt12ParseErrorZ)); }
9403         operator LDKCResult_RefundBolt12ParseErrorZ() && { LDKCResult_RefundBolt12ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RefundBolt12ParseErrorZ)); return res; }
9404         ~CResult_RefundBolt12ParseErrorZ() { CResult_RefundBolt12ParseErrorZ_free(self); }
9405         CResult_RefundBolt12ParseErrorZ& operator=(CResult_RefundBolt12ParseErrorZ&& o) { CResult_RefundBolt12ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RefundBolt12ParseErrorZ)); return *this; }
9406         LDKCResult_RefundBolt12ParseErrorZ* operator &() { return &self; }
9407         LDKCResult_RefundBolt12ParseErrorZ* operator ->() { return &self; }
9408         const LDKCResult_RefundBolt12ParseErrorZ* operator &() const { return &self; }
9409         const LDKCResult_RefundBolt12ParseErrorZ* operator ->() const { return &self; }
9410 };
9411 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ {
9412 private:
9413         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ self;
9414 public:
9415         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(const C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&) = delete;
9416         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
9417         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
9418         operator LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() && { LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); return res; }
9419         ~C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() { C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(self); }
9420         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; }
9421         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() { return &self; }
9422         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() { return &self; }
9423         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() const { return &self; }
9424         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() const { return &self; }
9425 };
9426 class CResult_u32GraphSyncErrorZ {
9427 private:
9428         LDKCResult_u32GraphSyncErrorZ self;
9429 public:
9430         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
9431         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
9432         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
9433         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
9434         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
9435         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
9436         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
9437         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
9438         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
9439         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
9440 };
9441 class CVec_PhantomRouteHintsZ {
9442 private:
9443         LDKCVec_PhantomRouteHintsZ self;
9444 public:
9445         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
9446         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
9447         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
9448         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
9449         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
9450         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
9451         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
9452         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
9453         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
9454         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
9455 };
9456 class CResult_OffersMessageDecodeErrorZ {
9457 private:
9458         LDKCResult_OffersMessageDecodeErrorZ self;
9459 public:
9460         CResult_OffersMessageDecodeErrorZ(const CResult_OffersMessageDecodeErrorZ&) = delete;
9461         CResult_OffersMessageDecodeErrorZ(CResult_OffersMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OffersMessageDecodeErrorZ)); }
9462         CResult_OffersMessageDecodeErrorZ(LDKCResult_OffersMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OffersMessageDecodeErrorZ)); }
9463         operator LDKCResult_OffersMessageDecodeErrorZ() && { LDKCResult_OffersMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OffersMessageDecodeErrorZ)); return res; }
9464         ~CResult_OffersMessageDecodeErrorZ() { CResult_OffersMessageDecodeErrorZ_free(self); }
9465         CResult_OffersMessageDecodeErrorZ& operator=(CResult_OffersMessageDecodeErrorZ&& o) { CResult_OffersMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OffersMessageDecodeErrorZ)); return *this; }
9466         LDKCResult_OffersMessageDecodeErrorZ* operator &() { return &self; }
9467         LDKCResult_OffersMessageDecodeErrorZ* operator ->() { return &self; }
9468         const LDKCResult_OffersMessageDecodeErrorZ* operator &() const { return &self; }
9469         const LDKCResult_OffersMessageDecodeErrorZ* operator ->() const { return &self; }
9470 };
9471 class CResult_NoneAPIErrorZ {
9472 private:
9473         LDKCResult_NoneAPIErrorZ self;
9474 public:
9475         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
9476         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
9477         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
9478         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
9479         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
9480         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
9481         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
9482         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
9483         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
9484         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
9485 };
9486 class CResult_Bolt12InvoiceFeaturesDecodeErrorZ {
9487 private:
9488         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ self;
9489 public:
9490         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(const CResult_Bolt12InvoiceFeaturesDecodeErrorZ&) = delete;
9491         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(CResult_Bolt12InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12InvoiceFeaturesDecodeErrorZ)); }
9492         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ)); }
9493         operator LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ() && { LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ)); return res; }
9494         ~CResult_Bolt12InvoiceFeaturesDecodeErrorZ() { CResult_Bolt12InvoiceFeaturesDecodeErrorZ_free(self); }
9495         CResult_Bolt12InvoiceFeaturesDecodeErrorZ& operator=(CResult_Bolt12InvoiceFeaturesDecodeErrorZ&& o) { CResult_Bolt12InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12InvoiceFeaturesDecodeErrorZ)); return *this; }
9496         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
9497         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
9498         const LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
9499         const LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
9500 };
9501 class CVec_NetAddressZ {
9502 private:
9503         LDKCVec_NetAddressZ self;
9504 public:
9505         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
9506         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
9507         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
9508         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
9509         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
9510         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
9511         LDKCVec_NetAddressZ* operator &() { return &self; }
9512         LDKCVec_NetAddressZ* operator ->() { return &self; }
9513         const LDKCVec_NetAddressZ* operator &() const { return &self; }
9514         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
9515 };
9516 class CResult_ChannelDetailsDecodeErrorZ {
9517 private:
9518         LDKCResult_ChannelDetailsDecodeErrorZ self;
9519 public:
9520         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
9521         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
9522         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
9523         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
9524         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
9525         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
9526         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
9527         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
9528         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
9529         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
9530 };
9531 class CVec_PublicKeyZ {
9532 private:
9533         LDKCVec_PublicKeyZ self;
9534 public:
9535         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
9536         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
9537         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
9538         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
9539         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
9540         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
9541         LDKCVec_PublicKeyZ* operator &() { return &self; }
9542         LDKCVec_PublicKeyZ* operator ->() { return &self; }
9543         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
9544         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
9545 };
9546 class CVec_C2Tuple_usizeTransactionZZ {
9547 private:
9548         LDKCVec_C2Tuple_usizeTransactionZZ self;
9549 public:
9550         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
9551         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
9552         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
9553         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
9554         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
9555         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; }
9556         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
9557         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
9558         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
9559         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
9560 };
9561 class CResult_TxRemoveInputDecodeErrorZ {
9562 private:
9563         LDKCResult_TxRemoveInputDecodeErrorZ self;
9564 public:
9565         CResult_TxRemoveInputDecodeErrorZ(const CResult_TxRemoveInputDecodeErrorZ&) = delete;
9566         CResult_TxRemoveInputDecodeErrorZ(CResult_TxRemoveInputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxRemoveInputDecodeErrorZ)); }
9567         CResult_TxRemoveInputDecodeErrorZ(LDKCResult_TxRemoveInputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxRemoveInputDecodeErrorZ)); }
9568         operator LDKCResult_TxRemoveInputDecodeErrorZ() && { LDKCResult_TxRemoveInputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxRemoveInputDecodeErrorZ)); return res; }
9569         ~CResult_TxRemoveInputDecodeErrorZ() { CResult_TxRemoveInputDecodeErrorZ_free(self); }
9570         CResult_TxRemoveInputDecodeErrorZ& operator=(CResult_TxRemoveInputDecodeErrorZ&& o) { CResult_TxRemoveInputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxRemoveInputDecodeErrorZ)); return *this; }
9571         LDKCResult_TxRemoveInputDecodeErrorZ* operator &() { return &self; }
9572         LDKCResult_TxRemoveInputDecodeErrorZ* operator ->() { return &self; }
9573         const LDKCResult_TxRemoveInputDecodeErrorZ* operator &() const { return &self; }
9574         const LDKCResult_TxRemoveInputDecodeErrorZ* operator ->() const { return &self; }
9575 };
9576 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
9577 private:
9578         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
9579 public:
9580         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
9581         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
9582         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
9583         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
9584         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
9585         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
9586         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
9587         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
9588         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
9589         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
9590 };
9591 class COption_PaymentIdZ {
9592 private:
9593         LDKCOption_PaymentIdZ self;
9594 public:
9595         COption_PaymentIdZ(const COption_PaymentIdZ&) = delete;
9596         COption_PaymentIdZ(COption_PaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentIdZ)); }
9597         COption_PaymentIdZ(LDKCOption_PaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentIdZ)); }
9598         operator LDKCOption_PaymentIdZ() && { LDKCOption_PaymentIdZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentIdZ)); return res; }
9599         ~COption_PaymentIdZ() { COption_PaymentIdZ_free(self); }
9600         COption_PaymentIdZ& operator=(COption_PaymentIdZ&& o) { COption_PaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentIdZ)); return *this; }
9601         LDKCOption_PaymentIdZ* operator &() { return &self; }
9602         LDKCOption_PaymentIdZ* operator ->() { return &self; }
9603         const LDKCOption_PaymentIdZ* operator &() const { return &self; }
9604         const LDKCOption_PaymentIdZ* operator ->() const { return &self; }
9605 };
9606 class C2Tuple_u64u64Z {
9607 private:
9608         LDKC2Tuple_u64u64Z self;
9609 public:
9610         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
9611         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
9612         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
9613         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
9614         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
9615         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
9616         LDKC2Tuple_u64u64Z* operator &() { return &self; }
9617         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
9618         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
9619         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
9620 };
9621 class CResult_RecipientOnionFieldsDecodeErrorZ {
9622 private:
9623         LDKCResult_RecipientOnionFieldsDecodeErrorZ self;
9624 public:
9625         CResult_RecipientOnionFieldsDecodeErrorZ(const CResult_RecipientOnionFieldsDecodeErrorZ&) = delete;
9626         CResult_RecipientOnionFieldsDecodeErrorZ(CResult_RecipientOnionFieldsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecipientOnionFieldsDecodeErrorZ)); }
9627         CResult_RecipientOnionFieldsDecodeErrorZ(LDKCResult_RecipientOnionFieldsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecipientOnionFieldsDecodeErrorZ)); }
9628         operator LDKCResult_RecipientOnionFieldsDecodeErrorZ() && { LDKCResult_RecipientOnionFieldsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RecipientOnionFieldsDecodeErrorZ)); return res; }
9629         ~CResult_RecipientOnionFieldsDecodeErrorZ() { CResult_RecipientOnionFieldsDecodeErrorZ_free(self); }
9630         CResult_RecipientOnionFieldsDecodeErrorZ& operator=(CResult_RecipientOnionFieldsDecodeErrorZ&& o) { CResult_RecipientOnionFieldsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecipientOnionFieldsDecodeErrorZ)); return *this; }
9631         LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator &() { return &self; }
9632         LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator ->() { return &self; }
9633         const LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator &() const { return &self; }
9634         const LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator ->() const { return &self; }
9635 };
9636 class C2Tuple_u32TxOutZ {
9637 private:
9638         LDKC2Tuple_u32TxOutZ self;
9639 public:
9640         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
9641         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
9642         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
9643         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
9644         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
9645         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
9646         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
9647         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
9648         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
9649         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
9650 };
9651 class CVec_UtxoZ {
9652 private:
9653         LDKCVec_UtxoZ self;
9654 public:
9655         CVec_UtxoZ(const CVec_UtxoZ&) = delete;
9656         CVec_UtxoZ(CVec_UtxoZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UtxoZ)); }
9657         CVec_UtxoZ(LDKCVec_UtxoZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UtxoZ)); }
9658         operator LDKCVec_UtxoZ() && { LDKCVec_UtxoZ res = self; memset(&self, 0, sizeof(LDKCVec_UtxoZ)); return res; }
9659         ~CVec_UtxoZ() { CVec_UtxoZ_free(self); }
9660         CVec_UtxoZ& operator=(CVec_UtxoZ&& o) { CVec_UtxoZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UtxoZ)); return *this; }
9661         LDKCVec_UtxoZ* operator &() { return &self; }
9662         LDKCVec_UtxoZ* operator ->() { return &self; }
9663         const LDKCVec_UtxoZ* operator &() const { return &self; }
9664         const LDKCVec_UtxoZ* operator ->() const { return &self; }
9665 };
9666 class CResult_PaymentSecretNoneZ {
9667 private:
9668         LDKCResult_PaymentSecretNoneZ self;
9669 public:
9670         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
9671         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
9672         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
9673         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
9674         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
9675         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
9676         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
9677         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
9678         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
9679         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
9680 };
9681 class CResult_ChannelConfigDecodeErrorZ {
9682 private:
9683         LDKCResult_ChannelConfigDecodeErrorZ self;
9684 public:
9685         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
9686         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
9687         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
9688         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
9689         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
9690         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
9691         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
9692         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
9693         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
9694         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
9695 };
9696 class CVec_PrivateRouteZ {
9697 private:
9698         LDKCVec_PrivateRouteZ self;
9699 public:
9700         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
9701         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
9702         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
9703         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
9704         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
9705         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
9706         LDKCVec_PrivateRouteZ* operator &() { return &self; }
9707         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
9708         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
9709         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
9710 };
9711 class COption_i64Z {
9712 private:
9713         LDKCOption_i64Z self;
9714 public:
9715         COption_i64Z(const COption_i64Z&) = delete;
9716         COption_i64Z(COption_i64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_i64Z)); }
9717         COption_i64Z(LDKCOption_i64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_i64Z)); }
9718         operator LDKCOption_i64Z() && { LDKCOption_i64Z res = self; memset(&self, 0, sizeof(LDKCOption_i64Z)); return res; }
9719         ~COption_i64Z() { COption_i64Z_free(self); }
9720         COption_i64Z& operator=(COption_i64Z&& o) { COption_i64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_i64Z)); return *this; }
9721         LDKCOption_i64Z* operator &() { return &self; }
9722         LDKCOption_i64Z* operator ->() { return &self; }
9723         const LDKCOption_i64Z* operator &() const { return &self; }
9724         const LDKCOption_i64Z* operator ->() const { return &self; }
9725 };
9726 class CResult_BlindedPathNoneZ {
9727 private:
9728         LDKCResult_BlindedPathNoneZ self;
9729 public:
9730         CResult_BlindedPathNoneZ(const CResult_BlindedPathNoneZ&) = delete;
9731         CResult_BlindedPathNoneZ(CResult_BlindedPathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); }
9732         CResult_BlindedPathNoneZ(LDKCResult_BlindedPathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); }
9733         operator LDKCResult_BlindedPathNoneZ() && { LDKCResult_BlindedPathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); return res; }
9734         ~CResult_BlindedPathNoneZ() { CResult_BlindedPathNoneZ_free(self); }
9735         CResult_BlindedPathNoneZ& operator=(CResult_BlindedPathNoneZ&& o) { CResult_BlindedPathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); return *this; }
9736         LDKCResult_BlindedPathNoneZ* operator &() { return &self; }
9737         LDKCResult_BlindedPathNoneZ* operator ->() { return &self; }
9738         const LDKCResult_BlindedPathNoneZ* operator &() const { return &self; }
9739         const LDKCResult_BlindedPathNoneZ* operator ->() const { return &self; }
9740 };
9741 class CResult_ShutdownDecodeErrorZ {
9742 private:
9743         LDKCResult_ShutdownDecodeErrorZ self;
9744 public:
9745         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
9746         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
9747         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
9748         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
9749         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
9750         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
9751         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
9752         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
9753         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
9754         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
9755 };
9756 class CResult_OfferBolt12ParseErrorZ {
9757 private:
9758         LDKCResult_OfferBolt12ParseErrorZ self;
9759 public:
9760         CResult_OfferBolt12ParseErrorZ(const CResult_OfferBolt12ParseErrorZ&) = delete;
9761         CResult_OfferBolt12ParseErrorZ(CResult_OfferBolt12ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OfferBolt12ParseErrorZ)); }
9762         CResult_OfferBolt12ParseErrorZ(LDKCResult_OfferBolt12ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OfferBolt12ParseErrorZ)); }
9763         operator LDKCResult_OfferBolt12ParseErrorZ() && { LDKCResult_OfferBolt12ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OfferBolt12ParseErrorZ)); return res; }
9764         ~CResult_OfferBolt12ParseErrorZ() { CResult_OfferBolt12ParseErrorZ_free(self); }
9765         CResult_OfferBolt12ParseErrorZ& operator=(CResult_OfferBolt12ParseErrorZ&& o) { CResult_OfferBolt12ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OfferBolt12ParseErrorZ)); return *this; }
9766         LDKCResult_OfferBolt12ParseErrorZ* operator &() { return &self; }
9767         LDKCResult_OfferBolt12ParseErrorZ* operator ->() { return &self; }
9768         const LDKCResult_OfferBolt12ParseErrorZ* operator &() const { return &self; }
9769         const LDKCResult_OfferBolt12ParseErrorZ* operator ->() const { return &self; }
9770 };
9771 class CResult_TxOutUtxoLookupErrorZ {
9772 private:
9773         LDKCResult_TxOutUtxoLookupErrorZ self;
9774 public:
9775         CResult_TxOutUtxoLookupErrorZ(const CResult_TxOutUtxoLookupErrorZ&) = delete;
9776         CResult_TxOutUtxoLookupErrorZ(CResult_TxOutUtxoLookupErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); }
9777         CResult_TxOutUtxoLookupErrorZ(LDKCResult_TxOutUtxoLookupErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); }
9778         operator LDKCResult_TxOutUtxoLookupErrorZ() && { LDKCResult_TxOutUtxoLookupErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); return res; }
9779         ~CResult_TxOutUtxoLookupErrorZ() { CResult_TxOutUtxoLookupErrorZ_free(self); }
9780         CResult_TxOutUtxoLookupErrorZ& operator=(CResult_TxOutUtxoLookupErrorZ&& o) { CResult_TxOutUtxoLookupErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); return *this; }
9781         LDKCResult_TxOutUtxoLookupErrorZ* operator &() { return &self; }
9782         LDKCResult_TxOutUtxoLookupErrorZ* operator ->() { return &self; }
9783         const LDKCResult_TxOutUtxoLookupErrorZ* operator &() const { return &self; }
9784         const LDKCResult_TxOutUtxoLookupErrorZ* operator ->() const { return &self; }
9785 };
9786 class CVec_MonitorEventZ {
9787 private:
9788         LDKCVec_MonitorEventZ self;
9789 public:
9790         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
9791         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
9792         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
9793         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
9794         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
9795         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
9796         LDKCVec_MonitorEventZ* operator &() { return &self; }
9797         LDKCVec_MonitorEventZ* operator ->() { return &self; }
9798         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
9799         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
9800 };
9801 class CVec_PaymentPreimageZ {
9802 private:
9803         LDKCVec_PaymentPreimageZ self;
9804 public:
9805         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
9806         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
9807         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
9808         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
9809         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
9810         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
9811         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
9812         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
9813         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
9814         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
9815 };
9816 class CResult_BigSizeDecodeErrorZ {
9817 private:
9818         LDKCResult_BigSizeDecodeErrorZ self;
9819 public:
9820         CResult_BigSizeDecodeErrorZ(const CResult_BigSizeDecodeErrorZ&) = delete;
9821         CResult_BigSizeDecodeErrorZ(CResult_BigSizeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BigSizeDecodeErrorZ)); }
9822         CResult_BigSizeDecodeErrorZ(LDKCResult_BigSizeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BigSizeDecodeErrorZ)); }
9823         operator LDKCResult_BigSizeDecodeErrorZ() && { LDKCResult_BigSizeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BigSizeDecodeErrorZ)); return res; }
9824         ~CResult_BigSizeDecodeErrorZ() { CResult_BigSizeDecodeErrorZ_free(self); }
9825         CResult_BigSizeDecodeErrorZ& operator=(CResult_BigSizeDecodeErrorZ&& o) { CResult_BigSizeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BigSizeDecodeErrorZ)); return *this; }
9826         LDKCResult_BigSizeDecodeErrorZ* operator &() { return &self; }
9827         LDKCResult_BigSizeDecodeErrorZ* operator ->() { return &self; }
9828         const LDKCResult_BigSizeDecodeErrorZ* operator &() const { return &self; }
9829         const LDKCResult_BigSizeDecodeErrorZ* operator ->() const { return &self; }
9830 };
9831 class CResult_PublicKeyErrorZ {
9832 private:
9833         LDKCResult_PublicKeyErrorZ self;
9834 public:
9835         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
9836         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
9837         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
9838         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
9839         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
9840         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
9841         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
9842         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
9843         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
9844         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
9845 };
9846 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ {
9847 private:
9848         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ self;
9849 public:
9850         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(const CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&) = delete;
9851         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
9852         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
9853         operator LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() && { LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); return res; }
9854         ~CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() { CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(self); }
9855         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; }
9856         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() { return &self; }
9857         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() { return &self; }
9858         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() const { return &self; }
9859         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() const { return &self; }
9860 };
9861 class CResult_NoneNoneZ {
9862 private:
9863         LDKCResult_NoneNoneZ self;
9864 public:
9865         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
9866         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
9867         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
9868         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
9869         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
9870         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
9871         LDKCResult_NoneNoneZ* operator &() { return &self; }
9872         LDKCResult_NoneNoneZ* operator ->() { return &self; }
9873         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
9874         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
9875 };
9876 class CResult_boolPeerHandleErrorZ {
9877 private:
9878         LDKCResult_boolPeerHandleErrorZ self;
9879 public:
9880         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
9881         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
9882         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
9883         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
9884         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
9885         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
9886         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
9887         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
9888         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
9889         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
9890 };
9891 class CResult_ChannelUpdateDecodeErrorZ {
9892 private:
9893         LDKCResult_ChannelUpdateDecodeErrorZ self;
9894 public:
9895         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
9896         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
9897         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
9898         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
9899         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
9900         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
9901         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
9902         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
9903         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
9904         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
9905 };
9906 class CVec_APIErrorZ {
9907 private:
9908         LDKCVec_APIErrorZ self;
9909 public:
9910         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
9911         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
9912         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
9913         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
9914         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
9915         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
9916         LDKCVec_APIErrorZ* operator &() { return &self; }
9917         LDKCVec_APIErrorZ* operator ->() { return &self; }
9918         const LDKCVec_APIErrorZ* operator &() const { return &self; }
9919         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
9920 };
9921 class COption_TxOutZ {
9922 private:
9923         LDKCOption_TxOutZ self;
9924 public:
9925         COption_TxOutZ(const COption_TxOutZ&) = delete;
9926         COption_TxOutZ(COption_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TxOutZ)); }
9927         COption_TxOutZ(LDKCOption_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TxOutZ)); }
9928         operator LDKCOption_TxOutZ() && { LDKCOption_TxOutZ res = self; memset(&self, 0, sizeof(LDKCOption_TxOutZ)); return res; }
9929         ~COption_TxOutZ() { COption_TxOutZ_free(self); }
9930         COption_TxOutZ& operator=(COption_TxOutZ&& o) { COption_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TxOutZ)); return *this; }
9931         LDKCOption_TxOutZ* operator &() { return &self; }
9932         LDKCOption_TxOutZ* operator ->() { return &self; }
9933         const LDKCOption_TxOutZ* operator &() const { return &self; }
9934         const LDKCOption_TxOutZ* operator ->() const { return &self; }
9935 };
9936 class COption_ClosureReasonZ {
9937 private:
9938         LDKCOption_ClosureReasonZ self;
9939 public:
9940         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
9941         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
9942         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
9943         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
9944         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
9945         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
9946         LDKCOption_ClosureReasonZ* operator &() { return &self; }
9947         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
9948         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
9949         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
9950 };
9951 class COption_u128Z {
9952 private:
9953         LDKCOption_u128Z self;
9954 public:
9955         COption_u128Z(const COption_u128Z&) = delete;
9956         COption_u128Z(COption_u128Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u128Z)); }
9957         COption_u128Z(LDKCOption_u128Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u128Z)); }
9958         operator LDKCOption_u128Z() && { LDKCOption_u128Z res = self; memset(&self, 0, sizeof(LDKCOption_u128Z)); return res; }
9959         ~COption_u128Z() { COption_u128Z_free(self); }
9960         COption_u128Z& operator=(COption_u128Z&& o) { COption_u128Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u128Z)); return *this; }
9961         LDKCOption_u128Z* operator &() { return &self; }
9962         LDKCOption_u128Z* operator ->() { return &self; }
9963         const LDKCOption_u128Z* operator &() const { return &self; }
9964         const LDKCOption_u128Z* operator ->() const { return &self; }
9965 };
9966 class CVec_AddressZ {
9967 private:
9968         LDKCVec_AddressZ self;
9969 public:
9970         CVec_AddressZ(const CVec_AddressZ&) = delete;
9971         CVec_AddressZ(CVec_AddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_AddressZ)); }
9972         CVec_AddressZ(LDKCVec_AddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_AddressZ)); }
9973         operator LDKCVec_AddressZ() && { LDKCVec_AddressZ res = self; memset(&self, 0, sizeof(LDKCVec_AddressZ)); return res; }
9974         ~CVec_AddressZ() { CVec_AddressZ_free(self); }
9975         CVec_AddressZ& operator=(CVec_AddressZ&& o) { CVec_AddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_AddressZ)); return *this; }
9976         LDKCVec_AddressZ* operator &() { return &self; }
9977         LDKCVec_AddressZ* operator ->() { return &self; }
9978         const LDKCVec_AddressZ* operator &() const { return &self; }
9979         const LDKCVec_AddressZ* operator ->() const { return &self; }
9980 };
9981 class CResult_TransactionU16LenLimitedDecodeErrorZ {
9982 private:
9983         LDKCResult_TransactionU16LenLimitedDecodeErrorZ self;
9984 public:
9985         CResult_TransactionU16LenLimitedDecodeErrorZ(const CResult_TransactionU16LenLimitedDecodeErrorZ&) = delete;
9986         CResult_TransactionU16LenLimitedDecodeErrorZ(CResult_TransactionU16LenLimitedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedDecodeErrorZ)); }
9987         CResult_TransactionU16LenLimitedDecodeErrorZ(LDKCResult_TransactionU16LenLimitedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionU16LenLimitedDecodeErrorZ)); }
9988         operator LDKCResult_TransactionU16LenLimitedDecodeErrorZ() && { LDKCResult_TransactionU16LenLimitedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionU16LenLimitedDecodeErrorZ)); return res; }
9989         ~CResult_TransactionU16LenLimitedDecodeErrorZ() { CResult_TransactionU16LenLimitedDecodeErrorZ_free(self); }
9990         CResult_TransactionU16LenLimitedDecodeErrorZ& operator=(CResult_TransactionU16LenLimitedDecodeErrorZ&& o) { CResult_TransactionU16LenLimitedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedDecodeErrorZ)); return *this; }
9991         LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator &() { return &self; }
9992         LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator ->() { return &self; }
9993         const LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator &() const { return &self; }
9994         const LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator ->() const { return &self; }
9995 };
9996 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
9997 private:
9998         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
9999 public:
10000         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
10001         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
10002         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
10003         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
10004         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
10005         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
10006         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
10007         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
10008         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
10009         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
10010 };
10011 class CResult_OpenChannelV2DecodeErrorZ {
10012 private:
10013         LDKCResult_OpenChannelV2DecodeErrorZ self;
10014 public:
10015         CResult_OpenChannelV2DecodeErrorZ(const CResult_OpenChannelV2DecodeErrorZ&) = delete;
10016         CResult_OpenChannelV2DecodeErrorZ(CResult_OpenChannelV2DecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelV2DecodeErrorZ)); }
10017         CResult_OpenChannelV2DecodeErrorZ(LDKCResult_OpenChannelV2DecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelV2DecodeErrorZ)); }
10018         operator LDKCResult_OpenChannelV2DecodeErrorZ() && { LDKCResult_OpenChannelV2DecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelV2DecodeErrorZ)); return res; }
10019         ~CResult_OpenChannelV2DecodeErrorZ() { CResult_OpenChannelV2DecodeErrorZ_free(self); }
10020         CResult_OpenChannelV2DecodeErrorZ& operator=(CResult_OpenChannelV2DecodeErrorZ&& o) { CResult_OpenChannelV2DecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelV2DecodeErrorZ)); return *this; }
10021         LDKCResult_OpenChannelV2DecodeErrorZ* operator &() { return &self; }
10022         LDKCResult_OpenChannelV2DecodeErrorZ* operator ->() { return &self; }
10023         const LDKCResult_OpenChannelV2DecodeErrorZ* operator &() const { return &self; }
10024         const LDKCResult_OpenChannelV2DecodeErrorZ* operator ->() const { return &self; }
10025 };
10026 class C2Tuple_u32ScriptZ {
10027 private:
10028         LDKC2Tuple_u32ScriptZ self;
10029 public:
10030         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
10031         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
10032         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
10033         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
10034         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
10035         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
10036         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
10037         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
10038         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
10039         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
10040 };
10041 class COption_C2Tuple_EightU16sEightU16sZZ {
10042 private:
10043         LDKCOption_C2Tuple_EightU16sEightU16sZZ self;
10044 public:
10045         COption_C2Tuple_EightU16sEightU16sZZ(const COption_C2Tuple_EightU16sEightU16sZZ&) = delete;
10046         COption_C2Tuple_EightU16sEightU16sZZ(COption_C2Tuple_EightU16sEightU16sZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_EightU16sEightU16sZZ)); }
10047         COption_C2Tuple_EightU16sEightU16sZZ(LDKCOption_C2Tuple_EightU16sEightU16sZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_EightU16sEightU16sZZ)); }
10048         operator LDKCOption_C2Tuple_EightU16sEightU16sZZ() && { LDKCOption_C2Tuple_EightU16sEightU16sZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_EightU16sEightU16sZZ)); return res; }
10049         ~COption_C2Tuple_EightU16sEightU16sZZ() { COption_C2Tuple_EightU16sEightU16sZZ_free(self); }
10050         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; }
10051         LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator &() { return &self; }
10052         LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator ->() { return &self; }
10053         const LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator &() const { return &self; }
10054         const LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator ->() const { return &self; }
10055 };
10056 class CResult_RouteDecodeErrorZ {
10057 private:
10058         LDKCResult_RouteDecodeErrorZ self;
10059 public:
10060         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
10061         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
10062         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
10063         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
10064         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
10065         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
10066         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
10067         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
10068         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
10069         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
10070 };
10071 class COption_NoneZ {
10072 private:
10073         LDKCOption_NoneZ self;
10074 public:
10075         COption_NoneZ(const COption_NoneZ&) = delete;
10076         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
10077         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
10078         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
10079         ~COption_NoneZ() { COption_NoneZ_free(self); }
10080         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
10081         LDKCOption_NoneZ* operator &() { return &self; }
10082         LDKCOption_NoneZ* operator ->() { return &self; }
10083         const LDKCOption_NoneZ* operator &() const { return &self; }
10084         const LDKCOption_NoneZ* operator ->() const { return &self; }
10085 };
10086 class CResult_TxAddOutputDecodeErrorZ {
10087 private:
10088         LDKCResult_TxAddOutputDecodeErrorZ self;
10089 public:
10090         CResult_TxAddOutputDecodeErrorZ(const CResult_TxAddOutputDecodeErrorZ&) = delete;
10091         CResult_TxAddOutputDecodeErrorZ(CResult_TxAddOutputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAddOutputDecodeErrorZ)); }
10092         CResult_TxAddOutputDecodeErrorZ(LDKCResult_TxAddOutputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAddOutputDecodeErrorZ)); }
10093         operator LDKCResult_TxAddOutputDecodeErrorZ() && { LDKCResult_TxAddOutputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAddOutputDecodeErrorZ)); return res; }
10094         ~CResult_TxAddOutputDecodeErrorZ() { CResult_TxAddOutputDecodeErrorZ_free(self); }
10095         CResult_TxAddOutputDecodeErrorZ& operator=(CResult_TxAddOutputDecodeErrorZ&& o) { CResult_TxAddOutputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAddOutputDecodeErrorZ)); return *this; }
10096         LDKCResult_TxAddOutputDecodeErrorZ* operator &() { return &self; }
10097         LDKCResult_TxAddOutputDecodeErrorZ* operator ->() { return &self; }
10098         const LDKCResult_TxAddOutputDecodeErrorZ* operator &() const { return &self; }
10099         const LDKCResult_TxAddOutputDecodeErrorZ* operator ->() const { return &self; }
10100 };
10101 class COption_CVec_u8ZZ {
10102 private:
10103         LDKCOption_CVec_u8ZZ self;
10104 public:
10105         COption_CVec_u8ZZ(const COption_CVec_u8ZZ&) = delete;
10106         COption_CVec_u8ZZ(COption_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_u8ZZ)); }
10107         COption_CVec_u8ZZ(LDKCOption_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_u8ZZ)); }
10108         operator LDKCOption_CVec_u8ZZ() && { LDKCOption_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_u8ZZ)); return res; }
10109         ~COption_CVec_u8ZZ() { COption_CVec_u8ZZ_free(self); }
10110         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; }
10111         LDKCOption_CVec_u8ZZ* operator &() { return &self; }
10112         LDKCOption_CVec_u8ZZ* operator ->() { return &self; }
10113         const LDKCOption_CVec_u8ZZ* operator &() const { return &self; }
10114         const LDKCOption_CVec_u8ZZ* operator ->() const { return &self; }
10115 };
10116
10117 inline LDKPublicKey ChannelSigner::get_per_commitment_point(uint64_t idx) {
10118         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
10119         return ret;
10120 }
10121 inline LDKThirtyTwoBytes ChannelSigner::release_commitment_secret(uint64_t idx) {
10122         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
10123         return ret;
10124 }
10125 inline LDK::CResult_NoneNoneZ ChannelSigner::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
10126         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
10127         return ret;
10128 }
10129 inline LDKThirtyTwoBytes ChannelSigner::channel_keys_id() {
10130         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
10131         return ret;
10132 }
10133 inline void ChannelSigner::provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
10134         (self.provide_channel_parameters)(self.this_arg, channel_parameters);
10135 }
10136 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ EcdsaChannelSigner::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
10137         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
10138         return ret;
10139 }
10140 inline LDK::CResult_NoneNoneZ EcdsaChannelSigner::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
10141         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
10142         return ret;
10143 }
10144 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ EcdsaChannelSigner::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
10145         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
10146         return ret;
10147 }
10148 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]) {
10149         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
10150         return ret;
10151 }
10152 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) {
10153         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
10154         return ret;
10155 }
10156 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_holder_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, const struct LDKHTLCDescriptor *NONNULL_PTR htlc_descriptor) {
10157         LDK::CResult_SignatureNoneZ ret = (self.sign_holder_htlc_transaction)(self.this_arg, htlc_tx, input, htlc_descriptor);
10158         return ret;
10159 }
10160 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) {
10161         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
10162         return ret;
10163 }
10164 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
10165         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
10166         return ret;
10167 }
10168 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input) {
10169         LDK::CResult_SignatureNoneZ ret = (self.sign_holder_anchor_input)(self.this_arg, anchor_tx, input);
10170         return ret;
10171 }
10172 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
10173         LDK::CResult_SignatureNoneZ ret = (self.sign_channel_announcement_with_funding_key)(self.this_arg, msg);
10174         return ret;
10175 }
10176 inline LDKThirtyTwoBytes EntropySource::get_secure_random_bytes() {
10177         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
10178         return ret;
10179 }
10180 inline LDKThirtyTwoBytes NodeSigner::get_inbound_payment_key_material() {
10181         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
10182         return ret;
10183 }
10184 inline LDK::CResult_PublicKeyNoneZ NodeSigner::get_node_id(enum LDKRecipient recipient) {
10185         LDK::CResult_PublicKeyNoneZ ret = (self.get_node_id)(self.this_arg, recipient);
10186         return ret;
10187 }
10188 inline LDK::CResult_SharedSecretNoneZ NodeSigner::ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak) {
10189         LDK::CResult_SharedSecretNoneZ ret = (self.ecdh)(self.this_arg, recipient, other_key, tweak);
10190         return ret;
10191 }
10192 inline LDK::CResult_RecoverableSignatureNoneZ NodeSigner::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient) {
10193         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, recipient);
10194         return ret;
10195 }
10196 inline LDK::CResult_SignatureNoneZ NodeSigner::sign_gossip_message(struct LDKUnsignedGossipMessage msg) {
10197         LDK::CResult_SignatureNoneZ ret = (self.sign_gossip_message)(self.this_arg, msg);
10198         return ret;
10199 }
10200 inline LDKThirtyTwoBytes SignerProvider::generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id) {
10201         LDKThirtyTwoBytes ret = (self.generate_channel_keys_id)(self.this_arg, inbound, channel_value_satoshis, user_channel_id);
10202         return ret;
10203 }
10204 inline LDK::WriteableEcdsaChannelSigner SignerProvider::derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id) {
10205         LDK::WriteableEcdsaChannelSigner ret = (self.derive_channel_signer)(self.this_arg, channel_value_satoshis, channel_keys_id);
10206         return ret;
10207 }
10208 inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ SignerProvider::read_chan_signer(struct LDKu8slice reader) {
10209         LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
10210         return ret;
10211 }
10212 inline LDK::CResult_ScriptNoneZ SignerProvider::get_destination_script() {
10213         LDK::CResult_ScriptNoneZ ret = (self.get_destination_script)(self.this_arg);
10214         return ret;
10215 }
10216 inline LDK::CResult_ShutdownScriptNoneZ SignerProvider::get_shutdown_scriptpubkey() {
10217         LDK::CResult_ShutdownScriptNoneZ ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
10218         return ret;
10219 }
10220 inline LDK::CResult_RouteLightningErrorZ Router::find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKInFlightHtlcs inflight_htlcs) {
10221         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, first_hops, inflight_htlcs);
10222         return ret;
10223 }
10224 inline LDK::CResult_RouteLightningErrorZ Router::find_route_with_id(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKInFlightHtlcs inflight_htlcs, struct LDKThirtyTwoBytes _payment_hash, struct LDKThirtyTwoBytes _payment_id) {
10225         LDK::CResult_RouteLightningErrorZ ret = (self.find_route_with_id)(self.this_arg, payer, route_params, first_hops, inflight_htlcs, _payment_hash, _payment_id);
10226         return ret;
10227 }
10228 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, const struct LDKProbabilisticScoringFeeParameters *NONNULL_PTR score_params) {
10229         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, source, target, usage, score_params);
10230         return ret;
10231 }
10232 inline void Score::payment_path_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id) {
10233         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
10234 }
10235 inline void Score::payment_path_successful(const struct LDKPath *NONNULL_PTR path) {
10236         (self.payment_path_successful)(self.this_arg, path);
10237 }
10238 inline void Score::probe_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id) {
10239         (self.probe_failed)(self.this_arg, path, short_channel_id);
10240 }
10241 inline void Score::probe_successful(const struct LDKPath *NONNULL_PTR path) {
10242         (self.probe_successful)(self.this_arg, path);
10243 }
10244 inline LDK::Score LockableScore::lock() {
10245         LDK::Score ret = (self.lock)(self.this_arg);
10246         return ret;
10247 }
10248 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
10249         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
10250 }
10251 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
10252         (self.block_connected)(self.this_arg, block, height);
10253 }
10254 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
10255         (self.block_disconnected)(self.this_arg, header, height);
10256 }
10257 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
10258         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
10259 }
10260 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
10261         (self.transaction_unconfirmed)(self.this_arg, txid);
10262 }
10263 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
10264         (self.best_block_updated)(self.this_arg, header, height);
10265 }
10266 inline LDK::CVec_C2Tuple_TxidCOption_BlockHashZZZ Confirm::get_relevant_txids() {
10267         LDK::CVec_C2Tuple_TxidCOption_BlockHashZZZ ret = (self.get_relevant_txids)(self.this_arg);
10268         return ret;
10269 }
10270 inline LDK::ChannelMonitorUpdateStatus Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
10271         LDK::ChannelMonitorUpdateStatus ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
10272         return ret;
10273 }
10274 inline LDK::ChannelMonitorUpdateStatus Watch::update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update) {
10275         LDK::ChannelMonitorUpdateStatus ret = (self.update_channel)(self.this_arg, funding_txo, update);
10276         return ret;
10277 }
10278 inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ Watch::release_pending_monitor_events() {
10279         LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ ret = (self.release_pending_monitor_events)(self.this_arg);
10280         return ret;
10281 }
10282 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
10283         (self.register_tx)(self.this_arg, txid, script_pubkey);
10284 }
10285 inline void Filter::register_output(struct LDKWatchedOutput output) {
10286         (self.register_output)(self.this_arg, output);
10287 }
10288 inline LDK::CResult_CoinSelectionNoneZ CoinSelectionSource::select_confirmed_utxos(struct LDKThirtyTwoBytes claim_id, struct LDKCVec_InputZ must_spend, struct LDKCVec_TxOutZ must_pay_to, uint32_t target_feerate_sat_per_1000_weight) {
10289         LDK::CResult_CoinSelectionNoneZ ret = (self.select_confirmed_utxos)(self.this_arg, claim_id, must_spend, must_pay_to, target_feerate_sat_per_1000_weight);
10290         return ret;
10291 }
10292 inline LDK::CResult_TransactionNoneZ CoinSelectionSource::sign_tx(struct LDKTransaction tx) {
10293         LDK::CResult_TransactionNoneZ ret = (self.sign_tx)(self.this_arg, tx);
10294         return ret;
10295 }
10296 inline LDK::CResult_CVec_UtxoZNoneZ WalletSource::list_confirmed_utxos() {
10297         LDK::CResult_CVec_UtxoZNoneZ ret = (self.list_confirmed_utxos)(self.this_arg);
10298         return ret;
10299 }
10300 inline LDK::CResult_ScriptNoneZ WalletSource::get_change_script() {
10301         LDK::CResult_ScriptNoneZ ret = (self.get_change_script)(self.this_arg);
10302         return ret;
10303 }
10304 inline LDK::CResult_TransactionNoneZ WalletSource::sign_tx(struct LDKTransaction tx) {
10305         LDK::CResult_TransactionNoneZ ret = (self.sign_tx)(self.this_arg, tx);
10306         return ret;
10307 }
10308 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
10309         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
10310         return ret;
10311 }
10312 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
10313         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
10314         return ret;
10315 }
10316 inline LDK::NodeFeatures CustomMessageHandler::provided_node_features() {
10317         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
10318         return ret;
10319 }
10320 inline LDK::InitFeatures CustomMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
10321         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
10322         return ret;
10323 }
10324 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
10325         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
10326         return ret;
10327 }
10328 inline void SocketDescriptor::disconnect_socket() {
10329         (self.disconnect_socket)(self.this_arg);
10330 }
10331 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
10332         bool ret = (self.eq)(self.this_arg, other_arg);
10333         return ret;
10334 }
10335 inline uint64_t SocketDescriptor::hash() {
10336         uint64_t ret = (self.hash)(self.this_arg);
10337         return ret;
10338 }
10339 inline LDK::CResult_NoneErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
10340         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
10341         return ret;
10342 }
10343 inline LDK::CResult_NoneErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
10344         LDK::CResult_NoneErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
10345         return ret;
10346 }
10347 inline LDK::CResult_NoneErrorZ Persister::persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer) {
10348         LDK::CResult_NoneErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
10349         return ret;
10350 }
10351 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg) {
10352         (self.handle_open_channel)(self.this_arg, their_node_id, msg);
10353 }
10354 inline void ChannelMessageHandler::handle_open_channel_v2(struct LDKPublicKey their_node_id, const struct LDKOpenChannelV2 *NONNULL_PTR msg) {
10355         (self.handle_open_channel_v2)(self.this_arg, their_node_id, msg);
10356 }
10357 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg) {
10358         (self.handle_accept_channel)(self.this_arg, their_node_id, msg);
10359 }
10360 inline void ChannelMessageHandler::handle_accept_channel_v2(struct LDKPublicKey their_node_id, const struct LDKAcceptChannelV2 *NONNULL_PTR msg) {
10361         (self.handle_accept_channel_v2)(self.this_arg, their_node_id, msg);
10362 }
10363 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
10364         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
10365 }
10366 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
10367         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
10368 }
10369 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
10370         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
10371 }
10372 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg) {
10373         (self.handle_shutdown)(self.this_arg, their_node_id, msg);
10374 }
10375 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
10376         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
10377 }
10378 inline void ChannelMessageHandler::handle_tx_add_input(struct LDKPublicKey their_node_id, const struct LDKTxAddInput *NONNULL_PTR msg) {
10379         (self.handle_tx_add_input)(self.this_arg, their_node_id, msg);
10380 }
10381 inline void ChannelMessageHandler::handle_tx_add_output(struct LDKPublicKey their_node_id, const struct LDKTxAddOutput *NONNULL_PTR msg) {
10382         (self.handle_tx_add_output)(self.this_arg, their_node_id, msg);
10383 }
10384 inline void ChannelMessageHandler::handle_tx_remove_input(struct LDKPublicKey their_node_id, const struct LDKTxRemoveInput *NONNULL_PTR msg) {
10385         (self.handle_tx_remove_input)(self.this_arg, their_node_id, msg);
10386 }
10387 inline void ChannelMessageHandler::handle_tx_remove_output(struct LDKPublicKey their_node_id, const struct LDKTxRemoveOutput *NONNULL_PTR msg) {
10388         (self.handle_tx_remove_output)(self.this_arg, their_node_id, msg);
10389 }
10390 inline void ChannelMessageHandler::handle_tx_complete(struct LDKPublicKey their_node_id, const struct LDKTxComplete *NONNULL_PTR msg) {
10391         (self.handle_tx_complete)(self.this_arg, their_node_id, msg);
10392 }
10393 inline void ChannelMessageHandler::handle_tx_signatures(struct LDKPublicKey their_node_id, const struct LDKTxSignatures *NONNULL_PTR msg) {
10394         (self.handle_tx_signatures)(self.this_arg, their_node_id, msg);
10395 }
10396 inline void ChannelMessageHandler::handle_tx_init_rbf(struct LDKPublicKey their_node_id, const struct LDKTxInitRbf *NONNULL_PTR msg) {
10397         (self.handle_tx_init_rbf)(self.this_arg, their_node_id, msg);
10398 }
10399 inline void ChannelMessageHandler::handle_tx_ack_rbf(struct LDKPublicKey their_node_id, const struct LDKTxAckRbf *NONNULL_PTR msg) {
10400         (self.handle_tx_ack_rbf)(self.this_arg, their_node_id, msg);
10401 }
10402 inline void ChannelMessageHandler::handle_tx_abort(struct LDKPublicKey their_node_id, const struct LDKTxAbort *NONNULL_PTR msg) {
10403         (self.handle_tx_abort)(self.this_arg, their_node_id, msg);
10404 }
10405 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
10406         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
10407 }
10408 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
10409         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
10410 }
10411 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
10412         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
10413 }
10414 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
10415         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
10416 }
10417 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
10418         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
10419 }
10420 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
10421         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
10422 }
10423 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
10424         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
10425 }
10426 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
10427         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
10428 }
10429 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
10430         (self.peer_disconnected)(self.this_arg, their_node_id);
10431 }
10432 inline LDK::CResult_NoneNoneZ ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound) {
10433         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, msg, inbound);
10434         return ret;
10435 }
10436 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
10437         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
10438 }
10439 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
10440         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
10441 }
10442 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
10443         (self.handle_error)(self.this_arg, their_node_id, msg);
10444 }
10445 inline LDK::NodeFeatures ChannelMessageHandler::provided_node_features() {
10446         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
10447         return ret;
10448 }
10449 inline LDK::InitFeatures ChannelMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
10450         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
10451         return ret;
10452 }
10453 inline LDK::COption_CVec_ChainHashZZ ChannelMessageHandler::get_genesis_hashes() {
10454         LDK::COption_CVec_ChainHashZZ ret = (self.get_genesis_hashes)(self.this_arg);
10455         return ret;
10456 }
10457 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
10458         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
10459         return ret;
10460 }
10461 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
10462         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
10463         return ret;
10464 }
10465 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
10466         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
10467         return ret;
10468 }
10469 inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcement(uint64_t starting_point) {
10470         LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcement)(self.this_arg, starting_point);
10471         return ret;
10472 }
10473 inline LDK::NodeAnnouncement RoutingMessageHandler::get_next_node_announcement(struct LDKNodeId starting_point) {
10474         LDK::NodeAnnouncement ret = (self.get_next_node_announcement)(self.this_arg, starting_point);
10475         return ret;
10476 }
10477 inline LDK::CResult_NoneNoneZ RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
10478         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
10479         return ret;
10480 }
10481 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
10482         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
10483         return ret;
10484 }
10485 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
10486         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
10487         return ret;
10488 }
10489 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
10490         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
10491         return ret;
10492 }
10493 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
10494         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
10495         return ret;
10496 }
10497 inline bool RoutingMessageHandler::processing_queue_high() {
10498         bool ret = (self.processing_queue_high)(self.this_arg);
10499         return ret;
10500 }
10501 inline LDK::NodeFeatures RoutingMessageHandler::provided_node_features() {
10502         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
10503         return ret;
10504 }
10505 inline LDK::InitFeatures RoutingMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
10506         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
10507         return ret;
10508 }
10509 inline void OnionMessageHandler::handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg) {
10510         (self.handle_onion_message)(self.this_arg, peer_node_id, msg);
10511 }
10512 inline LDK::CResult_NoneNoneZ OnionMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
10513         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
10514         return ret;
10515 }
10516 inline void OnionMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
10517         (self.peer_disconnected)(self.this_arg, their_node_id);
10518 }
10519 inline LDK::NodeFeatures OnionMessageHandler::provided_node_features() {
10520         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
10521         return ret;
10522 }
10523 inline LDK::InitFeatures OnionMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
10524         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
10525         return ret;
10526 }
10527 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
10528         (self.log)(self.this_arg, record);
10529 }
10530 inline void FutureCallback::call() {
10531         (self.call)(self.this_arg);
10532 }
10533 inline LDK::COption_OffersMessageZ OffersMessageHandler::handle_message(struct LDKOffersMessage message) {
10534         LDK::COption_OffersMessageZ ret = (self.handle_message)(self.this_arg, message);
10535         return ret;
10536 }
10537 inline void BroadcasterInterface::broadcast_transactions(struct LDKCVec_TransactionZ txs) {
10538         (self.broadcast_transactions)(self.this_arg, txs);
10539 }
10540 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
10541         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
10542         return ret;
10543 }
10544 inline uint64_t CustomOnionMessageContents::tlv_type() {
10545         uint64_t ret = (self.tlv_type)(self.this_arg);
10546         return ret;
10547 }
10548 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
10549         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
10550         return ret;
10551 }
10552 inline LDK::OnionMessage OnionMessageProvider::next_onion_message_for_peer(struct LDKPublicKey peer_node_id) {
10553         LDK::OnionMessage ret = (self.next_onion_message_for_peer)(self.this_arg, peer_node_id);
10554         return ret;
10555 }
10556 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
10557         (self.process_pending_events)(self.this_arg, handler);
10558 }
10559 inline void EventHandler::handle_event(struct LDKEvent event) {
10560         (self.handle_event)(self.this_arg, event);
10561 }
10562 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
10563         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
10564         return ret;
10565 }
10566 inline uint16_t Type::type_id() {
10567         uint16_t ret = (self.type_id)(self.this_arg);
10568         return ret;
10569 }
10570 inline LDK::Str Type::debug_str() {
10571         LDK::Str ret = (self.debug_str)(self.this_arg);
10572         return ret;
10573 }
10574 inline LDK::UtxoResult UtxoLookup::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
10575         LDK::UtxoResult ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
10576         return ret;
10577 }
10578 inline LDK::CResult_OnionMessagePathNoneZ MessageRouter::find_path(struct LDKPublicKey sender, struct LDKCVec_PublicKeyZ peers, struct LDKDestination destination) {
10579         LDK::CResult_OnionMessagePathNoneZ ret = (self.find_path)(self.this_arg, sender, peers, destination);
10580         return ret;
10581 }
10582 inline LDK::COption_CustomOnionMessageContentsZ CustomOnionMessageHandler::handle_custom_message(struct LDKCustomOnionMessageContents msg) {
10583         LDK::COption_CustomOnionMessageContentsZ ret = (self.handle_custom_message)(self.this_arg, msg);
10584         return ret;
10585 }
10586 inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ CustomOnionMessageHandler::read_custom_message(uint64_t message_type, struct LDKu8slice buffer) {
10587         LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ ret = (self.read_custom_message)(self.this_arg, message_type, buffer);
10588         return ret;
10589 }
10590 inline LDK::ChannelMonitorUpdateStatus Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
10591         LDK::ChannelMonitorUpdateStatus ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
10592         return ret;
10593 }
10594 inline LDK::ChannelMonitorUpdateStatus Persist::update_persisted_channel(struct LDKOutPoint channel_id, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
10595         LDK::ChannelMonitorUpdateStatus ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
10596         return ret;
10597 }
10598 }