Update auto-generated bindings to include ln-transaction-sync
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class RefundMaybeWithDerivedMetadataBuilder;
6 class Refund;
7 class Retry;
8 class RetryableSendFailure;
9 class PaymentSendFailure;
10 class ProbeSendFailure;
11 class RecipientOnionFields;
12 class InvoiceWithExplicitSigningPubkeyBuilder;
13 class InvoiceWithDerivedSigningPubkeyBuilder;
14 class UnsignedBolt12Invoice;
15 class SignBolt12InvoiceFn;
16 class Bolt12Invoice;
17 class BlindedPayInfo;
18 class DelayedPaymentOutputDescriptor;
19 class StaticPaymentOutputDescriptor;
20 class SpendableOutputDescriptor;
21 class ChannelDerivationParameters;
22 class HTLCDescriptor;
23 class ChannelSigner;
24 class Recipient;
25 class EntropySource;
26 class NodeSigner;
27 class OutputSpender;
28 class SignerProvider;
29 class ChangeDestinationSource;
30 class InMemorySigner;
31 class KeysManager;
32 class PhantomKeysManager;
33 class RandomBytes;
34 class BackgroundProcessor;
35 class GossipSync;
36 class DefaultRouter;
37 class Router;
38 class ScorerAccountingForInFlightHtlcs;
39 class InFlightHtlcs;
40 class RouteHop;
41 class BlindedTail;
42 class Path;
43 class Route;
44 class RouteParameters;
45 class PaymentParameters;
46 class Payee;
47 class RouteHint;
48 class RouteHintHop;
49 class FirstHopCandidate;
50 class PublicHopCandidate;
51 class PrivateHopCandidate;
52 class BlindedPathCandidate;
53 class OneHopBlindedPathCandidate;
54 class CandidateRouteHop;
55 class ScoreLookUp;
56 class ScoreUpdate;
57 class Score;
58 class LockableScore;
59 class WriteableScore;
60 class MultiThreadedLockableScore;
61 class MultiThreadedScoreLockRead;
62 class MultiThreadedScoreLockWrite;
63 class ChannelUsage;
64 class FixedPenaltyScorer;
65 class ProbabilisticScorer;
66 class ProbabilisticScoringFeeParameters;
67 class ProbabilisticScoringDecayParameters;
68 class BestBlock;
69 class Listen;
70 class Confirm;
71 class ChannelMonitorUpdateStatus;
72 class Watch;
73 class Filter;
74 class WatchedOutput;
75 class InitFeatures;
76 class NodeFeatures;
77 class ChannelFeatures;
78 class Bolt11InvoiceFeatures;
79 class OfferFeatures;
80 class InvoiceRequestFeatures;
81 class Bolt12InvoiceFeatures;
82 class BlindedHopFeatures;
83 class ChannelTypeFeatures;
84 class OfferId;
85 class OfferWithExplicitMetadataBuilder;
86 class OfferWithDerivedMetadataBuilder;
87 class Offer;
88 class Amount;
89 class Quantity;
90 class NodeId;
91 class NetworkGraph;
92 class ReadOnlyNetworkGraph;
93 class NetworkUpdate;
94 class P2PGossipSync;
95 class ChannelUpdateInfo;
96 class ChannelInfo;
97 class DirectedChannelInfo;
98 class EffectiveCapacity;
99 class RoutingFees;
100 class NodeAnnouncementInfo;
101 class NodeAlias;
102 class NodeInfo;
103 class ShortChannelIdError;
104 class InboundHTLCErr;
105 class AnchorDescriptor;
106 class BumpTransactionEvent;
107 class Input;
108 class Utxo;
109 class CoinSelection;
110 class CoinSelectionSource;
111 class WalletSource;
112 class Wallet;
113 class BumpTransactionEventHandler;
114 class PendingHTLCRouting;
115 class BlindedForward;
116 class PendingHTLCInfo;
117 class BlindedFailure;
118 class FailureCode;
119 class ChannelManager;
120 class ChainParameters;
121 class RecentPaymentDetails;
122 class PhantomRouteHints;
123 class ChannelManagerReadArgs;
124 class ChannelHandshakeConfig;
125 class ChannelHandshakeLimits;
126 class MaxDustHTLCExposure;
127 class ChannelConfig;
128 class ChannelConfigUpdate;
129 class UserConfig;
130 class APIError;
131 class TaggedHash;
132 class SignError;
133 class EcdsaChannelSigner;
134 class WriteableEcdsaChannelSigner;
135 class ChannelMonitorUpdate;
136 class MonitorEvent;
137 class HTLCUpdate;
138 class Balance;
139 class ChannelMonitor;
140 class ExpandedKey;
141 class CustomMessageHandler;
142 class IgnoringMessageHandler;
143 class ErroringMessageHandler;
144 class MessageHandler;
145 class SocketDescriptor;
146 class PeerDetails;
147 class PeerHandleError;
148 class PeerManager;
149 class GraphSyncError;
150 class RapidGossipSync;
151 class KVStore;
152 class Persister;
153 class MonitorUpdatingPersister;
154 class InvoiceRequestWithExplicitPayerIdBuilder;
155 class InvoiceRequestWithDerivedPayerIdBuilder;
156 class UnsignedInvoiceRequest;
157 class SignInvoiceRequestFn;
158 class InvoiceRequest;
159 class VerifiedInvoiceRequest;
160 class InvoiceRequestFields;
161 class DecodeError;
162 class Init;
163 class ErrorMessage;
164 class WarningMessage;
165 class Ping;
166 class Pong;
167 class CommonOpenChannelFields;
168 class OpenChannel;
169 class OpenChannelV2;
170 class CommonAcceptChannelFields;
171 class AcceptChannel;
172 class AcceptChannelV2;
173 class FundingCreated;
174 class FundingSigned;
175 class ChannelReady;
176 class Stfu;
177 class Splice;
178 class SpliceAck;
179 class SpliceLocked;
180 class TxAddInput;
181 class TxAddOutput;
182 class TxRemoveInput;
183 class TxRemoveOutput;
184 class TxComplete;
185 class TxSignatures;
186 class TxInitRbf;
187 class TxAckRbf;
188 class TxAbort;
189 class Shutdown;
190 class ClosingSignedFeeRange;
191 class ClosingSigned;
192 class UpdateAddHTLC;
193 class OnionMessage;
194 class UpdateFulfillHTLC;
195 class UpdateFailHTLC;
196 class UpdateFailMalformedHTLC;
197 class CommitmentSigned;
198 class RevokeAndACK;
199 class UpdateFee;
200 class ChannelReestablish;
201 class AnnouncementSignatures;
202 class SocketAddress;
203 class SocketAddressParseError;
204 class UnsignedGossipMessage;
205 class UnsignedNodeAnnouncement;
206 class NodeAnnouncement;
207 class UnsignedChannelAnnouncement;
208 class ChannelAnnouncement;
209 class UnsignedChannelUpdate;
210 class ChannelUpdate;
211 class QueryChannelRange;
212 class ReplyChannelRange;
213 class QueryShortChannelIds;
214 class ReplyShortChannelIdsEnd;
215 class GossipTimestampFilter;
216 class ErrorAction;
217 class LightningError;
218 class CommitmentUpdate;
219 class ChannelMessageHandler;
220 class RoutingMessageHandler;
221 class OnionMessageHandler;
222 class FinalOnionHopData;
223 class OnionPacket;
224 class TrampolineOnionPacket;
225 class Level;
226 class Record;
227 class Logger;
228 class InboundHTLCStateDetails;
229 class InboundHTLCDetails;
230 class OutboundHTLCStateDetails;
231 class OutboundHTLCDetails;
232 class CounterpartyForwardingInfo;
233 class ChannelCounterparty;
234 class ChannelDetails;
235 class ChannelShutdownState;
236 class FutureCallback;
237 class Future;
238 class Sleeper;
239 class OffersMessageHandler;
240 class OffersMessage;
241 class HTLCClaim;
242 class CounterpartyCommitmentSecrets;
243 class TxCreationKeys;
244 class ChannelPublicKeys;
245 class HTLCOutputInCommitment;
246 class ChannelTransactionParameters;
247 class CounterpartyChannelTransactionParameters;
248 class DirectedChannelTransactionParameters;
249 class HolderCommitmentTransaction;
250 class BuiltCommitmentTransaction;
251 class ClosingTransaction;
252 class TrustedClosingTransaction;
253 class CommitmentTransaction;
254 class TrustedCommitmentTransaction;
255 class ShutdownScript;
256 class InvalidShutdownScript;
257 class Bolt12ParseError;
258 class Bolt12SemanticError;
259 class BroadcasterInterface;
260 class ConfirmationTarget;
261 class FeeEstimator;
262 class Packet;
263 class ParsedOnionMessageContents;
264 class OnionMessageContents;
265 class PaymentPurpose;
266 class ClaimedHTLC;
267 class PathFailure;
268 class ClosureReason;
269 class HTLCDestination;
270 class PaymentFailureReason;
271 class Event;
272 class MessageSendEvent;
273 class MessageSendEventsProvider;
274 class EventsProvider;
275 class EventHandler;
276 class ElectrumSyncClient;
277 class EsploraSyncClient;
278 class Bolt11ParseError;
279 class ParseOrSemanticError;
280 class Bolt11Invoice;
281 class SignedRawBolt11Invoice;
282 class RawBolt11Invoice;
283 class RawDataPart;
284 class PositiveTimestamp;
285 class SiPrefix;
286 class Currency;
287 class Sha256;
288 class Description;
289 class PayeePubKey;
290 class ExpiryTime;
291 class MinFinalCltvExpiryDelta;
292 class Fallback;
293 class Bolt11InvoiceSignature;
294 class PrivateRoute;
295 class CreationError;
296 class Bolt11SemanticError;
297 class SignOrCreationError;
298 class OutPoint;
299 class BigSize;
300 class Hostname;
301 class TransactionU16LenLimited;
302 class UntrustedString;
303 class PrintableString;
304 class ChannelId;
305 class CustomMessageReader;
306 class Type;
307 class ForwardNode;
308 class ForwardTlvs;
309 class ReceiveTlvs;
310 class PaymentRelay;
311 class PaymentConstraints;
312 class PaymentContext;
313 class UnknownPaymentContext;
314 class Bolt12OfferContext;
315 class Bolt12RefundContext;
316 class UtxoLookupError;
317 class UtxoResult;
318 class UtxoLookup;
319 class UtxoFuture;
320 class OnionMessenger;
321 class MessageRouter;
322 class DefaultMessageRouter;
323 class OnionMessagePath;
324 class Destination;
325 class SendSuccess;
326 class SendError;
327 class CustomOnionMessageHandler;
328 class PeeledOnion;
329 class FilesystemStore;
330 class TxSyncError;
331 class NextMessageHop;
332 class BlindedPath;
333 class IntroductionNode;
334 class Direction;
335 class NodeIdLookUp;
336 class EmptyNodeIdLookUp;
337 class BlindedHop;
338 class InvoiceError;
339 class ErroneousField;
340 class TrackedSpendableOutput;
341 class OutputSpendStatus;
342 class OutputSweeper;
343 class SpendingDelay;
344 class DelayedPaymentBasepoint;
345 class DelayedPaymentKey;
346 class HtlcBasepoint;
347 class HtlcKey;
348 class RevocationBasepoint;
349 class RevocationKey;
350 class MonitorUpdateId;
351 class Persist;
352 class LockedChannelMonitor;
353 class ChainMonitor;
354 class CResult_HtlcKeyDecodeErrorZ;
355 class CResult_TransactionU16LenLimitedNoneZ;
356 class CVec_TrackedSpendableOutputZ;
357 class CResult_LockedChannelMonitorNoneZ;
358 class CVec_C2Tuple_BlindedPayInfoBlindedPathZZ;
359 class CResult_PhantomRouteHintsDecodeErrorZ;
360 class CResult_FundingCreatedDecodeErrorZ;
361 class CVec_C2Tuple_u32TxOutZZ;
362 class CResult_RetryDecodeErrorZ;
363 class CResult_BlindedForwardDecodeErrorZ;
364 class CResult_ChannelInfoDecodeErrorZ;
365 class COption_PaymentContextZ;
366 class COption_MaxDustHTLCExposureZ;
367 class COption_OffersMessageZ;
368 class CResult_CVec_u8ZPeerHandleErrorZ;
369 class COption_NetworkUpdateZ;
370 class COption_u64Z;
371 class CResult_OnionPacketDecodeErrorZ;
372 class CResult_GossipTimestampFilterDecodeErrorZ;
373 class CVec_ConfirmZ;
374 class CResult_RouteHintDecodeErrorZ;
375 class COption_FilterZ;
376 class C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ;
377 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
378 class CResult_COption_APIErrorZDecodeErrorZ;
379 class CVec_UpdateAddHTLCZ;
380 class CResult_TxAbortDecodeErrorZ;
381 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
382 class COption_u32Z;
383 class CResult_RecipientOnionFieldsNoneZ;
384 class C2Tuple__u1632_u1632Z;
385 class CResult_CVec_StrZIOErrorZ;
386 class COption_ECDSASignatureZ;
387 class CResult_TransactionNoneZ;
388 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
389 class CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ;
390 class CResult_CommitmentSignedDecodeErrorZ;
391 class CResult_CommitmentTransactionDecodeErrorZ;
392 class CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ;
393 class CResult_StfuDecodeErrorZ;
394 class CResult_OpenChannelDecodeErrorZ;
395 class CResult_ErrorMessageDecodeErrorZ;
396 class COption_APIErrorZ;
397 class CVec_PeerDetailsZ;
398 class CResult_u64ShortChannelIdErrorZ;
399 class CResult_QueryChannelRangeDecodeErrorZ;
400 class CVec_InputZ;
401 class CResult_ChannelFeaturesDecodeErrorZ;
402 class CResult_ChannelReadyDecodeErrorZ;
403 class CVec_TransactionZ;
404 class CResult_UpdateFeeDecodeErrorZ;
405 class CResult_NoneBolt11SemanticErrorZ;
406 class CResult_RevocationBasepointDecodeErrorZ;
407 class COption_OnionMessageContentsZ;
408 class CResult_NoneRetryableSendFailureZ;
409 class CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ;
410 class CResult_NodeIdDecodeErrorZ;
411 class CResult_boolLightningErrorZ;
412 class CResult_ChannelShutdownStateDecodeErrorZ;
413 class CResult_NodeAnnouncementInfoDecodeErrorZ;
414 class CResult_InvoiceRequestBolt12SemanticErrorZ;
415 class CResult_COption_NetworkUpdateZDecodeErrorZ;
416 class CVec_UpdateFailMalformedHTLCZ;
417 class CResult_ShutdownScriptNoneZ;
418 class CResult_PendingHTLCInfoInboundHTLCErrZ;
419 class CResult_PendingHTLCInfoDecodeErrorZ;
420 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
421 class CResult_ShutdownScriptInvalidShutdownScriptZ;
422 class COption_HTLCDestinationZ;
423 class CVec_RouteHopZ;
424 class C2Tuple_PublicKeyCVec_SocketAddressZZ;
425 class CResult_CVec_UtxoZNoneZ;
426 class CResult_CVec_u8ZIOErrorZ;
427 class CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ;
428 class CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ;
429 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ;
430 class C3Tuple_OffersMessageDestinationBlindedPathZ;
431 class CVec_ThirtyTwoBytesZ;
432 class CResult_ChannelMonitorUpdateStatusNoneZ;
433 class CResult_ClosingSignedDecodeErrorZ;
434 class CVec_CResult_NoneAPIErrorZZ;
435 class CResult_SchnorrSignatureNoneZ;
436 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
437 class CResult_HTLCDescriptorDecodeErrorZ;
438 class CVec_RecentPaymentDetailsZ;
439 class CVec_RouteHintHopZ;
440 class CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ;
441 class CResult_UntrustedStringDecodeErrorZ;
442 class CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ;
443 class CVec_U5Z;
444 class CResult_PaymentParametersDecodeErrorZ;
445 class C2Tuple_ThirtyTwoBytesChannelMonitorZ;
446 class COption_U128Z;
447 class CResult_DelayedPaymentBasepointDecodeErrorZ;
448 class C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ;
449 class CResult_TxAckRbfDecodeErrorZ;
450 class CResult_Bolt11InvoiceBolt11SemanticErrorZ;
451 class COption_UtxoLookupZ;
452 class CResult_PongDecodeErrorZ;
453 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
454 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ;
455 class CResult_ChannelIdAPIErrorZ;
456 class CResult_CVec_u8ZNoneZ;
457 class CVec_C2Tuple_ChannelIdPublicKeyZZ;
458 class C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ;
459 class CResult_ChannelTransactionParametersDecodeErrorZ;
460 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ;
461 class CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ;
462 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
463 class CResult_InFlightHtlcsDecodeErrorZ;
464 class CResult_COption_HTLCDestinationZDecodeErrorZ;
465 class CResult_Bolt12OfferContextDecodeErrorZ;
466 class CResult_ThirtyTwoBytesNoneZ;
467 class C3Tuple_OnionMessageContentsDestinationBlindedPathZ;
468 class C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ;
469 class CResult_SendSuccessSendErrorZ;
470 class CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ;
471 class C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ;
472 class CResult_BlindedHopDecodeErrorZ;
473 class CResult_NoneLightningErrorZ;
474 class CResult_FixedPenaltyScorerDecodeErrorZ;
475 class CVec_BlindedPathZ;
476 class CResult_NonePeerHandleErrorZ;
477 class CResult_FinalOnionHopDataDecodeErrorZ;
478 class CResult_TrustedCommitmentTransactionNoneZ;
479 class CResult_COption_EventZDecodeErrorZ;
480 class CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ;
481 class CResult_PaymentFailureReasonDecodeErrorZ;
482 class COption_SocketAddressZ;
483 class CResult_COption_MonitorEventZDecodeErrorZ;
484 class COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ;
485 class CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ;
486 class CResult_RoutingFeesDecodeErrorZ;
487 class CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ;
488 class CResult_NoneTxSyncErrorZ;
489 class CResult_DescriptionCreationErrorZ;
490 class CResult_QueryShortChannelIdsDecodeErrorZ;
491 class CResult_VerifiedInvoiceRequestNoneZ;
492 class CResult_UpdateAddHTLCDecodeErrorZ;
493 class CResult_PaymentRelayDecodeErrorZ;
494 class COption_OutboundHTLCStateDetailsZ;
495 class COption_MonitorEventZ;
496 class COption_TypeZ;
497 class CResult_COption_TypeZDecodeErrorZ;
498 class CResult_COption_PathFailureZDecodeErrorZ;
499 class CResult_Bolt11InvoiceSignOrCreationErrorZ;
500 class CResult_UpdateFailHTLCDecodeErrorZ;
501 class CResult_CVec_BlindedPathZNoneZ;
502 class CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ;
503 class CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ;
504 class CResult_SpendableOutputDescriptorDecodeErrorZ;
505 class CResult_RevokeAndACKDecodeErrorZ;
506 class CResult_UnsignedChannelUpdateDecodeErrorZ;
507 class CResult_PayeePubKeySecp256k1ErrorZ;
508 class C2Tuple__u832u16Z;
509 class COption_BigEndianScalarZ;
510 class CVec_ChannelIdZ;
511 class CResult_PublicKeySecp256k1ErrorZ;
512 class CResult_CVec_ECDSASignatureZNoneZ;
513 class CVec_BlindedHopZ;
514 class CResult_COption_ClosureReasonZDecodeErrorZ;
515 class CResult_InvoiceErrorDecodeErrorZ;
516 class C2Tuple_BestBlockOutputSweeperZ;
517 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
518 class CResult_RouteParametersDecodeErrorZ;
519 class CResult_PrivateRouteCreationErrorZ;
520 class CResult_NodeAliasDecodeErrorZ;
521 class CVec_UpdateFulfillHTLCZ;
522 class CVec_C2Tuple_u32CVec_u8ZZZ;
523 class C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ;
524 class CResult_AnnouncementSignaturesDecodeErrorZ;
525 class CResult_TxCompleteDecodeErrorZ;
526 class CResult_UpdateFulfillHTLCDecodeErrorZ;
527 class CResult_NodeFeaturesDecodeErrorZ;
528 class CResult_InMemorySignerDecodeErrorZ;
529 class CResult_TxSignaturesDecodeErrorZ;
530 class CVec_HTLCDescriptorZ;
531 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
532 class COption_PathFailureZ;
533 class CResult_StrSecp256k1ErrorZ;
534 class CVec_ECDSASignatureZ;
535 class CResult_ChannelUpdateInfoDecodeErrorZ;
536 class CVec_UpdateFailHTLCZ;
537 class CVec_TxOutZ;
538 class CVec_InboundHTLCDetailsZ;
539 class CVec_OutboundHTLCDetailsZ;
540 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
541 class CResult_TrackedSpendableOutputDecodeErrorZ;
542 class CVec_SpendableOutputDescriptorZ;
543 class C2Tuple_OutPointCVec_u8ZZ;
544 class CResult_WitnessNoneZ;
545 class COption_C2Tuple_u64u64ZZ;
546 class CResult_ChannelAnnouncementDecodeErrorZ;
547 class CResult_HTLCUpdateDecodeErrorZ;
548 class CResult_TxAddInputDecodeErrorZ;
549 class CResult_PeeledOnionNoneZ;
550 class CResult_TxInitRbfDecodeErrorZ;
551 class COption_WriteableScoreZ;
552 class CVec_StrZ;
553 class CResult_SpliceAckDecodeErrorZ;
554 class CResult_PositiveTimestampCreationErrorZ;
555 class CVec_C2Tuple_OutPointChannelIdZZ;
556 class CResult_ChannelMonitorUpdateDecodeErrorZ;
557 class C2Tuple_BlindedPayInfoBlindedPathZ;
558 class CResult_ReplyChannelRangeDecodeErrorZ;
559 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
560 class CResult_TrustedClosingTransactionNoneZ;
561 class CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ;
562 class C2Tuple_PublicKeyTypeZ;
563 class CResult_TxRemoveOutputDecodeErrorZ;
564 class CResult_ChannelReestablishDecodeErrorZ;
565 class CResult_OnionMessageDecodeErrorZ;
566 class CResult_Bolt11InvoiceParseOrSemanticErrorZ;
567 class CResult_InitFeaturesDecodeErrorZ;
568 class CResult_PublicKeyNoneZ;
569 class CResult_PingDecodeErrorZ;
570 class CResult_RevocationKeyDecodeErrorZ;
571 class CResult_ChannelIdDecodeErrorZ;
572 class CResult_BlindedHopFeaturesDecodeErrorZ;
573 class CVec_TransactionOutputsZ;
574 class COption_HTLCClaimZ;
575 class COption_boolZ;
576 class COption_StrZ;
577 class CResult_ProbabilisticScorerDecodeErrorZ;
578 class CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ;
579 class CResult_ShutdownScriptDecodeErrorZ;
580 class CResult_ElectrumSyncClientTxSyncErrorZ;
581 class C2Tuple_usizeTransactionZ;
582 class CResult_NodeAnnouncementDecodeErrorZ;
583 class CVec_FutureZ;
584 class CVec_ChannelMonitorZ;
585 class CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ;
586 class CResult_AcceptChannelV2DecodeErrorZ;
587 class CResult_RouteHopDecodeErrorZ;
588 class CResult_OfferIdDecodeErrorZ;
589 class CVec_HTLCOutputInCommitmentZ;
590 class CResult_CoinSelectionNoneZ;
591 class CResult_TxCreationKeysDecodeErrorZ;
592 class CResult_SiPrefixBolt11ParseErrorZ;
593 class CResult_RefundBolt12SemanticErrorZ;
594 class CResult_NoneIOErrorZ;
595 class CResult_MaxDustHTLCExposureDecodeErrorZ;
596 class CVec_BalanceZ;
597 class CVec_CommitmentTransactionZ;
598 class CResult_FundingSignedDecodeErrorZ;
599 class CResult_RecoverableSignatureNoneZ;
600 class CResult_SocketAddressDecodeErrorZ;
601 class C2Tuple_Z;
602 class CResult_BlindedPathDecodeErrorZ;
603 class CResult_InboundHTLCDetailsDecodeErrorZ;
604 class C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ;
605 class CVec_PathZ;
606 class CResult_NetworkGraphDecodeErrorZ;
607 class CResult_NodeInfoDecodeErrorZ;
608 class CVec_NodeIdZ;
609 class CVec_u8Z;
610 class CResult_RouteLightningErrorZ;
611 class CResult_NonePaymentSendFailureZ;
612 class CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ;
613 class CResult_ChannelPublicKeysDecodeErrorZ;
614 class CVec_ClaimedHTLCZ;
615 class COption_CVec_ThirtyTwoBytesZZ;
616 class CVec_SocketAddressZ;
617 class CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ;
618 class CResult_ThirtyTwoBytesPaymentSendFailureZ;
619 class CResult_WarningMessageDecodeErrorZ;
620 class CResult_ChannelCounterpartyDecodeErrorZ;
621 class CResult_HolderCommitmentTransactionDecodeErrorZ;
622 class CVec_ForwardNodeZ;
623 class CResult_DelayedPaymentKeyDecodeErrorZ;
624 class CResult_InitDecodeErrorZ;
625 class CResult_OfferBolt12SemanticErrorZ;
626 class CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ;
627 class CResult_SpliceDecodeErrorZ;
628 class CResult_PaymentPurposeDecodeErrorZ;
629 class CResult_ClaimedHTLCDecodeErrorZ;
630 class CResult_OutPointDecodeErrorZ;
631 class CVec_ChannelDetailsZ;
632 class C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ;
633 class CResult_Bolt11InvoiceFeaturesDecodeErrorZ;
634 class CVec_MessageSendEventZ;
635 class CVec_MonitorUpdateIdZ;
636 class CResult_RouteHintHopDecodeErrorZ;
637 class CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ;
638 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
639 class CResult_BlindedPayInfoDecodeErrorZ;
640 class CResult_ThirtyTwoBytesAPIErrorZ;
641 class COption_ChannelShutdownStateZ;
642 class CResult_Bolt12InvoiceBolt12SemanticErrorZ;
643 class CResult_InvoiceRequestFieldsDecodeErrorZ;
644 class CResult_AcceptChannelDecodeErrorZ;
645 class CResult_HostnameDecodeErrorZ;
646 class C2Tuple_u64u16Z;
647 class COption_ThirtyTwoBytesZ;
648 class CVec_u64Z;
649 class CResult_NoneBolt12SemanticErrorZ;
650 class COption_SecretKeyZ;
651 class COption_InboundHTLCStateDetailsZ;
652 class CResult_UnknownPaymentContextDecodeErrorZ;
653 class CResult_C2Tuple_CVec_u8Zu64ZNoneZ;
654 class CResult_OutputSweeperDecodeErrorZ;
655 class COption_EventZ;
656 class CResult_ChannelTypeFeaturesDecodeErrorZ;
657 class COption_CVec_SocketAddressZZ;
658 class CVec_RouteHintZ;
659 class COption_u16Z;
660 class COption_PaymentFailureReasonZ;
661 class CResult_Bolt12RefundContextDecodeErrorZ;
662 class CResult_ECDSASignatureNoneZ;
663 class CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ;
664 class C2Tuple_ChannelIdPublicKeyZ;
665 class CVec_WitnessZ;
666 class CResult_BlindedTailDecodeErrorZ;
667 class CResult_SocketAddressSocketAddressParseErrorZ;
668 class COption_C2Tuple_u64u16ZZ;
669 class CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ;
670 class CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ;
671 class CResult_ChannelDerivationParametersDecodeErrorZ;
672 class CResult_PaymentConstraintsDecodeErrorZ;
673 class CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ;
674 class CResult_OnionMessagePathNoneZ;
675 class C2Tuple_u32CVec_u8ZZ;
676 class CVec_C2Tuple_PublicKeyTypeZZ;
677 class CResult_OutboundHTLCDetailsDecodeErrorZ;
678 class CResult_RefundBolt12ParseErrorZ;
679 class CResult_u32GraphSyncErrorZ;
680 class CVec_C2Tuple_u64CVec_u8ZZZ;
681 class CVec_PhantomRouteHintsZ;
682 class CResult_OffersMessageDecodeErrorZ;
683 class CResult_NoneAPIErrorZ;
684 class CResult_Bolt12InvoiceFeaturesDecodeErrorZ;
685 class COption_f64Z;
686 class CResult_TxRemoveInputDecodeErrorZ;
687 class CVec_PublicKeyZ;
688 class C2Tuple_CVec_u8Zu64Z;
689 class CVec_C2Tuple_usizeTransactionZZ;
690 class CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ;
691 class CResult_PendingHTLCRoutingDecodeErrorZ;
692 class C2Tuple_u64u64Z;
693 class CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ;
694 class CResult_ChannelDetailsDecodeErrorZ;
695 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
696 class CResult_RecipientOnionFieldsDecodeErrorZ;
697 class C2Tuple_u32TxOutZ;
698 class CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ;
699 class CResult_PaymentContextDecodeErrorZ;
700 class CVec_UtxoZ;
701 class CResult_ChannelConfigDecodeErrorZ;
702 class CVec_PrivateRouteZ;
703 class COption_i64Z;
704 class C2Tuple_ThirtyTwoBytesChannelManagerZ;
705 class CResult_COption_OnionMessageContentsZDecodeErrorZ;
706 class C2Tuple_u64CVec_u8ZZ;
707 class CResult_OfferBolt12ParseErrorZ;
708 class CResult_ThirtyTwoBytesRetryableSendFailureZ;
709 class CVec_MonitorEventZ;
710 class CResult_ShutdownDecodeErrorZ;
711 class CResult_BigSizeDecodeErrorZ;
712 class CResult_TxOutUtxoLookupErrorZ;
713 class CResult_BlindedPathNoneZ;
714 class COption_usizeZ;
715 class CResult_NoneNoneZ;
716 class CResult_boolPeerHandleErrorZ;
717 class CResult_ChannelUpdateDecodeErrorZ;
718 class CVec_APIErrorZ;
719 class COption_TxOutZ;
720 class COption_ClosureReasonZ;
721 class CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ;
722 class CResult_TransactionU16LenLimitedDecodeErrorZ;
723 class COption_AmountZ;
724 class CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ;
725 class CResult_OpenChannelV2DecodeErrorZ;
726 class CResult_BestBlockDecodeErrorZ;
727 class CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ;
728 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
729 class CResult_OutputSpendStatusDecodeErrorZ;
730 class C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ;
731 class CResult_RouteDecodeErrorZ;
732 class CResult_BlindedFailureDecodeErrorZ;
733 class CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ;
734 class COption_NoneZ;
735 class CResult_SpliceLockedDecodeErrorZ;
736 class COption_CVec_u8ZZ;
737 class COption_QuantityZ;
738 class CResult_TxAddOutputDecodeErrorZ;
739 class CResult_HtlcBasepointDecodeErrorZ;
740 class C2Tuple_OutPointChannelIdZ;
741
742 class Str {
743 private:
744         LDKStr self;
745 public:
746         Str(const Str&) = delete;
747         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
748         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
749         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
750         ~Str() { Str_free(self); }
751         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
752         LDKStr* operator &() { return &self; }
753         LDKStr* operator ->() { return &self; }
754         const LDKStr* operator &() const { return &self; }
755         const LDKStr* operator ->() const { return &self; }
756 };
757 class RefundMaybeWithDerivedMetadataBuilder {
758 private:
759         LDKRefundMaybeWithDerivedMetadataBuilder self;
760 public:
761         RefundMaybeWithDerivedMetadataBuilder(const RefundMaybeWithDerivedMetadataBuilder&) = delete;
762         RefundMaybeWithDerivedMetadataBuilder(RefundMaybeWithDerivedMetadataBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(RefundMaybeWithDerivedMetadataBuilder)); }
763         RefundMaybeWithDerivedMetadataBuilder(LDKRefundMaybeWithDerivedMetadataBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRefundMaybeWithDerivedMetadataBuilder)); }
764         operator LDKRefundMaybeWithDerivedMetadataBuilder() && { LDKRefundMaybeWithDerivedMetadataBuilder res = self; memset(&self, 0, sizeof(LDKRefundMaybeWithDerivedMetadataBuilder)); return res; }
765         ~RefundMaybeWithDerivedMetadataBuilder() { RefundMaybeWithDerivedMetadataBuilder_free(self); }
766         RefundMaybeWithDerivedMetadataBuilder& operator=(RefundMaybeWithDerivedMetadataBuilder&& o) { RefundMaybeWithDerivedMetadataBuilder_free(self); self = o.self; memset(&o, 0, sizeof(RefundMaybeWithDerivedMetadataBuilder)); return *this; }
767         LDKRefundMaybeWithDerivedMetadataBuilder* operator &() { return &self; }
768         LDKRefundMaybeWithDerivedMetadataBuilder* operator ->() { return &self; }
769         const LDKRefundMaybeWithDerivedMetadataBuilder* operator &() const { return &self; }
770         const LDKRefundMaybeWithDerivedMetadataBuilder* operator ->() const { return &self; }
771 };
772 class Refund {
773 private:
774         LDKRefund self;
775 public:
776         Refund(const Refund&) = delete;
777         Refund(Refund&& o) : self(o.self) { memset(&o, 0, sizeof(Refund)); }
778         Refund(LDKRefund&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRefund)); }
779         operator LDKRefund() && { LDKRefund res = self; memset(&self, 0, sizeof(LDKRefund)); return res; }
780         ~Refund() { Refund_free(self); }
781         Refund& operator=(Refund&& o) { Refund_free(self); self = o.self; memset(&o, 0, sizeof(Refund)); return *this; }
782         LDKRefund* operator &() { return &self; }
783         LDKRefund* operator ->() { return &self; }
784         const LDKRefund* operator &() const { return &self; }
785         const LDKRefund* operator ->() const { return &self; }
786 };
787 class Retry {
788 private:
789         LDKRetry self;
790 public:
791         Retry(const Retry&) = delete;
792         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
793         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
794         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
795         ~Retry() { Retry_free(self); }
796         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
797         LDKRetry* operator &() { return &self; }
798         LDKRetry* operator ->() { return &self; }
799         const LDKRetry* operator &() const { return &self; }
800         const LDKRetry* operator ->() const { return &self; }
801 };
802 class RetryableSendFailure {
803 private:
804         LDKRetryableSendFailure self;
805 public:
806         RetryableSendFailure(const RetryableSendFailure&) = delete;
807         RetryableSendFailure(RetryableSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(RetryableSendFailure)); }
808         RetryableSendFailure(LDKRetryableSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetryableSendFailure)); }
809         operator LDKRetryableSendFailure() && { LDKRetryableSendFailure res = self; memset(&self, 0, sizeof(LDKRetryableSendFailure)); return res; }
810         RetryableSendFailure& operator=(RetryableSendFailure&& o) { self = o.self; memset(&o, 0, sizeof(RetryableSendFailure)); return *this; }
811         LDKRetryableSendFailure* operator &() { return &self; }
812         LDKRetryableSendFailure* operator ->() { return &self; }
813         const LDKRetryableSendFailure* operator &() const { return &self; }
814         const LDKRetryableSendFailure* operator ->() const { return &self; }
815 };
816 class PaymentSendFailure {
817 private:
818         LDKPaymentSendFailure self;
819 public:
820         PaymentSendFailure(const PaymentSendFailure&) = delete;
821         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
822         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
823         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
824         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
825         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
826         LDKPaymentSendFailure* operator &() { return &self; }
827         LDKPaymentSendFailure* operator ->() { return &self; }
828         const LDKPaymentSendFailure* operator &() const { return &self; }
829         const LDKPaymentSendFailure* operator ->() const { return &self; }
830 };
831 class ProbeSendFailure {
832 private:
833         LDKProbeSendFailure self;
834 public:
835         ProbeSendFailure(const ProbeSendFailure&) = delete;
836         ProbeSendFailure(ProbeSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(ProbeSendFailure)); }
837         ProbeSendFailure(LDKProbeSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbeSendFailure)); }
838         operator LDKProbeSendFailure() && { LDKProbeSendFailure res = self; memset(&self, 0, sizeof(LDKProbeSendFailure)); return res; }
839         ~ProbeSendFailure() { ProbeSendFailure_free(self); }
840         ProbeSendFailure& operator=(ProbeSendFailure&& o) { ProbeSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(ProbeSendFailure)); return *this; }
841         LDKProbeSendFailure* operator &() { return &self; }
842         LDKProbeSendFailure* operator ->() { return &self; }
843         const LDKProbeSendFailure* operator &() const { return &self; }
844         const LDKProbeSendFailure* operator ->() const { return &self; }
845 };
846 class RecipientOnionFields {
847 private:
848         LDKRecipientOnionFields self;
849 public:
850         RecipientOnionFields(const RecipientOnionFields&) = delete;
851         RecipientOnionFields(RecipientOnionFields&& o) : self(o.self) { memset(&o, 0, sizeof(RecipientOnionFields)); }
852         RecipientOnionFields(LDKRecipientOnionFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipientOnionFields)); }
853         operator LDKRecipientOnionFields() && { LDKRecipientOnionFields res = self; memset(&self, 0, sizeof(LDKRecipientOnionFields)); return res; }
854         ~RecipientOnionFields() { RecipientOnionFields_free(self); }
855         RecipientOnionFields& operator=(RecipientOnionFields&& o) { RecipientOnionFields_free(self); self = o.self; memset(&o, 0, sizeof(RecipientOnionFields)); return *this; }
856         LDKRecipientOnionFields* operator &() { return &self; }
857         LDKRecipientOnionFields* operator ->() { return &self; }
858         const LDKRecipientOnionFields* operator &() const { return &self; }
859         const LDKRecipientOnionFields* operator ->() const { return &self; }
860 };
861 class InvoiceWithExplicitSigningPubkeyBuilder {
862 private:
863         LDKInvoiceWithExplicitSigningPubkeyBuilder self;
864 public:
865         InvoiceWithExplicitSigningPubkeyBuilder(const InvoiceWithExplicitSigningPubkeyBuilder&) = delete;
866         InvoiceWithExplicitSigningPubkeyBuilder(InvoiceWithExplicitSigningPubkeyBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceWithExplicitSigningPubkeyBuilder)); }
867         InvoiceWithExplicitSigningPubkeyBuilder(LDKInvoiceWithExplicitSigningPubkeyBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceWithExplicitSigningPubkeyBuilder)); }
868         operator LDKInvoiceWithExplicitSigningPubkeyBuilder() && { LDKInvoiceWithExplicitSigningPubkeyBuilder res = self; memset(&self, 0, sizeof(LDKInvoiceWithExplicitSigningPubkeyBuilder)); return res; }
869         ~InvoiceWithExplicitSigningPubkeyBuilder() { InvoiceWithExplicitSigningPubkeyBuilder_free(self); }
870         InvoiceWithExplicitSigningPubkeyBuilder& operator=(InvoiceWithExplicitSigningPubkeyBuilder&& o) { InvoiceWithExplicitSigningPubkeyBuilder_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceWithExplicitSigningPubkeyBuilder)); return *this; }
871         LDKInvoiceWithExplicitSigningPubkeyBuilder* operator &() { return &self; }
872         LDKInvoiceWithExplicitSigningPubkeyBuilder* operator ->() { return &self; }
873         const LDKInvoiceWithExplicitSigningPubkeyBuilder* operator &() const { return &self; }
874         const LDKInvoiceWithExplicitSigningPubkeyBuilder* operator ->() const { return &self; }
875 };
876 class InvoiceWithDerivedSigningPubkeyBuilder {
877 private:
878         LDKInvoiceWithDerivedSigningPubkeyBuilder self;
879 public:
880         InvoiceWithDerivedSigningPubkeyBuilder(const InvoiceWithDerivedSigningPubkeyBuilder&) = delete;
881         InvoiceWithDerivedSigningPubkeyBuilder(InvoiceWithDerivedSigningPubkeyBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceWithDerivedSigningPubkeyBuilder)); }
882         InvoiceWithDerivedSigningPubkeyBuilder(LDKInvoiceWithDerivedSigningPubkeyBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceWithDerivedSigningPubkeyBuilder)); }
883         operator LDKInvoiceWithDerivedSigningPubkeyBuilder() && { LDKInvoiceWithDerivedSigningPubkeyBuilder res = self; memset(&self, 0, sizeof(LDKInvoiceWithDerivedSigningPubkeyBuilder)); return res; }
884         ~InvoiceWithDerivedSigningPubkeyBuilder() { InvoiceWithDerivedSigningPubkeyBuilder_free(self); }
885         InvoiceWithDerivedSigningPubkeyBuilder& operator=(InvoiceWithDerivedSigningPubkeyBuilder&& o) { InvoiceWithDerivedSigningPubkeyBuilder_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceWithDerivedSigningPubkeyBuilder)); return *this; }
886         LDKInvoiceWithDerivedSigningPubkeyBuilder* operator &() { return &self; }
887         LDKInvoiceWithDerivedSigningPubkeyBuilder* operator ->() { return &self; }
888         const LDKInvoiceWithDerivedSigningPubkeyBuilder* operator &() const { return &self; }
889         const LDKInvoiceWithDerivedSigningPubkeyBuilder* operator ->() const { return &self; }
890 };
891 class UnsignedBolt12Invoice {
892 private:
893         LDKUnsignedBolt12Invoice self;
894 public:
895         UnsignedBolt12Invoice(const UnsignedBolt12Invoice&) = delete;
896         UnsignedBolt12Invoice(UnsignedBolt12Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedBolt12Invoice)); }
897         UnsignedBolt12Invoice(LDKUnsignedBolt12Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedBolt12Invoice)); }
898         operator LDKUnsignedBolt12Invoice() && { LDKUnsignedBolt12Invoice res = self; memset(&self, 0, sizeof(LDKUnsignedBolt12Invoice)); return res; }
899         ~UnsignedBolt12Invoice() { UnsignedBolt12Invoice_free(self); }
900         UnsignedBolt12Invoice& operator=(UnsignedBolt12Invoice&& o) { UnsignedBolt12Invoice_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedBolt12Invoice)); return *this; }
901         LDKUnsignedBolt12Invoice* operator &() { return &self; }
902         LDKUnsignedBolt12Invoice* operator ->() { return &self; }
903         const LDKUnsignedBolt12Invoice* operator &() const { return &self; }
904         const LDKUnsignedBolt12Invoice* operator ->() const { return &self; }
905 };
906 class SignBolt12InvoiceFn {
907 private:
908         LDKSignBolt12InvoiceFn self;
909 public:
910         SignBolt12InvoiceFn(const SignBolt12InvoiceFn&) = delete;
911         SignBolt12InvoiceFn(SignBolt12InvoiceFn&& o) : self(o.self) { memset(&o, 0, sizeof(SignBolt12InvoiceFn)); }
912         SignBolt12InvoiceFn(LDKSignBolt12InvoiceFn&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignBolt12InvoiceFn)); }
913         operator LDKSignBolt12InvoiceFn() && { LDKSignBolt12InvoiceFn res = self; memset(&self, 0, sizeof(LDKSignBolt12InvoiceFn)); return res; }
914         ~SignBolt12InvoiceFn() { SignBolt12InvoiceFn_free(self); }
915         SignBolt12InvoiceFn& operator=(SignBolt12InvoiceFn&& o) { SignBolt12InvoiceFn_free(self); self = o.self; memset(&o, 0, sizeof(SignBolt12InvoiceFn)); return *this; }
916         LDKSignBolt12InvoiceFn* operator &() { return &self; }
917         LDKSignBolt12InvoiceFn* operator ->() { return &self; }
918         const LDKSignBolt12InvoiceFn* operator &() const { return &self; }
919         const LDKSignBolt12InvoiceFn* operator ->() const { return &self; }
920         /**
921          *  Signs a [`TaggedHash`] computed over the merkle root of `message`'s TLV stream.
922          */
923         inline LDK::CResult_SchnorrSignatureNoneZ sign_invoice(const struct LDKUnsignedBolt12Invoice *NONNULL_PTR message);
924 };
925 class Bolt12Invoice {
926 private:
927         LDKBolt12Invoice self;
928 public:
929         Bolt12Invoice(const Bolt12Invoice&) = delete;
930         Bolt12Invoice(Bolt12Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12Invoice)); }
931         Bolt12Invoice(LDKBolt12Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12Invoice)); }
932         operator LDKBolt12Invoice() && { LDKBolt12Invoice res = self; memset(&self, 0, sizeof(LDKBolt12Invoice)); return res; }
933         ~Bolt12Invoice() { Bolt12Invoice_free(self); }
934         Bolt12Invoice& operator=(Bolt12Invoice&& o) { Bolt12Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12Invoice)); return *this; }
935         LDKBolt12Invoice* operator &() { return &self; }
936         LDKBolt12Invoice* operator ->() { return &self; }
937         const LDKBolt12Invoice* operator &() const { return &self; }
938         const LDKBolt12Invoice* operator ->() const { return &self; }
939 };
940 class BlindedPayInfo {
941 private:
942         LDKBlindedPayInfo self;
943 public:
944         BlindedPayInfo(const BlindedPayInfo&) = delete;
945         BlindedPayInfo(BlindedPayInfo&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPayInfo)); }
946         BlindedPayInfo(LDKBlindedPayInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPayInfo)); }
947         operator LDKBlindedPayInfo() && { LDKBlindedPayInfo res = self; memset(&self, 0, sizeof(LDKBlindedPayInfo)); return res; }
948         ~BlindedPayInfo() { BlindedPayInfo_free(self); }
949         BlindedPayInfo& operator=(BlindedPayInfo&& o) { BlindedPayInfo_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPayInfo)); return *this; }
950         LDKBlindedPayInfo* operator &() { return &self; }
951         LDKBlindedPayInfo* operator ->() { return &self; }
952         const LDKBlindedPayInfo* operator &() const { return &self; }
953         const LDKBlindedPayInfo* operator ->() const { return &self; }
954 };
955 class DelayedPaymentOutputDescriptor {
956 private:
957         LDKDelayedPaymentOutputDescriptor self;
958 public:
959         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
960         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
961         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
962         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
963         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
964         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
965         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
966         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
967         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
968         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
969 };
970 class StaticPaymentOutputDescriptor {
971 private:
972         LDKStaticPaymentOutputDescriptor self;
973 public:
974         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
975         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
976         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
977         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
978         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
979         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
980         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
981         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
982         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
983         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
984 };
985 class SpendableOutputDescriptor {
986 private:
987         LDKSpendableOutputDescriptor self;
988 public:
989         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
990         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
991         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
992         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
993         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
994         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
995         LDKSpendableOutputDescriptor* operator &() { return &self; }
996         LDKSpendableOutputDescriptor* operator ->() { return &self; }
997         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
998         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
999 };
1000 class ChannelDerivationParameters {
1001 private:
1002         LDKChannelDerivationParameters self;
1003 public:
1004         ChannelDerivationParameters(const ChannelDerivationParameters&) = delete;
1005         ChannelDerivationParameters(ChannelDerivationParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDerivationParameters)); }
1006         ChannelDerivationParameters(LDKChannelDerivationParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDerivationParameters)); }
1007         operator LDKChannelDerivationParameters() && { LDKChannelDerivationParameters res = self; memset(&self, 0, sizeof(LDKChannelDerivationParameters)); return res; }
1008         ~ChannelDerivationParameters() { ChannelDerivationParameters_free(self); }
1009         ChannelDerivationParameters& operator=(ChannelDerivationParameters&& o) { ChannelDerivationParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDerivationParameters)); return *this; }
1010         LDKChannelDerivationParameters* operator &() { return &self; }
1011         LDKChannelDerivationParameters* operator ->() { return &self; }
1012         const LDKChannelDerivationParameters* operator &() const { return &self; }
1013         const LDKChannelDerivationParameters* operator ->() const { return &self; }
1014 };
1015 class HTLCDescriptor {
1016 private:
1017         LDKHTLCDescriptor self;
1018 public:
1019         HTLCDescriptor(const HTLCDescriptor&) = delete;
1020         HTLCDescriptor(HTLCDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDescriptor)); }
1021         HTLCDescriptor(LDKHTLCDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDescriptor)); }
1022         operator LDKHTLCDescriptor() && { LDKHTLCDescriptor res = self; memset(&self, 0, sizeof(LDKHTLCDescriptor)); return res; }
1023         ~HTLCDescriptor() { HTLCDescriptor_free(self); }
1024         HTLCDescriptor& operator=(HTLCDescriptor&& o) { HTLCDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDescriptor)); return *this; }
1025         LDKHTLCDescriptor* operator &() { return &self; }
1026         LDKHTLCDescriptor* operator ->() { return &self; }
1027         const LDKHTLCDescriptor* operator &() const { return &self; }
1028         const LDKHTLCDescriptor* operator ->() const { return &self; }
1029 };
1030 class ChannelSigner {
1031 private:
1032         LDKChannelSigner self;
1033 public:
1034         ChannelSigner(const ChannelSigner&) = delete;
1035         ChannelSigner(ChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelSigner)); }
1036         ChannelSigner(LDKChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelSigner)); }
1037         operator LDKChannelSigner() && { LDKChannelSigner res = self; memset(&self, 0, sizeof(LDKChannelSigner)); return res; }
1038         ~ChannelSigner() { ChannelSigner_free(self); }
1039         ChannelSigner& operator=(ChannelSigner&& o) { ChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(ChannelSigner)); return *this; }
1040         LDKChannelSigner* operator &() { return &self; }
1041         LDKChannelSigner* operator ->() { return &self; }
1042         const LDKChannelSigner* operator &() const { return &self; }
1043         const LDKChannelSigner* operator ->() const { return &self; }
1044         /**
1045          *  Gets the per-commitment point for a specific commitment number
1046          * 
1047          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
1048          */
1049         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1050         /**
1051          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1052          * 
1053          *  An external signer implementation should error here if the commitment was already signed
1054          *  and should refuse to sign it in the future.
1055          * 
1056          *  May be called more than once for the same index.
1057          * 
1058          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
1059          */
1060         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1061         /**
1062          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1063          * 
1064          *  This is required in order for the signer to make sure that releasing a commitment
1065          *  secret won't leave us without a broadcastable holder transaction.
1066          *  Policy checks should be implemented in this function, including checking the amount
1067          *  sent to us and checking the HTLCs.
1068          * 
1069          *  The preimages of outbound HTLCs that were fulfilled since the last commitment are provided.
1070          *  A validating signer should ensure that an HTLC output is removed only when the matching
1071          *  preimage is provided, or when the value to holder is restored.
1072          * 
1073          *  Note that all the relevant preimages will be provided, but there may also be additional
1074          *  irrelevant or duplicate preimages.
1075          */
1076         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_ThirtyTwoBytesZ outbound_htlc_preimages);
1077         /**
1078          *  Validate the counterparty's revocation.
1079          * 
1080          *  This is required in order for the signer to make sure that the state has moved
1081          *  forward and it is safe to sign the next counterparty commitment.
1082          */
1083         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
1084         /**
1085          *  Returns an arbitrary identifier describing the set of keys which are provided back to you in
1086          *  some [`SpendableOutputDescriptor`] types. This should be sufficient to identify this
1087          *  [`EcdsaChannelSigner`] object uniquely and lookup or re-derive its keys.
1088          */
1089         inline LDKThirtyTwoBytes channel_keys_id();
1090         /**
1091          *  Set the counterparty static channel data, including basepoints,
1092          *  `counterparty_selected`/`holder_selected_contest_delay` and funding outpoint.
1093          * 
1094          *  This data is static, and will never change for a channel once set. For a given [`ChannelSigner`]
1095          *  instance, LDK will call this method exactly once - either immediately after construction
1096          *  (not including if done via [`SignerProvider::read_chan_signer`]) or when the funding
1097          *  information has been generated.
1098          * 
1099          *  channel_parameters.is_populated() MUST be true.
1100          */
1101         inline void provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
1102 };
1103 class Recipient {
1104 private:
1105         LDKRecipient self;
1106 public:
1107         Recipient(const Recipient&) = delete;
1108         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
1109         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
1110         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
1111         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
1112         LDKRecipient* operator &() { return &self; }
1113         LDKRecipient* operator ->() { return &self; }
1114         const LDKRecipient* operator &() const { return &self; }
1115         const LDKRecipient* operator ->() const { return &self; }
1116 };
1117 class EntropySource {
1118 private:
1119         LDKEntropySource self;
1120 public:
1121         EntropySource(const EntropySource&) = delete;
1122         EntropySource(EntropySource&& o) : self(o.self) { memset(&o, 0, sizeof(EntropySource)); }
1123         EntropySource(LDKEntropySource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEntropySource)); }
1124         operator LDKEntropySource() && { LDKEntropySource res = self; memset(&self, 0, sizeof(LDKEntropySource)); return res; }
1125         ~EntropySource() { EntropySource_free(self); }
1126         EntropySource& operator=(EntropySource&& o) { EntropySource_free(self); self = o.self; memset(&o, 0, sizeof(EntropySource)); return *this; }
1127         LDKEntropySource* operator &() { return &self; }
1128         LDKEntropySource* operator ->() { return &self; }
1129         const LDKEntropySource* operator &() const { return &self; }
1130         const LDKEntropySource* operator ->() const { return &self; }
1131         /**
1132          *  Gets a unique, cryptographically-secure, random 32-byte value. This method must return a
1133          *  different value each time it is called.
1134          */
1135         inline LDKThirtyTwoBytes get_secure_random_bytes();
1136 };
1137 class NodeSigner {
1138 private:
1139         LDKNodeSigner self;
1140 public:
1141         NodeSigner(const NodeSigner&) = delete;
1142         NodeSigner(NodeSigner&& o) : self(o.self) { memset(&o, 0, sizeof(NodeSigner)); }
1143         NodeSigner(LDKNodeSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeSigner)); }
1144         operator LDKNodeSigner() && { LDKNodeSigner res = self; memset(&self, 0, sizeof(LDKNodeSigner)); return res; }
1145         ~NodeSigner() { NodeSigner_free(self); }
1146         NodeSigner& operator=(NodeSigner&& o) { NodeSigner_free(self); self = o.self; memset(&o, 0, sizeof(NodeSigner)); return *this; }
1147         LDKNodeSigner* operator &() { return &self; }
1148         LDKNodeSigner* operator ->() { return &self; }
1149         const LDKNodeSigner* operator &() const { return &self; }
1150         const LDKNodeSigner* operator ->() const { return &self; }
1151         /**
1152          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
1153          * 
1154          *  If the implementor of this trait supports [phantom node payments], then every node that is
1155          *  intended to be included in the phantom invoice route hints must return the same value from
1156          *  this method.
1157          * 
1158          *  This method must return the same value each time it is called.
1159          * 
1160          *  [phantom node payments]: PhantomKeysManager
1161          */
1162         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
1163         /**
1164          *  Get node id based on the provided [`Recipient`].
1165          * 
1166          *  This method must return the same value each time it is called with a given [`Recipient`]
1167          *  parameter.
1168          * 
1169          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1170          */
1171         inline LDK::CResult_PublicKeyNoneZ get_node_id(enum LDKRecipient recipient);
1172         /**
1173          *  Gets the ECDH shared secret of our node secret and `other_key`, multiplying by `tweak` if
1174          *  one is provided. Note that this tweak can be applied to `other_key` instead of our node
1175          *  secret, though this is less efficient.
1176          * 
1177          *  Note that if this fails while attempting to forward an HTLC, LDK will panic. The error
1178          *  should be resolved to allow LDK to resume forwarding HTLCs.
1179          * 
1180          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1181          */
1182         inline LDK::CResult_ThirtyTwoBytesNoneZ ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_BigEndianScalarZ tweak);
1183         /**
1184          *  Sign an invoice.
1185          * 
1186          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
1187          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
1188          *  blindly signing the hash.
1189          * 
1190          *  The `hrp_bytes` are ASCII bytes, while the `invoice_data` is base32.
1191          * 
1192          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
1193          * 
1194          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1195          */
1196         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient);
1197         /**
1198          *  Signs the [`TaggedHash`] of a BOLT 12 invoice request.
1199          * 
1200          *  May be called by a function passed to [`UnsignedInvoiceRequest::sign`] where
1201          *  `invoice_request` is the callee.
1202          * 
1203          *  Implementors may check that the `invoice_request` is expected rather than blindly signing
1204          *  the tagged hash. An `Ok` result should sign `invoice_request.tagged_hash().as_digest()` with
1205          *  the node's signing key or an ephemeral key to preserve privacy, whichever is associated with
1206          *  [`UnsignedInvoiceRequest::payer_id`].
1207          * 
1208          *  [`TaggedHash`]: crate::offers::merkle::TaggedHash
1209          */
1210         inline LDK::CResult_SchnorrSignatureNoneZ sign_bolt12_invoice_request(const struct LDKUnsignedInvoiceRequest *NONNULL_PTR invoice_request);
1211         /**
1212          *  Signs the [`TaggedHash`] of a BOLT 12 invoice.
1213          * 
1214          *  May be called by a function passed to [`UnsignedBolt12Invoice::sign`] where `invoice` is the
1215          *  callee.
1216          * 
1217          *  Implementors may check that the `invoice` is expected rather than blindly signing the tagged
1218          *  hash. An `Ok` result should sign `invoice.tagged_hash().as_digest()` with the node's signing
1219          *  key or an ephemeral key to preserve privacy, whichever is associated with
1220          *  [`UnsignedBolt12Invoice::signing_pubkey`].
1221          * 
1222          *  [`TaggedHash`]: crate::offers::merkle::TaggedHash
1223          */
1224         inline LDK::CResult_SchnorrSignatureNoneZ sign_bolt12_invoice(const struct LDKUnsignedBolt12Invoice *NONNULL_PTR invoice);
1225         /**
1226          *  Sign a gossip message.
1227          * 
1228          *  Note that if this fails, LDK may panic and the message will not be broadcast to the network
1229          *  or a possible channel counterparty. If LDK panics, the error should be resolved to allow the
1230          *  message to be broadcast, as otherwise it may prevent one from receiving funds over the
1231          *  corresponding channel.
1232          */
1233         inline LDK::CResult_ECDSASignatureNoneZ sign_gossip_message(struct LDKUnsignedGossipMessage msg);
1234 };
1235 class OutputSpender {
1236 private:
1237         LDKOutputSpender self;
1238 public:
1239         OutputSpender(const OutputSpender&) = delete;
1240         OutputSpender(OutputSpender&& o) : self(o.self) { memset(&o, 0, sizeof(OutputSpender)); }
1241         OutputSpender(LDKOutputSpender&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutputSpender)); }
1242         operator LDKOutputSpender() && { LDKOutputSpender res = self; memset(&self, 0, sizeof(LDKOutputSpender)); return res; }
1243         ~OutputSpender() { OutputSpender_free(self); }
1244         OutputSpender& operator=(OutputSpender&& o) { OutputSpender_free(self); self = o.self; memset(&o, 0, sizeof(OutputSpender)); return *this; }
1245         LDKOutputSpender* operator &() { return &self; }
1246         LDKOutputSpender* operator ->() { return &self; }
1247         const LDKOutputSpender* operator &() const { return &self; }
1248         const LDKOutputSpender* operator ->() const { return &self; }
1249         /**
1250          *  Creates a [`Transaction`] which spends the given descriptors to the given outputs, plus an
1251          *  output to the given change destination (if sufficient change value remains). The
1252          *  transaction will have a feerate, at least, of the given value.
1253          * 
1254          *  The `locktime` argument is used to set the transaction's locktime. If `None`, the
1255          *  transaction will have a locktime of 0. It it recommended to set this to the current block
1256          *  height to avoid fee sniping, unless you have some specific reason to use a different
1257          *  locktime.
1258          * 
1259          *  Returns `Err(())` if the output value is greater than the input value minus required fee,
1260          *  if a descriptor was duplicated, or if an output descriptor `script_pubkey`
1261          *  does not match the one we can spend.
1262          */
1263         inline LDK::CResult_TransactionNoneZ spend_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ descriptors, struct LDKCVec_TxOutZ outputs, struct LDKCVec_u8Z change_destination_script, uint32_t feerate_sat_per_1000_weight, struct LDKCOption_u32Z locktime);
1264 };
1265 class SignerProvider {
1266 private:
1267         LDKSignerProvider self;
1268 public:
1269         SignerProvider(const SignerProvider&) = delete;
1270         SignerProvider(SignerProvider&& o) : self(o.self) { memset(&o, 0, sizeof(SignerProvider)); }
1271         SignerProvider(LDKSignerProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignerProvider)); }
1272         operator LDKSignerProvider() && { LDKSignerProvider res = self; memset(&self, 0, sizeof(LDKSignerProvider)); return res; }
1273         ~SignerProvider() { SignerProvider_free(self); }
1274         SignerProvider& operator=(SignerProvider&& o) { SignerProvider_free(self); self = o.self; memset(&o, 0, sizeof(SignerProvider)); return *this; }
1275         LDKSignerProvider* operator &() { return &self; }
1276         LDKSignerProvider* operator ->() { return &self; }
1277         const LDKSignerProvider* operator &() const { return &self; }
1278         const LDKSignerProvider* operator ->() const { return &self; }
1279         /**
1280          *  Generates a unique `channel_keys_id` that can be used to obtain a [`Self::EcdsaSigner`] through
1281          *  [`SignerProvider::derive_channel_signer`]. The `user_channel_id` is provided to allow
1282          *  implementations of [`SignerProvider`] to maintain a mapping between itself and the generated
1283          *  `channel_keys_id`.
1284          * 
1285          *  This method must return a different value each time it is called.
1286          */
1287         inline LDKThirtyTwoBytes generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id);
1288         /**
1289          *  Derives the private key material backing a `Signer`.
1290          * 
1291          *  To derive a new `Signer`, a fresh `channel_keys_id` should be obtained through
1292          *  [`SignerProvider::generate_channel_keys_id`]. Otherwise, an existing `Signer` can be
1293          *  re-derived from its `channel_keys_id`, which can be obtained through its trait method
1294          *  [`ChannelSigner::channel_keys_id`].
1295          */
1296         inline LDK::WriteableEcdsaChannelSigner derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
1297         /**
1298          *  Reads a [`Signer`] for this [`SignerProvider`] from the given input stream.
1299          *  This is only called during deserialization of other objects which contain
1300          *  [`WriteableEcdsaChannelSigner`]-implementing objects (i.e., [`ChannelMonitor`]s and [`ChannelManager`]s).
1301          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
1302          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
1303          *  you've read all of the provided bytes to ensure no corruption occurred.
1304          * 
1305          *  This method is slowly being phased out -- it will only be called when reading objects
1306          *  written by LDK versions prior to 0.0.113.
1307          * 
1308          *  [`Signer`]: Self::EcdsaSigner
1309          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
1310          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
1311          */
1312         inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
1313         /**
1314          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
1315          * 
1316          *  If this function returns an error, this will result in a channel failing to open.
1317          * 
1318          *  This method should return a different value each time it is called, to avoid linking
1319          *  on-chain funds across channels as controlled to the same user. `channel_keys_id` may be
1320          *  used to derive a unique value for each channel.
1321          */
1322         inline LDK::CResult_CVec_u8ZNoneZ get_destination_script(struct LDKThirtyTwoBytes channel_keys_id);
1323         /**
1324          *  Get a script pubkey which we will send funds to when closing a channel.
1325          * 
1326          *  If this function returns an error, this will result in a channel failing to open or close.
1327          *  In the event of a failure when the counterparty is initiating a close, this can result in a
1328          *  channel force close.
1329          * 
1330          *  This method should return a different value each time it is called, to avoid linking
1331          *  on-chain funds across channels as controlled to the same user.
1332          */
1333         inline LDK::CResult_ShutdownScriptNoneZ get_shutdown_scriptpubkey();
1334 };
1335 class ChangeDestinationSource {
1336 private:
1337         LDKChangeDestinationSource self;
1338 public:
1339         ChangeDestinationSource(const ChangeDestinationSource&) = delete;
1340         ChangeDestinationSource(ChangeDestinationSource&& o) : self(o.self) { memset(&o, 0, sizeof(ChangeDestinationSource)); }
1341         ChangeDestinationSource(LDKChangeDestinationSource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChangeDestinationSource)); }
1342         operator LDKChangeDestinationSource() && { LDKChangeDestinationSource res = self; memset(&self, 0, sizeof(LDKChangeDestinationSource)); return res; }
1343         ~ChangeDestinationSource() { ChangeDestinationSource_free(self); }
1344         ChangeDestinationSource& operator=(ChangeDestinationSource&& o) { ChangeDestinationSource_free(self); self = o.self; memset(&o, 0, sizeof(ChangeDestinationSource)); return *this; }
1345         LDKChangeDestinationSource* operator &() { return &self; }
1346         LDKChangeDestinationSource* operator ->() { return &self; }
1347         const LDKChangeDestinationSource* operator &() const { return &self; }
1348         const LDKChangeDestinationSource* operator ->() const { return &self; }
1349         /**
1350          *  Returns a script pubkey which can be used as a change destination for
1351          *  [`OutputSpender::spend_spendable_outputs`].
1352          * 
1353          *  This method should return a different value each time it is called, to avoid linking
1354          *  on-chain funds controlled to the same user.
1355          */
1356         inline LDK::CResult_CVec_u8ZNoneZ get_change_destination_script();
1357 };
1358 class InMemorySigner {
1359 private:
1360         LDKInMemorySigner self;
1361 public:
1362         InMemorySigner(const InMemorySigner&) = delete;
1363         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
1364         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
1365         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
1366         ~InMemorySigner() { InMemorySigner_free(self); }
1367         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
1368         LDKInMemorySigner* operator &() { return &self; }
1369         LDKInMemorySigner* operator ->() { return &self; }
1370         const LDKInMemorySigner* operator &() const { return &self; }
1371         const LDKInMemorySigner* operator ->() const { return &self; }
1372 };
1373 class KeysManager {
1374 private:
1375         LDKKeysManager self;
1376 public:
1377         KeysManager(const KeysManager&) = delete;
1378         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
1379         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
1380         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
1381         ~KeysManager() { KeysManager_free(self); }
1382         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
1383         LDKKeysManager* operator &() { return &self; }
1384         LDKKeysManager* operator ->() { return &self; }
1385         const LDKKeysManager* operator &() const { return &self; }
1386         const LDKKeysManager* operator ->() const { return &self; }
1387 };
1388 class PhantomKeysManager {
1389 private:
1390         LDKPhantomKeysManager self;
1391 public:
1392         PhantomKeysManager(const PhantomKeysManager&) = delete;
1393         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
1394         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
1395         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
1396         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
1397         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
1398         LDKPhantomKeysManager* operator &() { return &self; }
1399         LDKPhantomKeysManager* operator ->() { return &self; }
1400         const LDKPhantomKeysManager* operator &() const { return &self; }
1401         const LDKPhantomKeysManager* operator ->() const { return &self; }
1402 };
1403 class RandomBytes {
1404 private:
1405         LDKRandomBytes self;
1406 public:
1407         RandomBytes(const RandomBytes&) = delete;
1408         RandomBytes(RandomBytes&& o) : self(o.self) { memset(&o, 0, sizeof(RandomBytes)); }
1409         RandomBytes(LDKRandomBytes&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRandomBytes)); }
1410         operator LDKRandomBytes() && { LDKRandomBytes res = self; memset(&self, 0, sizeof(LDKRandomBytes)); return res; }
1411         ~RandomBytes() { RandomBytes_free(self); }
1412         RandomBytes& operator=(RandomBytes&& o) { RandomBytes_free(self); self = o.self; memset(&o, 0, sizeof(RandomBytes)); return *this; }
1413         LDKRandomBytes* operator &() { return &self; }
1414         LDKRandomBytes* operator ->() { return &self; }
1415         const LDKRandomBytes* operator &() const { return &self; }
1416         const LDKRandomBytes* operator ->() const { return &self; }
1417 };
1418 class BackgroundProcessor {
1419 private:
1420         LDKBackgroundProcessor self;
1421 public:
1422         BackgroundProcessor(const BackgroundProcessor&) = delete;
1423         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
1424         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
1425         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
1426         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
1427         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
1428         LDKBackgroundProcessor* operator &() { return &self; }
1429         LDKBackgroundProcessor* operator ->() { return &self; }
1430         const LDKBackgroundProcessor* operator &() const { return &self; }
1431         const LDKBackgroundProcessor* operator ->() const { return &self; }
1432 };
1433 class GossipSync {
1434 private:
1435         LDKGossipSync self;
1436 public:
1437         GossipSync(const GossipSync&) = delete;
1438         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
1439         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
1440         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
1441         ~GossipSync() { GossipSync_free(self); }
1442         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
1443         LDKGossipSync* operator &() { return &self; }
1444         LDKGossipSync* operator ->() { return &self; }
1445         const LDKGossipSync* operator &() const { return &self; }
1446         const LDKGossipSync* operator ->() const { return &self; }
1447 };
1448 class DefaultRouter {
1449 private:
1450         LDKDefaultRouter self;
1451 public:
1452         DefaultRouter(const DefaultRouter&) = delete;
1453         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
1454         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
1455         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
1456         ~DefaultRouter() { DefaultRouter_free(self); }
1457         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
1458         LDKDefaultRouter* operator &() { return &self; }
1459         LDKDefaultRouter* operator ->() { return &self; }
1460         const LDKDefaultRouter* operator &() const { return &self; }
1461         const LDKDefaultRouter* operator ->() const { return &self; }
1462 };
1463 class Router {
1464 private:
1465         LDKRouter self;
1466 public:
1467         Router(const Router&) = delete;
1468         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
1469         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
1470         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
1471         ~Router() { Router_free(self); }
1472         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
1473         LDKRouter* operator &() { return &self; }
1474         LDKRouter* operator ->() { return &self; }
1475         const LDKRouter* operator &() const { return &self; }
1476         const LDKRouter* operator ->() const { return &self; }
1477         /**
1478          *  Finds a [`Route`] for a payment between the given `payer` and a payee.
1479          * 
1480          *  The `payee` and the payment's value are given in [`RouteParameters::payment_params`]
1481          *  and [`RouteParameters::final_value_msat`], respectively.
1482          * 
1483          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
1484          */
1485         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);
1486         /**
1487          *  Finds a [`Route`] for a payment between the given `payer` and a payee.
1488          * 
1489          *  The `payee` and the payment's value are given in [`RouteParameters::payment_params`]
1490          *  and [`RouteParameters::final_value_msat`], respectively.
1491          * 
1492          *  Includes a [`PaymentHash`] and a [`PaymentId`] to be able to correlate the request with a specific
1493          *  payment.
1494          * 
1495          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
1496          */
1497         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);
1498         /**
1499          *  Creates [`BlindedPath`]s for payment to the `recipient` node. The channels in `first_hops`
1500          *  are assumed to be with the `recipient`'s peers. The payment secret and any constraints are
1501          *  given in `tlvs`.
1502          */
1503         inline LDK::CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ create_blinded_payment_paths(struct LDKPublicKey recipient, struct LDKCVec_ChannelDetailsZ first_hops, struct LDKReceiveTlvs tlvs, uint64_t amount_msats);
1504 };
1505 class ScorerAccountingForInFlightHtlcs {
1506 private:
1507         LDKScorerAccountingForInFlightHtlcs self;
1508 public:
1509         ScorerAccountingForInFlightHtlcs(const ScorerAccountingForInFlightHtlcs&) = delete;
1510         ScorerAccountingForInFlightHtlcs(ScorerAccountingForInFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); }
1511         ScorerAccountingForInFlightHtlcs(LDKScorerAccountingForInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); }
1512         operator LDKScorerAccountingForInFlightHtlcs() && { LDKScorerAccountingForInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); return res; }
1513         ~ScorerAccountingForInFlightHtlcs() { ScorerAccountingForInFlightHtlcs_free(self); }
1514         ScorerAccountingForInFlightHtlcs& operator=(ScorerAccountingForInFlightHtlcs&& o) { ScorerAccountingForInFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); return *this; }
1515         LDKScorerAccountingForInFlightHtlcs* operator &() { return &self; }
1516         LDKScorerAccountingForInFlightHtlcs* operator ->() { return &self; }
1517         const LDKScorerAccountingForInFlightHtlcs* operator &() const { return &self; }
1518         const LDKScorerAccountingForInFlightHtlcs* operator ->() const { return &self; }
1519 };
1520 class InFlightHtlcs {
1521 private:
1522         LDKInFlightHtlcs self;
1523 public:
1524         InFlightHtlcs(const InFlightHtlcs&) = delete;
1525         InFlightHtlcs(InFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(InFlightHtlcs)); }
1526         InFlightHtlcs(LDKInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInFlightHtlcs)); }
1527         operator LDKInFlightHtlcs() && { LDKInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKInFlightHtlcs)); return res; }
1528         ~InFlightHtlcs() { InFlightHtlcs_free(self); }
1529         InFlightHtlcs& operator=(InFlightHtlcs&& o) { InFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(InFlightHtlcs)); return *this; }
1530         LDKInFlightHtlcs* operator &() { return &self; }
1531         LDKInFlightHtlcs* operator ->() { return &self; }
1532         const LDKInFlightHtlcs* operator &() const { return &self; }
1533         const LDKInFlightHtlcs* operator ->() const { return &self; }
1534 };
1535 class RouteHop {
1536 private:
1537         LDKRouteHop self;
1538 public:
1539         RouteHop(const RouteHop&) = delete;
1540         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
1541         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
1542         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
1543         ~RouteHop() { RouteHop_free(self); }
1544         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
1545         LDKRouteHop* operator &() { return &self; }
1546         LDKRouteHop* operator ->() { return &self; }
1547         const LDKRouteHop* operator &() const { return &self; }
1548         const LDKRouteHop* operator ->() const { return &self; }
1549 };
1550 class BlindedTail {
1551 private:
1552         LDKBlindedTail self;
1553 public:
1554         BlindedTail(const BlindedTail&) = delete;
1555         BlindedTail(BlindedTail&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedTail)); }
1556         BlindedTail(LDKBlindedTail&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedTail)); }
1557         operator LDKBlindedTail() && { LDKBlindedTail res = self; memset(&self, 0, sizeof(LDKBlindedTail)); return res; }
1558         ~BlindedTail() { BlindedTail_free(self); }
1559         BlindedTail& operator=(BlindedTail&& o) { BlindedTail_free(self); self = o.self; memset(&o, 0, sizeof(BlindedTail)); return *this; }
1560         LDKBlindedTail* operator &() { return &self; }
1561         LDKBlindedTail* operator ->() { return &self; }
1562         const LDKBlindedTail* operator &() const { return &self; }
1563         const LDKBlindedTail* operator ->() const { return &self; }
1564 };
1565 class Path {
1566 private:
1567         LDKPath self;
1568 public:
1569         Path(const Path&) = delete;
1570         Path(Path&& o) : self(o.self) { memset(&o, 0, sizeof(Path)); }
1571         Path(LDKPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPath)); }
1572         operator LDKPath() && { LDKPath res = self; memset(&self, 0, sizeof(LDKPath)); return res; }
1573         ~Path() { Path_free(self); }
1574         Path& operator=(Path&& o) { Path_free(self); self = o.self; memset(&o, 0, sizeof(Path)); return *this; }
1575         LDKPath* operator &() { return &self; }
1576         LDKPath* operator ->() { return &self; }
1577         const LDKPath* operator &() const { return &self; }
1578         const LDKPath* operator ->() const { return &self; }
1579 };
1580 class Route {
1581 private:
1582         LDKRoute self;
1583 public:
1584         Route(const Route&) = delete;
1585         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
1586         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
1587         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
1588         ~Route() { Route_free(self); }
1589         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
1590         LDKRoute* operator &() { return &self; }
1591         LDKRoute* operator ->() { return &self; }
1592         const LDKRoute* operator &() const { return &self; }
1593         const LDKRoute* operator ->() const { return &self; }
1594 };
1595 class RouteParameters {
1596 private:
1597         LDKRouteParameters self;
1598 public:
1599         RouteParameters(const RouteParameters&) = delete;
1600         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
1601         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
1602         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
1603         ~RouteParameters() { RouteParameters_free(self); }
1604         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
1605         LDKRouteParameters* operator &() { return &self; }
1606         LDKRouteParameters* operator ->() { return &self; }
1607         const LDKRouteParameters* operator &() const { return &self; }
1608         const LDKRouteParameters* operator ->() const { return &self; }
1609 };
1610 class PaymentParameters {
1611 private:
1612         LDKPaymentParameters self;
1613 public:
1614         PaymentParameters(const PaymentParameters&) = delete;
1615         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
1616         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
1617         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
1618         ~PaymentParameters() { PaymentParameters_free(self); }
1619         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
1620         LDKPaymentParameters* operator &() { return &self; }
1621         LDKPaymentParameters* operator ->() { return &self; }
1622         const LDKPaymentParameters* operator &() const { return &self; }
1623         const LDKPaymentParameters* operator ->() const { return &self; }
1624 };
1625 class Payee {
1626 private:
1627         LDKPayee self;
1628 public:
1629         Payee(const Payee&) = delete;
1630         Payee(Payee&& o) : self(o.self) { memset(&o, 0, sizeof(Payee)); }
1631         Payee(LDKPayee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayee)); }
1632         operator LDKPayee() && { LDKPayee res = self; memset(&self, 0, sizeof(LDKPayee)); return res; }
1633         ~Payee() { Payee_free(self); }
1634         Payee& operator=(Payee&& o) { Payee_free(self); self = o.self; memset(&o, 0, sizeof(Payee)); return *this; }
1635         LDKPayee* operator &() { return &self; }
1636         LDKPayee* operator ->() { return &self; }
1637         const LDKPayee* operator &() const { return &self; }
1638         const LDKPayee* operator ->() const { return &self; }
1639 };
1640 class RouteHint {
1641 private:
1642         LDKRouteHint self;
1643 public:
1644         RouteHint(const RouteHint&) = delete;
1645         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
1646         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
1647         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
1648         ~RouteHint() { RouteHint_free(self); }
1649         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
1650         LDKRouteHint* operator &() { return &self; }
1651         LDKRouteHint* operator ->() { return &self; }
1652         const LDKRouteHint* operator &() const { return &self; }
1653         const LDKRouteHint* operator ->() const { return &self; }
1654 };
1655 class RouteHintHop {
1656 private:
1657         LDKRouteHintHop self;
1658 public:
1659         RouteHintHop(const RouteHintHop&) = delete;
1660         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
1661         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
1662         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
1663         ~RouteHintHop() { RouteHintHop_free(self); }
1664         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
1665         LDKRouteHintHop* operator &() { return &self; }
1666         LDKRouteHintHop* operator ->() { return &self; }
1667         const LDKRouteHintHop* operator &() const { return &self; }
1668         const LDKRouteHintHop* operator ->() const { return &self; }
1669 };
1670 class FirstHopCandidate {
1671 private:
1672         LDKFirstHopCandidate self;
1673 public:
1674         FirstHopCandidate(const FirstHopCandidate&) = delete;
1675         FirstHopCandidate(FirstHopCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(FirstHopCandidate)); }
1676         FirstHopCandidate(LDKFirstHopCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFirstHopCandidate)); }
1677         operator LDKFirstHopCandidate() && { LDKFirstHopCandidate res = self; memset(&self, 0, sizeof(LDKFirstHopCandidate)); return res; }
1678         ~FirstHopCandidate() { FirstHopCandidate_free(self); }
1679         FirstHopCandidate& operator=(FirstHopCandidate&& o) { FirstHopCandidate_free(self); self = o.self; memset(&o, 0, sizeof(FirstHopCandidate)); return *this; }
1680         LDKFirstHopCandidate* operator &() { return &self; }
1681         LDKFirstHopCandidate* operator ->() { return &self; }
1682         const LDKFirstHopCandidate* operator &() const { return &self; }
1683         const LDKFirstHopCandidate* operator ->() const { return &self; }
1684 };
1685 class PublicHopCandidate {
1686 private:
1687         LDKPublicHopCandidate self;
1688 public:
1689         PublicHopCandidate(const PublicHopCandidate&) = delete;
1690         PublicHopCandidate(PublicHopCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(PublicHopCandidate)); }
1691         PublicHopCandidate(LDKPublicHopCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPublicHopCandidate)); }
1692         operator LDKPublicHopCandidate() && { LDKPublicHopCandidate res = self; memset(&self, 0, sizeof(LDKPublicHopCandidate)); return res; }
1693         ~PublicHopCandidate() { PublicHopCandidate_free(self); }
1694         PublicHopCandidate& operator=(PublicHopCandidate&& o) { PublicHopCandidate_free(self); self = o.self; memset(&o, 0, sizeof(PublicHopCandidate)); return *this; }
1695         LDKPublicHopCandidate* operator &() { return &self; }
1696         LDKPublicHopCandidate* operator ->() { return &self; }
1697         const LDKPublicHopCandidate* operator &() const { return &self; }
1698         const LDKPublicHopCandidate* operator ->() const { return &self; }
1699 };
1700 class PrivateHopCandidate {
1701 private:
1702         LDKPrivateHopCandidate self;
1703 public:
1704         PrivateHopCandidate(const PrivateHopCandidate&) = delete;
1705         PrivateHopCandidate(PrivateHopCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateHopCandidate)); }
1706         PrivateHopCandidate(LDKPrivateHopCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateHopCandidate)); }
1707         operator LDKPrivateHopCandidate() && { LDKPrivateHopCandidate res = self; memset(&self, 0, sizeof(LDKPrivateHopCandidate)); return res; }
1708         ~PrivateHopCandidate() { PrivateHopCandidate_free(self); }
1709         PrivateHopCandidate& operator=(PrivateHopCandidate&& o) { PrivateHopCandidate_free(self); self = o.self; memset(&o, 0, sizeof(PrivateHopCandidate)); return *this; }
1710         LDKPrivateHopCandidate* operator &() { return &self; }
1711         LDKPrivateHopCandidate* operator ->() { return &self; }
1712         const LDKPrivateHopCandidate* operator &() const { return &self; }
1713         const LDKPrivateHopCandidate* operator ->() const { return &self; }
1714 };
1715 class BlindedPathCandidate {
1716 private:
1717         LDKBlindedPathCandidate self;
1718 public:
1719         BlindedPathCandidate(const BlindedPathCandidate&) = delete;
1720         BlindedPathCandidate(BlindedPathCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPathCandidate)); }
1721         BlindedPathCandidate(LDKBlindedPathCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPathCandidate)); }
1722         operator LDKBlindedPathCandidate() && { LDKBlindedPathCandidate res = self; memset(&self, 0, sizeof(LDKBlindedPathCandidate)); return res; }
1723         ~BlindedPathCandidate() { BlindedPathCandidate_free(self); }
1724         BlindedPathCandidate& operator=(BlindedPathCandidate&& o) { BlindedPathCandidate_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPathCandidate)); return *this; }
1725         LDKBlindedPathCandidate* operator &() { return &self; }
1726         LDKBlindedPathCandidate* operator ->() { return &self; }
1727         const LDKBlindedPathCandidate* operator &() const { return &self; }
1728         const LDKBlindedPathCandidate* operator ->() const { return &self; }
1729 };
1730 class OneHopBlindedPathCandidate {
1731 private:
1732         LDKOneHopBlindedPathCandidate self;
1733 public:
1734         OneHopBlindedPathCandidate(const OneHopBlindedPathCandidate&) = delete;
1735         OneHopBlindedPathCandidate(OneHopBlindedPathCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(OneHopBlindedPathCandidate)); }
1736         OneHopBlindedPathCandidate(LDKOneHopBlindedPathCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOneHopBlindedPathCandidate)); }
1737         operator LDKOneHopBlindedPathCandidate() && { LDKOneHopBlindedPathCandidate res = self; memset(&self, 0, sizeof(LDKOneHopBlindedPathCandidate)); return res; }
1738         ~OneHopBlindedPathCandidate() { OneHopBlindedPathCandidate_free(self); }
1739         OneHopBlindedPathCandidate& operator=(OneHopBlindedPathCandidate&& o) { OneHopBlindedPathCandidate_free(self); self = o.self; memset(&o, 0, sizeof(OneHopBlindedPathCandidate)); return *this; }
1740         LDKOneHopBlindedPathCandidate* operator &() { return &self; }
1741         LDKOneHopBlindedPathCandidate* operator ->() { return &self; }
1742         const LDKOneHopBlindedPathCandidate* operator &() const { return &self; }
1743         const LDKOneHopBlindedPathCandidate* operator ->() const { return &self; }
1744 };
1745 class CandidateRouteHop {
1746 private:
1747         LDKCandidateRouteHop self;
1748 public:
1749         CandidateRouteHop(const CandidateRouteHop&) = delete;
1750         CandidateRouteHop(CandidateRouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(CandidateRouteHop)); }
1751         CandidateRouteHop(LDKCandidateRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCandidateRouteHop)); }
1752         operator LDKCandidateRouteHop() && { LDKCandidateRouteHop res = self; memset(&self, 0, sizeof(LDKCandidateRouteHop)); return res; }
1753         ~CandidateRouteHop() { CandidateRouteHop_free(self); }
1754         CandidateRouteHop& operator=(CandidateRouteHop&& o) { CandidateRouteHop_free(self); self = o.self; memset(&o, 0, sizeof(CandidateRouteHop)); return *this; }
1755         LDKCandidateRouteHop* operator &() { return &self; }
1756         LDKCandidateRouteHop* operator ->() { return &self; }
1757         const LDKCandidateRouteHop* operator &() const { return &self; }
1758         const LDKCandidateRouteHop* operator ->() const { return &self; }
1759 };
1760 class ScoreLookUp {
1761 private:
1762         LDKScoreLookUp self;
1763 public:
1764         ScoreLookUp(const ScoreLookUp&) = delete;
1765         ScoreLookUp(ScoreLookUp&& o) : self(o.self) { memset(&o, 0, sizeof(ScoreLookUp)); }
1766         ScoreLookUp(LDKScoreLookUp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScoreLookUp)); }
1767         operator LDKScoreLookUp() && { LDKScoreLookUp res = self; memset(&self, 0, sizeof(LDKScoreLookUp)); return res; }
1768         ~ScoreLookUp() { ScoreLookUp_free(self); }
1769         ScoreLookUp& operator=(ScoreLookUp&& o) { ScoreLookUp_free(self); self = o.self; memset(&o, 0, sizeof(ScoreLookUp)); return *this; }
1770         LDKScoreLookUp* operator &() { return &self; }
1771         LDKScoreLookUp* operator ->() { return &self; }
1772         const LDKScoreLookUp* operator &() const { return &self; }
1773         const LDKScoreLookUp* operator ->() const { return &self; }
1774         /**
1775          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1776          *  given channel in the direction from `source` to `target`.
1777          * 
1778          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1779          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1780          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1781          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1782          *  Thus, implementations should be overflow-safe.
1783          */
1784         inline uint64_t channel_penalty_msat(const struct LDKCandidateRouteHop *NONNULL_PTR candidate, struct LDKChannelUsage usage, const struct LDKProbabilisticScoringFeeParameters *NONNULL_PTR score_params);
1785 };
1786 class ScoreUpdate {
1787 private:
1788         LDKScoreUpdate self;
1789 public:
1790         ScoreUpdate(const ScoreUpdate&) = delete;
1791         ScoreUpdate(ScoreUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ScoreUpdate)); }
1792         ScoreUpdate(LDKScoreUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScoreUpdate)); }
1793         operator LDKScoreUpdate() && { LDKScoreUpdate res = self; memset(&self, 0, sizeof(LDKScoreUpdate)); return res; }
1794         ~ScoreUpdate() { ScoreUpdate_free(self); }
1795         ScoreUpdate& operator=(ScoreUpdate&& o) { ScoreUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ScoreUpdate)); return *this; }
1796         LDKScoreUpdate* operator &() { return &self; }
1797         LDKScoreUpdate* operator ->() { return &self; }
1798         const LDKScoreUpdate* operator &() const { return &self; }
1799         const LDKScoreUpdate* operator ->() const { return &self; }
1800         /**
1801          *  Handles updating channel penalties after failing to route through a channel.
1802          */
1803         inline void payment_path_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id, uint64_t duration_since_epoch);
1804         /**
1805          *  Handles updating channel penalties after successfully routing along a path.
1806          */
1807         inline void payment_path_successful(const struct LDKPath *NONNULL_PTR path, uint64_t duration_since_epoch);
1808         /**
1809          *  Handles updating channel penalties after a probe over the given path failed.
1810          */
1811         inline void probe_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id, uint64_t duration_since_epoch);
1812         /**
1813          *  Handles updating channel penalties after a probe over the given path succeeded.
1814          */
1815         inline void probe_successful(const struct LDKPath *NONNULL_PTR path, uint64_t duration_since_epoch);
1816         /**
1817          *  Scorers may wish to reduce their certainty of channel liquidity information over time.
1818          *  Thus, this method is provided to allow scorers to observe the passage of time - the holder
1819          *  of this object should call this method regularly (generally via the
1820          *  `lightning-background-processor` crate).
1821          */
1822         inline void time_passed(uint64_t duration_since_epoch);
1823 };
1824 class Score {
1825 private:
1826         LDKScore self;
1827 public:
1828         Score(const Score&) = delete;
1829         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1830         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1831         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1832         ~Score() { Score_free(self); }
1833         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1834         LDKScore* operator &() { return &self; }
1835         LDKScore* operator ->() { return &self; }
1836         const LDKScore* operator &() const { return &self; }
1837         const LDKScore* operator ->() const { return &self; }
1838 };
1839 class LockableScore {
1840 private:
1841         LDKLockableScore self;
1842 public:
1843         LockableScore(const LockableScore&) = delete;
1844         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1845         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1846         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1847         ~LockableScore() { LockableScore_free(self); }
1848         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1849         LDKLockableScore* operator &() { return &self; }
1850         LDKLockableScore* operator ->() { return &self; }
1851         const LDKLockableScore* operator &() const { return &self; }
1852         const LDKLockableScore* operator ->() const { return &self; }
1853         /**
1854          *  Returns read locked scorer.
1855          */
1856         inline LDK::ScoreLookUp read_lock();
1857         /**
1858          *  Returns write locked scorer.
1859          */
1860         inline LDK::ScoreUpdate write_lock();
1861 };
1862 class WriteableScore {
1863 private:
1864         LDKWriteableScore self;
1865 public:
1866         WriteableScore(const WriteableScore&) = delete;
1867         WriteableScore(WriteableScore&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableScore)); }
1868         WriteableScore(LDKWriteableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableScore)); }
1869         operator LDKWriteableScore() && { LDKWriteableScore res = self; memset(&self, 0, sizeof(LDKWriteableScore)); return res; }
1870         ~WriteableScore() { WriteableScore_free(self); }
1871         WriteableScore& operator=(WriteableScore&& o) { WriteableScore_free(self); self = o.self; memset(&o, 0, sizeof(WriteableScore)); return *this; }
1872         LDKWriteableScore* operator &() { return &self; }
1873         LDKWriteableScore* operator ->() { return &self; }
1874         const LDKWriteableScore* operator &() const { return &self; }
1875         const LDKWriteableScore* operator ->() const { return &self; }
1876 };
1877 class MultiThreadedLockableScore {
1878 private:
1879         LDKMultiThreadedLockableScore self;
1880 public:
1881         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1882         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1883         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1884         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1885         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1886         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1887         LDKMultiThreadedLockableScore* operator &() { return &self; }
1888         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1889         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1890         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1891 };
1892 class MultiThreadedScoreLockRead {
1893 private:
1894         LDKMultiThreadedScoreLockRead self;
1895 public:
1896         MultiThreadedScoreLockRead(const MultiThreadedScoreLockRead&) = delete;
1897         MultiThreadedScoreLockRead(MultiThreadedScoreLockRead&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLockRead)); }
1898         MultiThreadedScoreLockRead(LDKMultiThreadedScoreLockRead&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLockRead)); }
1899         operator LDKMultiThreadedScoreLockRead() && { LDKMultiThreadedScoreLockRead res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLockRead)); return res; }
1900         ~MultiThreadedScoreLockRead() { MultiThreadedScoreLockRead_free(self); }
1901         MultiThreadedScoreLockRead& operator=(MultiThreadedScoreLockRead&& o) { MultiThreadedScoreLockRead_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLockRead)); return *this; }
1902         LDKMultiThreadedScoreLockRead* operator &() { return &self; }
1903         LDKMultiThreadedScoreLockRead* operator ->() { return &self; }
1904         const LDKMultiThreadedScoreLockRead* operator &() const { return &self; }
1905         const LDKMultiThreadedScoreLockRead* operator ->() const { return &self; }
1906 };
1907 class MultiThreadedScoreLockWrite {
1908 private:
1909         LDKMultiThreadedScoreLockWrite self;
1910 public:
1911         MultiThreadedScoreLockWrite(const MultiThreadedScoreLockWrite&) = delete;
1912         MultiThreadedScoreLockWrite(MultiThreadedScoreLockWrite&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLockWrite)); }
1913         MultiThreadedScoreLockWrite(LDKMultiThreadedScoreLockWrite&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLockWrite)); }
1914         operator LDKMultiThreadedScoreLockWrite() && { LDKMultiThreadedScoreLockWrite res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLockWrite)); return res; }
1915         ~MultiThreadedScoreLockWrite() { MultiThreadedScoreLockWrite_free(self); }
1916         MultiThreadedScoreLockWrite& operator=(MultiThreadedScoreLockWrite&& o) { MultiThreadedScoreLockWrite_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLockWrite)); return *this; }
1917         LDKMultiThreadedScoreLockWrite* operator &() { return &self; }
1918         LDKMultiThreadedScoreLockWrite* operator ->() { return &self; }
1919         const LDKMultiThreadedScoreLockWrite* operator &() const { return &self; }
1920         const LDKMultiThreadedScoreLockWrite* operator ->() const { return &self; }
1921 };
1922 class ChannelUsage {
1923 private:
1924         LDKChannelUsage self;
1925 public:
1926         ChannelUsage(const ChannelUsage&) = delete;
1927         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1928         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1929         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1930         ~ChannelUsage() { ChannelUsage_free(self); }
1931         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1932         LDKChannelUsage* operator &() { return &self; }
1933         LDKChannelUsage* operator ->() { return &self; }
1934         const LDKChannelUsage* operator &() const { return &self; }
1935         const LDKChannelUsage* operator ->() const { return &self; }
1936 };
1937 class FixedPenaltyScorer {
1938 private:
1939         LDKFixedPenaltyScorer self;
1940 public:
1941         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1942         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1943         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1944         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1945         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1946         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1947         LDKFixedPenaltyScorer* operator &() { return &self; }
1948         LDKFixedPenaltyScorer* operator ->() { return &self; }
1949         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1950         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1951 };
1952 class ProbabilisticScorer {
1953 private:
1954         LDKProbabilisticScorer self;
1955 public:
1956         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1957         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1958         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1959         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1960         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1961         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1962         LDKProbabilisticScorer* operator &() { return &self; }
1963         LDKProbabilisticScorer* operator ->() { return &self; }
1964         const LDKProbabilisticScorer* operator &() const { return &self; }
1965         const LDKProbabilisticScorer* operator ->() const { return &self; }
1966 };
1967 class ProbabilisticScoringFeeParameters {
1968 private:
1969         LDKProbabilisticScoringFeeParameters self;
1970 public:
1971         ProbabilisticScoringFeeParameters(const ProbabilisticScoringFeeParameters&) = delete;
1972         ProbabilisticScoringFeeParameters(ProbabilisticScoringFeeParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringFeeParameters)); }
1973         ProbabilisticScoringFeeParameters(LDKProbabilisticScoringFeeParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringFeeParameters)); }
1974         operator LDKProbabilisticScoringFeeParameters() && { LDKProbabilisticScoringFeeParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringFeeParameters)); return res; }
1975         ~ProbabilisticScoringFeeParameters() { ProbabilisticScoringFeeParameters_free(self); }
1976         ProbabilisticScoringFeeParameters& operator=(ProbabilisticScoringFeeParameters&& o) { ProbabilisticScoringFeeParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringFeeParameters)); return *this; }
1977         LDKProbabilisticScoringFeeParameters* operator &() { return &self; }
1978         LDKProbabilisticScoringFeeParameters* operator ->() { return &self; }
1979         const LDKProbabilisticScoringFeeParameters* operator &() const { return &self; }
1980         const LDKProbabilisticScoringFeeParameters* operator ->() const { return &self; }
1981 };
1982 class ProbabilisticScoringDecayParameters {
1983 private:
1984         LDKProbabilisticScoringDecayParameters self;
1985 public:
1986         ProbabilisticScoringDecayParameters(const ProbabilisticScoringDecayParameters&) = delete;
1987         ProbabilisticScoringDecayParameters(ProbabilisticScoringDecayParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringDecayParameters)); }
1988         ProbabilisticScoringDecayParameters(LDKProbabilisticScoringDecayParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringDecayParameters)); }
1989         operator LDKProbabilisticScoringDecayParameters() && { LDKProbabilisticScoringDecayParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringDecayParameters)); return res; }
1990         ~ProbabilisticScoringDecayParameters() { ProbabilisticScoringDecayParameters_free(self); }
1991         ProbabilisticScoringDecayParameters& operator=(ProbabilisticScoringDecayParameters&& o) { ProbabilisticScoringDecayParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringDecayParameters)); return *this; }
1992         LDKProbabilisticScoringDecayParameters* operator &() { return &self; }
1993         LDKProbabilisticScoringDecayParameters* operator ->() { return &self; }
1994         const LDKProbabilisticScoringDecayParameters* operator &() const { return &self; }
1995         const LDKProbabilisticScoringDecayParameters* operator ->() const { return &self; }
1996 };
1997 class BestBlock {
1998 private:
1999         LDKBestBlock self;
2000 public:
2001         BestBlock(const BestBlock&) = delete;
2002         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
2003         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
2004         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
2005         ~BestBlock() { BestBlock_free(self); }
2006         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
2007         LDKBestBlock* operator &() { return &self; }
2008         LDKBestBlock* operator ->() { return &self; }
2009         const LDKBestBlock* operator &() const { return &self; }
2010         const LDKBestBlock* operator ->() const { return &self; }
2011 };
2012 class Listen {
2013 private:
2014         LDKListen self;
2015 public:
2016         Listen(const Listen&) = delete;
2017         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
2018         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
2019         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
2020         ~Listen() { Listen_free(self); }
2021         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
2022         LDKListen* operator &() { return &self; }
2023         LDKListen* operator ->() { return &self; }
2024         const LDKListen* operator &() const { return &self; }
2025         const LDKListen* operator ->() const { return &self; }
2026         /**
2027          *  Notifies the listener that a block was added at the given height, with the transaction data
2028          *  possibly filtered.
2029          */
2030         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
2031         /**
2032          *  Notifies the listener that a block was added at the given height.
2033          */
2034         inline void block_connected(struct LDKu8slice block, uint32_t height);
2035         /**
2036          *  Notifies the listener that a block was removed at the given height.
2037          */
2038         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
2039 };
2040 class Confirm {
2041 private:
2042         LDKConfirm self;
2043 public:
2044         Confirm(const Confirm&) = delete;
2045         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
2046         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
2047         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
2048         ~Confirm() { Confirm_free(self); }
2049         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
2050         LDKConfirm* operator &() { return &self; }
2051         LDKConfirm* operator ->() { return &self; }
2052         const LDKConfirm* operator &() const { return &self; }
2053         const LDKConfirm* operator ->() const { return &self; }
2054         /**
2055          *  Notifies LDK of transactions confirmed in a block with a given header and height.
2056          * 
2057          *  Must be called for any transactions registered by [`Filter::register_tx`] or any
2058          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
2059          *  appearing in the same block do not need to be included in the same call; instead, multiple
2060          *  calls with additional transactions may be made so long as they are made in [chain order].
2061          * 
2062          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
2063          *  in the event of a chain reorganization, it must not be called with a `header` that is no
2064          *  longer in the chain as of the last call to [`best_block_updated`].
2065          * 
2066          *  [chain order]: Confirm#order
2067          *  [`best_block_updated`]: Self::best_block_updated
2068          */
2069         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
2070         /**
2071          *  Notifies LDK of a transaction that is no longer confirmed as result of a chain reorganization.
2072          * 
2073          *  Must be called for any transaction returned by [`get_relevant_txids`] if it has been
2074          *  reorganized out of the best chain or if it is no longer confirmed in the block with the
2075          *  given block hash. Once called, the given transaction will not be returned
2076          *  by [`get_relevant_txids`], unless it has been reconfirmed via [`transactions_confirmed`].
2077          * 
2078          *  [`get_relevant_txids`]: Self::get_relevant_txids
2079          *  [`transactions_confirmed`]: Self::transactions_confirmed
2080          */
2081         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
2082         /**
2083          *  Notifies LDK of an update to the best header connected at the given height.
2084          * 
2085          *  Must be called whenever a new chain tip becomes available. May be skipped for intermediary
2086          *  blocks.
2087          */
2088         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
2089         /**
2090          *  Returns transactions that must be monitored for reorganization out of the chain along
2091          *  with the height and the hash of the block as part of which it had been previously confirmed.
2092          * 
2093          *  Note that the returned `Option<BlockHash>` might be `None` for channels created with LDK
2094          *  0.0.112 and prior, in which case you need to manually track previous confirmations.
2095          * 
2096          *  Will include any transactions passed to [`transactions_confirmed`] that have insufficient
2097          *  confirmations to be safe from a chain reorganization. Will not include any transactions
2098          *  passed to [`transaction_unconfirmed`], unless later reconfirmed.
2099          * 
2100          *  Must be called to determine the subset of transactions that must be monitored for
2101          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
2102          *  other interface methods. Thus, this is useful to determine which transactions must be
2103          *  given to [`transaction_unconfirmed`].
2104          * 
2105          *  If any of the returned transactions are confirmed in a block other than the one with the
2106          *  given hash at the given height, they need to be unconfirmed and reconfirmed via
2107          *  [`transaction_unconfirmed`] and [`transactions_confirmed`], respectively.
2108          * 
2109          *  [`transactions_confirmed`]: Self::transactions_confirmed
2110          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
2111          */
2112         inline LDK::CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ get_relevant_txids();
2113 };
2114 class ChannelMonitorUpdateStatus {
2115 private:
2116         LDKChannelMonitorUpdateStatus self;
2117 public:
2118         ChannelMonitorUpdateStatus(const ChannelMonitorUpdateStatus&) = delete;
2119         ChannelMonitorUpdateStatus(ChannelMonitorUpdateStatus&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); }
2120         ChannelMonitorUpdateStatus(LDKChannelMonitorUpdateStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateStatus)); }
2121         operator LDKChannelMonitorUpdateStatus() && { LDKChannelMonitorUpdateStatus res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateStatus)); return res; }
2122         ChannelMonitorUpdateStatus& operator=(ChannelMonitorUpdateStatus&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); return *this; }
2123         LDKChannelMonitorUpdateStatus* operator &() { return &self; }
2124         LDKChannelMonitorUpdateStatus* operator ->() { return &self; }
2125         const LDKChannelMonitorUpdateStatus* operator &() const { return &self; }
2126         const LDKChannelMonitorUpdateStatus* operator ->() const { return &self; }
2127 };
2128 class Watch {
2129 private:
2130         LDKWatch self;
2131 public:
2132         Watch(const Watch&) = delete;
2133         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
2134         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
2135         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
2136         ~Watch() { Watch_free(self); }
2137         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
2138         LDKWatch* operator &() { return &self; }
2139         LDKWatch* operator ->() { return &self; }
2140         const LDKWatch* operator &() const { return &self; }
2141         const LDKWatch* operator ->() const { return &self; }
2142         /**
2143          *  Watches a channel identified by `funding_txo` using `monitor`.
2144          * 
2145          *  Implementations are responsible for watching the chain for the funding transaction along
2146          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
2147          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
2148          * 
2149          *  A return of `Err(())` indicates that the channel should immediately be force-closed without
2150          *  broadcasting the funding transaction.
2151          * 
2152          *  If the given `funding_txo` has previously been registered via `watch_channel`, `Err(())`
2153          *  must be returned.
2154          * 
2155          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
2156          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
2157          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
2158          */
2159         inline LDK::CResult_ChannelMonitorUpdateStatusNoneZ watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
2160         /**
2161          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
2162          * 
2163          *  Implementations must call [`ChannelMonitor::update_monitor`] with the given update. This
2164          *  may fail (returning an `Err(())`), in which case this should return
2165          *  [`ChannelMonitorUpdateStatus::InProgress`] (and the update should never complete). This
2166          *  generally implies the channel has been closed (either by the funding outpoint being spent
2167          *  on-chain or the [`ChannelMonitor`] having decided to do so and broadcasted a transaction),
2168          *  and the [`ChannelManager`] state will be updated once it sees the funding spend on-chain.
2169          * 
2170          *  In general, persistence failures should be retried after returning
2171          *  [`ChannelMonitorUpdateStatus::InProgress`] and eventually complete. If a failure truly
2172          *  cannot be retried, the node should shut down immediately after returning
2173          *  [`ChannelMonitorUpdateStatus::UnrecoverableError`], see its documentation for more info.
2174          * 
2175          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2176          */
2177         inline LDK::ChannelMonitorUpdateStatus update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update);
2178         /**
2179          *  Returns any monitor events since the last call. Subsequent calls must only return new
2180          *  events.
2181          * 
2182          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
2183          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
2184          *  to disk.
2185          * 
2186          *  For details on asynchronous [`ChannelMonitor`] updating and returning
2187          *  [`MonitorEvent::Completed`] here, see [`ChannelMonitorUpdateStatus::InProgress`].
2188          */
2189         inline LDK::CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ release_pending_monitor_events();
2190 };
2191 class Filter {
2192 private:
2193         LDKFilter self;
2194 public:
2195         Filter(const Filter&) = delete;
2196         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
2197         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
2198         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
2199         ~Filter() { Filter_free(self); }
2200         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
2201         LDKFilter* operator &() { return &self; }
2202         LDKFilter* operator ->() { return &self; }
2203         const LDKFilter* operator &() const { return &self; }
2204         const LDKFilter* operator ->() const { return &self; }
2205         /**
2206          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
2207          *  a spending condition.
2208          */
2209         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
2210         /**
2211          *  Registers interest in spends of a transaction output.
2212          * 
2213          *  Note that this method might be called during processing of a new block. You therefore need
2214          *  to ensure that also dependent output spents within an already connected block are correctly
2215          *  handled, e.g., by re-scanning the block in question whenever new outputs have been
2216          *  registered mid-processing.
2217          */
2218         inline void register_output(struct LDKWatchedOutput output);
2219 };
2220 class WatchedOutput {
2221 private:
2222         LDKWatchedOutput self;
2223 public:
2224         WatchedOutput(const WatchedOutput&) = delete;
2225         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
2226         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
2227         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
2228         ~WatchedOutput() { WatchedOutput_free(self); }
2229         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
2230         LDKWatchedOutput* operator &() { return &self; }
2231         LDKWatchedOutput* operator ->() { return &self; }
2232         const LDKWatchedOutput* operator &() const { return &self; }
2233         const LDKWatchedOutput* operator ->() const { return &self; }
2234 };
2235 class InitFeatures {
2236 private:
2237         LDKInitFeatures self;
2238 public:
2239         InitFeatures(const InitFeatures&) = delete;
2240         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
2241         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
2242         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
2243         ~InitFeatures() { InitFeatures_free(self); }
2244         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
2245         LDKInitFeatures* operator &() { return &self; }
2246         LDKInitFeatures* operator ->() { return &self; }
2247         const LDKInitFeatures* operator &() const { return &self; }
2248         const LDKInitFeatures* operator ->() const { return &self; }
2249 };
2250 class NodeFeatures {
2251 private:
2252         LDKNodeFeatures self;
2253 public:
2254         NodeFeatures(const NodeFeatures&) = delete;
2255         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
2256         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
2257         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
2258         ~NodeFeatures() { NodeFeatures_free(self); }
2259         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
2260         LDKNodeFeatures* operator &() { return &self; }
2261         LDKNodeFeatures* operator ->() { return &self; }
2262         const LDKNodeFeatures* operator &() const { return &self; }
2263         const LDKNodeFeatures* operator ->() const { return &self; }
2264 };
2265 class ChannelFeatures {
2266 private:
2267         LDKChannelFeatures self;
2268 public:
2269         ChannelFeatures(const ChannelFeatures&) = delete;
2270         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
2271         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
2272         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
2273         ~ChannelFeatures() { ChannelFeatures_free(self); }
2274         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
2275         LDKChannelFeatures* operator &() { return &self; }
2276         LDKChannelFeatures* operator ->() { return &self; }
2277         const LDKChannelFeatures* operator &() const { return &self; }
2278         const LDKChannelFeatures* operator ->() const { return &self; }
2279 };
2280 class Bolt11InvoiceFeatures {
2281 private:
2282         LDKBolt11InvoiceFeatures self;
2283 public:
2284         Bolt11InvoiceFeatures(const Bolt11InvoiceFeatures&) = delete;
2285         Bolt11InvoiceFeatures(Bolt11InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11InvoiceFeatures)); }
2286         Bolt11InvoiceFeatures(LDKBolt11InvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11InvoiceFeatures)); }
2287         operator LDKBolt11InvoiceFeatures() && { LDKBolt11InvoiceFeatures res = self; memset(&self, 0, sizeof(LDKBolt11InvoiceFeatures)); return res; }
2288         ~Bolt11InvoiceFeatures() { Bolt11InvoiceFeatures_free(self); }
2289         Bolt11InvoiceFeatures& operator=(Bolt11InvoiceFeatures&& o) { Bolt11InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11InvoiceFeatures)); return *this; }
2290         LDKBolt11InvoiceFeatures* operator &() { return &self; }
2291         LDKBolt11InvoiceFeatures* operator ->() { return &self; }
2292         const LDKBolt11InvoiceFeatures* operator &() const { return &self; }
2293         const LDKBolt11InvoiceFeatures* operator ->() const { return &self; }
2294 };
2295 class OfferFeatures {
2296 private:
2297         LDKOfferFeatures self;
2298 public:
2299         OfferFeatures(const OfferFeatures&) = delete;
2300         OfferFeatures(OfferFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(OfferFeatures)); }
2301         OfferFeatures(LDKOfferFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferFeatures)); }
2302         operator LDKOfferFeatures() && { LDKOfferFeatures res = self; memset(&self, 0, sizeof(LDKOfferFeatures)); return res; }
2303         ~OfferFeatures() { OfferFeatures_free(self); }
2304         OfferFeatures& operator=(OfferFeatures&& o) { OfferFeatures_free(self); self = o.self; memset(&o, 0, sizeof(OfferFeatures)); return *this; }
2305         LDKOfferFeatures* operator &() { return &self; }
2306         LDKOfferFeatures* operator ->() { return &self; }
2307         const LDKOfferFeatures* operator &() const { return &self; }
2308         const LDKOfferFeatures* operator ->() const { return &self; }
2309 };
2310 class InvoiceRequestFeatures {
2311 private:
2312         LDKInvoiceRequestFeatures self;
2313 public:
2314         InvoiceRequestFeatures(const InvoiceRequestFeatures&) = delete;
2315         InvoiceRequestFeatures(InvoiceRequestFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestFeatures)); }
2316         InvoiceRequestFeatures(LDKInvoiceRequestFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestFeatures)); }
2317         operator LDKInvoiceRequestFeatures() && { LDKInvoiceRequestFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceRequestFeatures)); return res; }
2318         ~InvoiceRequestFeatures() { InvoiceRequestFeatures_free(self); }
2319         InvoiceRequestFeatures& operator=(InvoiceRequestFeatures&& o) { InvoiceRequestFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestFeatures)); return *this; }
2320         LDKInvoiceRequestFeatures* operator &() { return &self; }
2321         LDKInvoiceRequestFeatures* operator ->() { return &self; }
2322         const LDKInvoiceRequestFeatures* operator &() const { return &self; }
2323         const LDKInvoiceRequestFeatures* operator ->() const { return &self; }
2324 };
2325 class Bolt12InvoiceFeatures {
2326 private:
2327         LDKBolt12InvoiceFeatures self;
2328 public:
2329         Bolt12InvoiceFeatures(const Bolt12InvoiceFeatures&) = delete;
2330         Bolt12InvoiceFeatures(Bolt12InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); }
2331         Bolt12InvoiceFeatures(LDKBolt12InvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12InvoiceFeatures)); }
2332         operator LDKBolt12InvoiceFeatures() && { LDKBolt12InvoiceFeatures res = self; memset(&self, 0, sizeof(LDKBolt12InvoiceFeatures)); return res; }
2333         ~Bolt12InvoiceFeatures() { Bolt12InvoiceFeatures_free(self); }
2334         Bolt12InvoiceFeatures& operator=(Bolt12InvoiceFeatures&& o) { Bolt12InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); return *this; }
2335         LDKBolt12InvoiceFeatures* operator &() { return &self; }
2336         LDKBolt12InvoiceFeatures* operator ->() { return &self; }
2337         const LDKBolt12InvoiceFeatures* operator &() const { return &self; }
2338         const LDKBolt12InvoiceFeatures* operator ->() const { return &self; }
2339 };
2340 class BlindedHopFeatures {
2341 private:
2342         LDKBlindedHopFeatures self;
2343 public:
2344         BlindedHopFeatures(const BlindedHopFeatures&) = delete;
2345         BlindedHopFeatures(BlindedHopFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHopFeatures)); }
2346         BlindedHopFeatures(LDKBlindedHopFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHopFeatures)); }
2347         operator LDKBlindedHopFeatures() && { LDKBlindedHopFeatures res = self; memset(&self, 0, sizeof(LDKBlindedHopFeatures)); return res; }
2348         ~BlindedHopFeatures() { BlindedHopFeatures_free(self); }
2349         BlindedHopFeatures& operator=(BlindedHopFeatures&& o) { BlindedHopFeatures_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHopFeatures)); return *this; }
2350         LDKBlindedHopFeatures* operator &() { return &self; }
2351         LDKBlindedHopFeatures* operator ->() { return &self; }
2352         const LDKBlindedHopFeatures* operator &() const { return &self; }
2353         const LDKBlindedHopFeatures* operator ->() const { return &self; }
2354 };
2355 class ChannelTypeFeatures {
2356 private:
2357         LDKChannelTypeFeatures self;
2358 public:
2359         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
2360         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
2361         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
2362         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
2363         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
2364         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
2365         LDKChannelTypeFeatures* operator &() { return &self; }
2366         LDKChannelTypeFeatures* operator ->() { return &self; }
2367         const LDKChannelTypeFeatures* operator &() const { return &self; }
2368         const LDKChannelTypeFeatures* operator ->() const { return &self; }
2369 };
2370 class OfferId {
2371 private:
2372         LDKOfferId self;
2373 public:
2374         OfferId(const OfferId&) = delete;
2375         OfferId(OfferId&& o) : self(o.self) { memset(&o, 0, sizeof(OfferId)); }
2376         OfferId(LDKOfferId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferId)); }
2377         operator LDKOfferId() && { LDKOfferId res = self; memset(&self, 0, sizeof(LDKOfferId)); return res; }
2378         ~OfferId() { OfferId_free(self); }
2379         OfferId& operator=(OfferId&& o) { OfferId_free(self); self = o.self; memset(&o, 0, sizeof(OfferId)); return *this; }
2380         LDKOfferId* operator &() { return &self; }
2381         LDKOfferId* operator ->() { return &self; }
2382         const LDKOfferId* operator &() const { return &self; }
2383         const LDKOfferId* operator ->() const { return &self; }
2384 };
2385 class OfferWithExplicitMetadataBuilder {
2386 private:
2387         LDKOfferWithExplicitMetadataBuilder self;
2388 public:
2389         OfferWithExplicitMetadataBuilder(const OfferWithExplicitMetadataBuilder&) = delete;
2390         OfferWithExplicitMetadataBuilder(OfferWithExplicitMetadataBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(OfferWithExplicitMetadataBuilder)); }
2391         OfferWithExplicitMetadataBuilder(LDKOfferWithExplicitMetadataBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferWithExplicitMetadataBuilder)); }
2392         operator LDKOfferWithExplicitMetadataBuilder() && { LDKOfferWithExplicitMetadataBuilder res = self; memset(&self, 0, sizeof(LDKOfferWithExplicitMetadataBuilder)); return res; }
2393         ~OfferWithExplicitMetadataBuilder() { OfferWithExplicitMetadataBuilder_free(self); }
2394         OfferWithExplicitMetadataBuilder& operator=(OfferWithExplicitMetadataBuilder&& o) { OfferWithExplicitMetadataBuilder_free(self); self = o.self; memset(&o, 0, sizeof(OfferWithExplicitMetadataBuilder)); return *this; }
2395         LDKOfferWithExplicitMetadataBuilder* operator &() { return &self; }
2396         LDKOfferWithExplicitMetadataBuilder* operator ->() { return &self; }
2397         const LDKOfferWithExplicitMetadataBuilder* operator &() const { return &self; }
2398         const LDKOfferWithExplicitMetadataBuilder* operator ->() const { return &self; }
2399 };
2400 class OfferWithDerivedMetadataBuilder {
2401 private:
2402         LDKOfferWithDerivedMetadataBuilder self;
2403 public:
2404         OfferWithDerivedMetadataBuilder(const OfferWithDerivedMetadataBuilder&) = delete;
2405         OfferWithDerivedMetadataBuilder(OfferWithDerivedMetadataBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(OfferWithDerivedMetadataBuilder)); }
2406         OfferWithDerivedMetadataBuilder(LDKOfferWithDerivedMetadataBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferWithDerivedMetadataBuilder)); }
2407         operator LDKOfferWithDerivedMetadataBuilder() && { LDKOfferWithDerivedMetadataBuilder res = self; memset(&self, 0, sizeof(LDKOfferWithDerivedMetadataBuilder)); return res; }
2408         ~OfferWithDerivedMetadataBuilder() { OfferWithDerivedMetadataBuilder_free(self); }
2409         OfferWithDerivedMetadataBuilder& operator=(OfferWithDerivedMetadataBuilder&& o) { OfferWithDerivedMetadataBuilder_free(self); self = o.self; memset(&o, 0, sizeof(OfferWithDerivedMetadataBuilder)); return *this; }
2410         LDKOfferWithDerivedMetadataBuilder* operator &() { return &self; }
2411         LDKOfferWithDerivedMetadataBuilder* operator ->() { return &self; }
2412         const LDKOfferWithDerivedMetadataBuilder* operator &() const { return &self; }
2413         const LDKOfferWithDerivedMetadataBuilder* operator ->() const { return &self; }
2414 };
2415 class Offer {
2416 private:
2417         LDKOffer self;
2418 public:
2419         Offer(const Offer&) = delete;
2420         Offer(Offer&& o) : self(o.self) { memset(&o, 0, sizeof(Offer)); }
2421         Offer(LDKOffer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffer)); }
2422         operator LDKOffer() && { LDKOffer res = self; memset(&self, 0, sizeof(LDKOffer)); return res; }
2423         ~Offer() { Offer_free(self); }
2424         Offer& operator=(Offer&& o) { Offer_free(self); self = o.self; memset(&o, 0, sizeof(Offer)); return *this; }
2425         LDKOffer* operator &() { return &self; }
2426         LDKOffer* operator ->() { return &self; }
2427         const LDKOffer* operator &() const { return &self; }
2428         const LDKOffer* operator ->() const { return &self; }
2429 };
2430 class Amount {
2431 private:
2432         LDKAmount self;
2433 public:
2434         Amount(const Amount&) = delete;
2435         Amount(Amount&& o) : self(o.self) { memset(&o, 0, sizeof(Amount)); }
2436         Amount(LDKAmount&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAmount)); }
2437         operator LDKAmount() && { LDKAmount res = self; memset(&self, 0, sizeof(LDKAmount)); return res; }
2438         ~Amount() { Amount_free(self); }
2439         Amount& operator=(Amount&& o) { Amount_free(self); self = o.self; memset(&o, 0, sizeof(Amount)); return *this; }
2440         LDKAmount* operator &() { return &self; }
2441         LDKAmount* operator ->() { return &self; }
2442         const LDKAmount* operator &() const { return &self; }
2443         const LDKAmount* operator ->() const { return &self; }
2444 };
2445 class Quantity {
2446 private:
2447         LDKQuantity self;
2448 public:
2449         Quantity(const Quantity&) = delete;
2450         Quantity(Quantity&& o) : self(o.self) { memset(&o, 0, sizeof(Quantity)); }
2451         Quantity(LDKQuantity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQuantity)); }
2452         operator LDKQuantity() && { LDKQuantity res = self; memset(&self, 0, sizeof(LDKQuantity)); return res; }
2453         ~Quantity() { Quantity_free(self); }
2454         Quantity& operator=(Quantity&& o) { Quantity_free(self); self = o.self; memset(&o, 0, sizeof(Quantity)); return *this; }
2455         LDKQuantity* operator &() { return &self; }
2456         LDKQuantity* operator ->() { return &self; }
2457         const LDKQuantity* operator &() const { return &self; }
2458         const LDKQuantity* operator ->() const { return &self; }
2459 };
2460 class NodeId {
2461 private:
2462         LDKNodeId self;
2463 public:
2464         NodeId(const NodeId&) = delete;
2465         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
2466         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
2467         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
2468         ~NodeId() { NodeId_free(self); }
2469         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
2470         LDKNodeId* operator &() { return &self; }
2471         LDKNodeId* operator ->() { return &self; }
2472         const LDKNodeId* operator &() const { return &self; }
2473         const LDKNodeId* operator ->() const { return &self; }
2474 };
2475 class NetworkGraph {
2476 private:
2477         LDKNetworkGraph self;
2478 public:
2479         NetworkGraph(const NetworkGraph&) = delete;
2480         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
2481         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
2482         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
2483         ~NetworkGraph() { NetworkGraph_free(self); }
2484         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
2485         LDKNetworkGraph* operator &() { return &self; }
2486         LDKNetworkGraph* operator ->() { return &self; }
2487         const LDKNetworkGraph* operator &() const { return &self; }
2488         const LDKNetworkGraph* operator ->() const { return &self; }
2489 };
2490 class ReadOnlyNetworkGraph {
2491 private:
2492         LDKReadOnlyNetworkGraph self;
2493 public:
2494         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
2495         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
2496         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
2497         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
2498         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
2499         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
2500         LDKReadOnlyNetworkGraph* operator &() { return &self; }
2501         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
2502         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
2503         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
2504 };
2505 class NetworkUpdate {
2506 private:
2507         LDKNetworkUpdate self;
2508 public:
2509         NetworkUpdate(const NetworkUpdate&) = delete;
2510         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
2511         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
2512         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
2513         ~NetworkUpdate() { NetworkUpdate_free(self); }
2514         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
2515         LDKNetworkUpdate* operator &() { return &self; }
2516         LDKNetworkUpdate* operator ->() { return &self; }
2517         const LDKNetworkUpdate* operator &() const { return &self; }
2518         const LDKNetworkUpdate* operator ->() const { return &self; }
2519 };
2520 class P2PGossipSync {
2521 private:
2522         LDKP2PGossipSync self;
2523 public:
2524         P2PGossipSync(const P2PGossipSync&) = delete;
2525         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
2526         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
2527         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
2528         ~P2PGossipSync() { P2PGossipSync_free(self); }
2529         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
2530         LDKP2PGossipSync* operator &() { return &self; }
2531         LDKP2PGossipSync* operator ->() { return &self; }
2532         const LDKP2PGossipSync* operator &() const { return &self; }
2533         const LDKP2PGossipSync* operator ->() const { return &self; }
2534 };
2535 class ChannelUpdateInfo {
2536 private:
2537         LDKChannelUpdateInfo self;
2538 public:
2539         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
2540         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
2541         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
2542         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
2543         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
2544         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
2545         LDKChannelUpdateInfo* operator &() { return &self; }
2546         LDKChannelUpdateInfo* operator ->() { return &self; }
2547         const LDKChannelUpdateInfo* operator &() const { return &self; }
2548         const LDKChannelUpdateInfo* operator ->() const { return &self; }
2549 };
2550 class ChannelInfo {
2551 private:
2552         LDKChannelInfo self;
2553 public:
2554         ChannelInfo(const ChannelInfo&) = delete;
2555         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
2556         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
2557         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
2558         ~ChannelInfo() { ChannelInfo_free(self); }
2559         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
2560         LDKChannelInfo* operator &() { return &self; }
2561         LDKChannelInfo* operator ->() { return &self; }
2562         const LDKChannelInfo* operator &() const { return &self; }
2563         const LDKChannelInfo* operator ->() const { return &self; }
2564 };
2565 class DirectedChannelInfo {
2566 private:
2567         LDKDirectedChannelInfo self;
2568 public:
2569         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
2570         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
2571         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
2572         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
2573         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
2574         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
2575         LDKDirectedChannelInfo* operator &() { return &self; }
2576         LDKDirectedChannelInfo* operator ->() { return &self; }
2577         const LDKDirectedChannelInfo* operator &() const { return &self; }
2578         const LDKDirectedChannelInfo* operator ->() const { return &self; }
2579 };
2580 class EffectiveCapacity {
2581 private:
2582         LDKEffectiveCapacity self;
2583 public:
2584         EffectiveCapacity(const EffectiveCapacity&) = delete;
2585         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
2586         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
2587         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
2588         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
2589         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
2590         LDKEffectiveCapacity* operator &() { return &self; }
2591         LDKEffectiveCapacity* operator ->() { return &self; }
2592         const LDKEffectiveCapacity* operator &() const { return &self; }
2593         const LDKEffectiveCapacity* operator ->() const { return &self; }
2594 };
2595 class RoutingFees {
2596 private:
2597         LDKRoutingFees self;
2598 public:
2599         RoutingFees(const RoutingFees&) = delete;
2600         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
2601         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
2602         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
2603         ~RoutingFees() { RoutingFees_free(self); }
2604         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
2605         LDKRoutingFees* operator &() { return &self; }
2606         LDKRoutingFees* operator ->() { return &self; }
2607         const LDKRoutingFees* operator &() const { return &self; }
2608         const LDKRoutingFees* operator ->() const { return &self; }
2609 };
2610 class NodeAnnouncementInfo {
2611 private:
2612         LDKNodeAnnouncementInfo self;
2613 public:
2614         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
2615         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
2616         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
2617         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
2618         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
2619         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
2620         LDKNodeAnnouncementInfo* operator &() { return &self; }
2621         LDKNodeAnnouncementInfo* operator ->() { return &self; }
2622         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
2623         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
2624 };
2625 class NodeAlias {
2626 private:
2627         LDKNodeAlias self;
2628 public:
2629         NodeAlias(const NodeAlias&) = delete;
2630         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
2631         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
2632         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
2633         ~NodeAlias() { NodeAlias_free(self); }
2634         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
2635         LDKNodeAlias* operator &() { return &self; }
2636         LDKNodeAlias* operator ->() { return &self; }
2637         const LDKNodeAlias* operator &() const { return &self; }
2638         const LDKNodeAlias* operator ->() const { return &self; }
2639 };
2640 class NodeInfo {
2641 private:
2642         LDKNodeInfo self;
2643 public:
2644         NodeInfo(const NodeInfo&) = delete;
2645         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
2646         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
2647         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
2648         ~NodeInfo() { NodeInfo_free(self); }
2649         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
2650         LDKNodeInfo* operator &() { return &self; }
2651         LDKNodeInfo* operator ->() { return &self; }
2652         const LDKNodeInfo* operator &() const { return &self; }
2653         const LDKNodeInfo* operator ->() const { return &self; }
2654 };
2655 class ShortChannelIdError {
2656 private:
2657         LDKShortChannelIdError self;
2658 public:
2659         ShortChannelIdError(const ShortChannelIdError&) = delete;
2660         ShortChannelIdError(ShortChannelIdError&& o) : self(o.self) { memset(&o, 0, sizeof(ShortChannelIdError)); }
2661         ShortChannelIdError(LDKShortChannelIdError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShortChannelIdError)); }
2662         operator LDKShortChannelIdError() && { LDKShortChannelIdError res = self; memset(&self, 0, sizeof(LDKShortChannelIdError)); return res; }
2663         ShortChannelIdError& operator=(ShortChannelIdError&& o) { self = o.self; memset(&o, 0, sizeof(ShortChannelIdError)); return *this; }
2664         LDKShortChannelIdError* operator &() { return &self; }
2665         LDKShortChannelIdError* operator ->() { return &self; }
2666         const LDKShortChannelIdError* operator &() const { return &self; }
2667         const LDKShortChannelIdError* operator ->() const { return &self; }
2668 };
2669 class InboundHTLCErr {
2670 private:
2671         LDKInboundHTLCErr self;
2672 public:
2673         InboundHTLCErr(const InboundHTLCErr&) = delete;
2674         InboundHTLCErr(InboundHTLCErr&& o) : self(o.self) { memset(&o, 0, sizeof(InboundHTLCErr)); }
2675         InboundHTLCErr(LDKInboundHTLCErr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInboundHTLCErr)); }
2676         operator LDKInboundHTLCErr() && { LDKInboundHTLCErr res = self; memset(&self, 0, sizeof(LDKInboundHTLCErr)); return res; }
2677         ~InboundHTLCErr() { InboundHTLCErr_free(self); }
2678         InboundHTLCErr& operator=(InboundHTLCErr&& o) { InboundHTLCErr_free(self); self = o.self; memset(&o, 0, sizeof(InboundHTLCErr)); return *this; }
2679         LDKInboundHTLCErr* operator &() { return &self; }
2680         LDKInboundHTLCErr* operator ->() { return &self; }
2681         const LDKInboundHTLCErr* operator &() const { return &self; }
2682         const LDKInboundHTLCErr* operator ->() const { return &self; }
2683 };
2684 class AnchorDescriptor {
2685 private:
2686         LDKAnchorDescriptor self;
2687 public:
2688         AnchorDescriptor(const AnchorDescriptor&) = delete;
2689         AnchorDescriptor(AnchorDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(AnchorDescriptor)); }
2690         AnchorDescriptor(LDKAnchorDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnchorDescriptor)); }
2691         operator LDKAnchorDescriptor() && { LDKAnchorDescriptor res = self; memset(&self, 0, sizeof(LDKAnchorDescriptor)); return res; }
2692         ~AnchorDescriptor() { AnchorDescriptor_free(self); }
2693         AnchorDescriptor& operator=(AnchorDescriptor&& o) { AnchorDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(AnchorDescriptor)); return *this; }
2694         LDKAnchorDescriptor* operator &() { return &self; }
2695         LDKAnchorDescriptor* operator ->() { return &self; }
2696         const LDKAnchorDescriptor* operator &() const { return &self; }
2697         const LDKAnchorDescriptor* operator ->() const { return &self; }
2698 };
2699 class BumpTransactionEvent {
2700 private:
2701         LDKBumpTransactionEvent self;
2702 public:
2703         BumpTransactionEvent(const BumpTransactionEvent&) = delete;
2704         BumpTransactionEvent(BumpTransactionEvent&& o) : self(o.self) { memset(&o, 0, sizeof(BumpTransactionEvent)); }
2705         BumpTransactionEvent(LDKBumpTransactionEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBumpTransactionEvent)); }
2706         operator LDKBumpTransactionEvent() && { LDKBumpTransactionEvent res = self; memset(&self, 0, sizeof(LDKBumpTransactionEvent)); return res; }
2707         ~BumpTransactionEvent() { BumpTransactionEvent_free(self); }
2708         BumpTransactionEvent& operator=(BumpTransactionEvent&& o) { BumpTransactionEvent_free(self); self = o.self; memset(&o, 0, sizeof(BumpTransactionEvent)); return *this; }
2709         LDKBumpTransactionEvent* operator &() { return &self; }
2710         LDKBumpTransactionEvent* operator ->() { return &self; }
2711         const LDKBumpTransactionEvent* operator &() const { return &self; }
2712         const LDKBumpTransactionEvent* operator ->() const { return &self; }
2713 };
2714 class Input {
2715 private:
2716         LDKInput self;
2717 public:
2718         Input(const Input&) = delete;
2719         Input(Input&& o) : self(o.self) { memset(&o, 0, sizeof(Input)); }
2720         Input(LDKInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInput)); }
2721         operator LDKInput() && { LDKInput res = self; memset(&self, 0, sizeof(LDKInput)); return res; }
2722         ~Input() { Input_free(self); }
2723         Input& operator=(Input&& o) { Input_free(self); self = o.self; memset(&o, 0, sizeof(Input)); return *this; }
2724         LDKInput* operator &() { return &self; }
2725         LDKInput* operator ->() { return &self; }
2726         const LDKInput* operator &() const { return &self; }
2727         const LDKInput* operator ->() const { return &self; }
2728 };
2729 class Utxo {
2730 private:
2731         LDKUtxo self;
2732 public:
2733         Utxo(const Utxo&) = delete;
2734         Utxo(Utxo&& o) : self(o.self) { memset(&o, 0, sizeof(Utxo)); }
2735         Utxo(LDKUtxo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxo)); }
2736         operator LDKUtxo() && { LDKUtxo res = self; memset(&self, 0, sizeof(LDKUtxo)); return res; }
2737         ~Utxo() { Utxo_free(self); }
2738         Utxo& operator=(Utxo&& o) { Utxo_free(self); self = o.self; memset(&o, 0, sizeof(Utxo)); return *this; }
2739         LDKUtxo* operator &() { return &self; }
2740         LDKUtxo* operator ->() { return &self; }
2741         const LDKUtxo* operator &() const { return &self; }
2742         const LDKUtxo* operator ->() const { return &self; }
2743 };
2744 class CoinSelection {
2745 private:
2746         LDKCoinSelection self;
2747 public:
2748         CoinSelection(const CoinSelection&) = delete;
2749         CoinSelection(CoinSelection&& o) : self(o.self) { memset(&o, 0, sizeof(CoinSelection)); }
2750         CoinSelection(LDKCoinSelection&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCoinSelection)); }
2751         operator LDKCoinSelection() && { LDKCoinSelection res = self; memset(&self, 0, sizeof(LDKCoinSelection)); return res; }
2752         ~CoinSelection() { CoinSelection_free(self); }
2753         CoinSelection& operator=(CoinSelection&& o) { CoinSelection_free(self); self = o.self; memset(&o, 0, sizeof(CoinSelection)); return *this; }
2754         LDKCoinSelection* operator &() { return &self; }
2755         LDKCoinSelection* operator ->() { return &self; }
2756         const LDKCoinSelection* operator &() const { return &self; }
2757         const LDKCoinSelection* operator ->() const { return &self; }
2758 };
2759 class CoinSelectionSource {
2760 private:
2761         LDKCoinSelectionSource self;
2762 public:
2763         CoinSelectionSource(const CoinSelectionSource&) = delete;
2764         CoinSelectionSource(CoinSelectionSource&& o) : self(o.self) { memset(&o, 0, sizeof(CoinSelectionSource)); }
2765         CoinSelectionSource(LDKCoinSelectionSource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCoinSelectionSource)); }
2766         operator LDKCoinSelectionSource() && { LDKCoinSelectionSource res = self; memset(&self, 0, sizeof(LDKCoinSelectionSource)); return res; }
2767         ~CoinSelectionSource() { CoinSelectionSource_free(self); }
2768         CoinSelectionSource& operator=(CoinSelectionSource&& o) { CoinSelectionSource_free(self); self = o.self; memset(&o, 0, sizeof(CoinSelectionSource)); return *this; }
2769         LDKCoinSelectionSource* operator &() { return &self; }
2770         LDKCoinSelectionSource* operator ->() { return &self; }
2771         const LDKCoinSelectionSource* operator &() const { return &self; }
2772         const LDKCoinSelectionSource* operator ->() const { return &self; }
2773         /**
2774          *  Performs coin selection of a set of UTXOs, with at least 1 confirmation each, that are
2775          *  available to spend. Implementations are free to pick their coin selection algorithm of
2776          *  choice, as long as the following requirements are met:
2777          * 
2778          *  1. `must_spend` contains a set of [`Input`]s that must be included in the transaction
2779          *     throughout coin selection, but must not be returned as part of the result.
2780          *  2. `must_pay_to` contains a set of [`TxOut`]s that must be included in the transaction
2781          *     throughout coin selection. In some cases, like when funding an anchor transaction, this
2782          *     set is empty. Implementations should ensure they handle this correctly on their end,
2783          *     e.g., Bitcoin Core's `fundrawtransaction` RPC requires at least one output to be
2784          *     provided, in which case a zero-value empty OP_RETURN output can be used instead.
2785          *  3. Enough inputs must be selected/contributed for the resulting transaction (including the
2786          *     inputs and outputs noted above) to meet `target_feerate_sat_per_1000_weight`.
2787          * 
2788          *  Implementations must take note that [`Input::satisfaction_weight`] only tracks the weight of
2789          *  the input's `script_sig` and `witness`. Some wallets, like Bitcoin Core's, may require
2790          *  providing the full input weight. Failing to do so may lead to underestimating fee bumps and
2791          *  delaying block inclusion.
2792          * 
2793          *  The `claim_id` must map to the set of external UTXOs assigned to the claim, such that they
2794          *  can be re-used within new fee-bumped iterations of the original claiming transaction,
2795          *  ensuring that claims don't double spend each other. If a specific `claim_id` has never had a
2796          *  transaction associated with it, and all of the available UTXOs have already been assigned to
2797          *  other claims, implementations must be willing to double spend their UTXOs. The choice of
2798          *  which UTXOs to double spend is left to the implementation, but it must strive to keep the
2799          *  set of other claims being double spent to a minimum.
2800          */
2801         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);
2802         /**
2803          *  Signs and provides the full witness for all inputs within the transaction known to the
2804          *  trait (i.e., any provided via [`CoinSelectionSource::select_confirmed_utxos`]).
2805          * 
2806          *  If your wallet does not support signing PSBTs you can call `psbt.extract_tx()` to get the
2807          *  unsigned transaction and then sign it with your wallet.
2808          */
2809         inline LDK::CResult_TransactionNoneZ sign_psbt(struct LDKCVec_u8Z psbt);
2810 };
2811 class WalletSource {
2812 private:
2813         LDKWalletSource self;
2814 public:
2815         WalletSource(const WalletSource&) = delete;
2816         WalletSource(WalletSource&& o) : self(o.self) { memset(&o, 0, sizeof(WalletSource)); }
2817         WalletSource(LDKWalletSource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWalletSource)); }
2818         operator LDKWalletSource() && { LDKWalletSource res = self; memset(&self, 0, sizeof(LDKWalletSource)); return res; }
2819         ~WalletSource() { WalletSource_free(self); }
2820         WalletSource& operator=(WalletSource&& o) { WalletSource_free(self); self = o.self; memset(&o, 0, sizeof(WalletSource)); return *this; }
2821         LDKWalletSource* operator &() { return &self; }
2822         LDKWalletSource* operator ->() { return &self; }
2823         const LDKWalletSource* operator &() const { return &self; }
2824         const LDKWalletSource* operator ->() const { return &self; }
2825         /**
2826          *  Returns all UTXOs, with at least 1 confirmation each, that are available to spend.
2827          */
2828         inline LDK::CResult_CVec_UtxoZNoneZ list_confirmed_utxos();
2829         /**
2830          *  Returns a script to use for change above dust resulting from a successful coin selection
2831          *  attempt.
2832          */
2833         inline LDK::CResult_CVec_u8ZNoneZ get_change_script();
2834         /**
2835          *  Signs and provides the full [`TxIn::script_sig`] and [`TxIn::witness`] for all inputs within
2836          *  the transaction known to the wallet (i.e., any provided via
2837          *  [`WalletSource::list_confirmed_utxos`]).
2838          * 
2839          *  If your wallet does not support signing PSBTs you can call `psbt.extract_tx()` to get the
2840          *  unsigned transaction and then sign it with your wallet.
2841          */
2842         inline LDK::CResult_TransactionNoneZ sign_psbt(struct LDKCVec_u8Z psbt);
2843 };
2844 class Wallet {
2845 private:
2846         LDKWallet self;
2847 public:
2848         Wallet(const Wallet&) = delete;
2849         Wallet(Wallet&& o) : self(o.self) { memset(&o, 0, sizeof(Wallet)); }
2850         Wallet(LDKWallet&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWallet)); }
2851         operator LDKWallet() && { LDKWallet res = self; memset(&self, 0, sizeof(LDKWallet)); return res; }
2852         ~Wallet() { Wallet_free(self); }
2853         Wallet& operator=(Wallet&& o) { Wallet_free(self); self = o.self; memset(&o, 0, sizeof(Wallet)); return *this; }
2854         LDKWallet* operator &() { return &self; }
2855         LDKWallet* operator ->() { return &self; }
2856         const LDKWallet* operator &() const { return &self; }
2857         const LDKWallet* operator ->() const { return &self; }
2858 };
2859 class BumpTransactionEventHandler {
2860 private:
2861         LDKBumpTransactionEventHandler self;
2862 public:
2863         BumpTransactionEventHandler(const BumpTransactionEventHandler&) = delete;
2864         BumpTransactionEventHandler(BumpTransactionEventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(BumpTransactionEventHandler)); }
2865         BumpTransactionEventHandler(LDKBumpTransactionEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBumpTransactionEventHandler)); }
2866         operator LDKBumpTransactionEventHandler() && { LDKBumpTransactionEventHandler res = self; memset(&self, 0, sizeof(LDKBumpTransactionEventHandler)); return res; }
2867         ~BumpTransactionEventHandler() { BumpTransactionEventHandler_free(self); }
2868         BumpTransactionEventHandler& operator=(BumpTransactionEventHandler&& o) { BumpTransactionEventHandler_free(self); self = o.self; memset(&o, 0, sizeof(BumpTransactionEventHandler)); return *this; }
2869         LDKBumpTransactionEventHandler* operator &() { return &self; }
2870         LDKBumpTransactionEventHandler* operator ->() { return &self; }
2871         const LDKBumpTransactionEventHandler* operator &() const { return &self; }
2872         const LDKBumpTransactionEventHandler* operator ->() const { return &self; }
2873 };
2874 class PendingHTLCRouting {
2875 private:
2876         LDKPendingHTLCRouting self;
2877 public:
2878         PendingHTLCRouting(const PendingHTLCRouting&) = delete;
2879         PendingHTLCRouting(PendingHTLCRouting&& o) : self(o.self) { memset(&o, 0, sizeof(PendingHTLCRouting)); }
2880         PendingHTLCRouting(LDKPendingHTLCRouting&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPendingHTLCRouting)); }
2881         operator LDKPendingHTLCRouting() && { LDKPendingHTLCRouting res = self; memset(&self, 0, sizeof(LDKPendingHTLCRouting)); return res; }
2882         ~PendingHTLCRouting() { PendingHTLCRouting_free(self); }
2883         PendingHTLCRouting& operator=(PendingHTLCRouting&& o) { PendingHTLCRouting_free(self); self = o.self; memset(&o, 0, sizeof(PendingHTLCRouting)); return *this; }
2884         LDKPendingHTLCRouting* operator &() { return &self; }
2885         LDKPendingHTLCRouting* operator ->() { return &self; }
2886         const LDKPendingHTLCRouting* operator &() const { return &self; }
2887         const LDKPendingHTLCRouting* operator ->() const { return &self; }
2888 };
2889 class BlindedForward {
2890 private:
2891         LDKBlindedForward self;
2892 public:
2893         BlindedForward(const BlindedForward&) = delete;
2894         BlindedForward(BlindedForward&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedForward)); }
2895         BlindedForward(LDKBlindedForward&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedForward)); }
2896         operator LDKBlindedForward() && { LDKBlindedForward res = self; memset(&self, 0, sizeof(LDKBlindedForward)); return res; }
2897         ~BlindedForward() { BlindedForward_free(self); }
2898         BlindedForward& operator=(BlindedForward&& o) { BlindedForward_free(self); self = o.self; memset(&o, 0, sizeof(BlindedForward)); return *this; }
2899         LDKBlindedForward* operator &() { return &self; }
2900         LDKBlindedForward* operator ->() { return &self; }
2901         const LDKBlindedForward* operator &() const { return &self; }
2902         const LDKBlindedForward* operator ->() const { return &self; }
2903 };
2904 class PendingHTLCInfo {
2905 private:
2906         LDKPendingHTLCInfo self;
2907 public:
2908         PendingHTLCInfo(const PendingHTLCInfo&) = delete;
2909         PendingHTLCInfo(PendingHTLCInfo&& o) : self(o.self) { memset(&o, 0, sizeof(PendingHTLCInfo)); }
2910         PendingHTLCInfo(LDKPendingHTLCInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPendingHTLCInfo)); }
2911         operator LDKPendingHTLCInfo() && { LDKPendingHTLCInfo res = self; memset(&self, 0, sizeof(LDKPendingHTLCInfo)); return res; }
2912         ~PendingHTLCInfo() { PendingHTLCInfo_free(self); }
2913         PendingHTLCInfo& operator=(PendingHTLCInfo&& o) { PendingHTLCInfo_free(self); self = o.self; memset(&o, 0, sizeof(PendingHTLCInfo)); return *this; }
2914         LDKPendingHTLCInfo* operator &() { return &self; }
2915         LDKPendingHTLCInfo* operator ->() { return &self; }
2916         const LDKPendingHTLCInfo* operator &() const { return &self; }
2917         const LDKPendingHTLCInfo* operator ->() const { return &self; }
2918 };
2919 class BlindedFailure {
2920 private:
2921         LDKBlindedFailure self;
2922 public:
2923         BlindedFailure(const BlindedFailure&) = delete;
2924         BlindedFailure(BlindedFailure&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedFailure)); }
2925         BlindedFailure(LDKBlindedFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedFailure)); }
2926         operator LDKBlindedFailure() && { LDKBlindedFailure res = self; memset(&self, 0, sizeof(LDKBlindedFailure)); return res; }
2927         BlindedFailure& operator=(BlindedFailure&& o) { self = o.self; memset(&o, 0, sizeof(BlindedFailure)); return *this; }
2928         LDKBlindedFailure* operator &() { return &self; }
2929         LDKBlindedFailure* operator ->() { return &self; }
2930         const LDKBlindedFailure* operator &() const { return &self; }
2931         const LDKBlindedFailure* operator ->() const { return &self; }
2932 };
2933 class FailureCode {
2934 private:
2935         LDKFailureCode self;
2936 public:
2937         FailureCode(const FailureCode&) = delete;
2938         FailureCode(FailureCode&& o) : self(o.self) { memset(&o, 0, sizeof(FailureCode)); }
2939         FailureCode(LDKFailureCode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFailureCode)); }
2940         operator LDKFailureCode() && { LDKFailureCode res = self; memset(&self, 0, sizeof(LDKFailureCode)); return res; }
2941         ~FailureCode() { FailureCode_free(self); }
2942         FailureCode& operator=(FailureCode&& o) { FailureCode_free(self); self = o.self; memset(&o, 0, sizeof(FailureCode)); return *this; }
2943         LDKFailureCode* operator &() { return &self; }
2944         LDKFailureCode* operator ->() { return &self; }
2945         const LDKFailureCode* operator &() const { return &self; }
2946         const LDKFailureCode* operator ->() const { return &self; }
2947 };
2948 class ChannelManager {
2949 private:
2950         LDKChannelManager self;
2951 public:
2952         ChannelManager(const ChannelManager&) = delete;
2953         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2954         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2955         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2956         ~ChannelManager() { ChannelManager_free(self); }
2957         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2958         LDKChannelManager* operator &() { return &self; }
2959         LDKChannelManager* operator ->() { return &self; }
2960         const LDKChannelManager* operator &() const { return &self; }
2961         const LDKChannelManager* operator ->() const { return &self; }
2962 };
2963 class ChainParameters {
2964 private:
2965         LDKChainParameters self;
2966 public:
2967         ChainParameters(const ChainParameters&) = delete;
2968         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2969         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2970         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2971         ~ChainParameters() { ChainParameters_free(self); }
2972         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2973         LDKChainParameters* operator &() { return &self; }
2974         LDKChainParameters* operator ->() { return &self; }
2975         const LDKChainParameters* operator &() const { return &self; }
2976         const LDKChainParameters* operator ->() const { return &self; }
2977 };
2978 class RecentPaymentDetails {
2979 private:
2980         LDKRecentPaymentDetails self;
2981 public:
2982         RecentPaymentDetails(const RecentPaymentDetails&) = delete;
2983         RecentPaymentDetails(RecentPaymentDetails&& o) : self(o.self) { memset(&o, 0, sizeof(RecentPaymentDetails)); }
2984         RecentPaymentDetails(LDKRecentPaymentDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecentPaymentDetails)); }
2985         operator LDKRecentPaymentDetails() && { LDKRecentPaymentDetails res = self; memset(&self, 0, sizeof(LDKRecentPaymentDetails)); return res; }
2986         ~RecentPaymentDetails() { RecentPaymentDetails_free(self); }
2987         RecentPaymentDetails& operator=(RecentPaymentDetails&& o) { RecentPaymentDetails_free(self); self = o.self; memset(&o, 0, sizeof(RecentPaymentDetails)); return *this; }
2988         LDKRecentPaymentDetails* operator &() { return &self; }
2989         LDKRecentPaymentDetails* operator ->() { return &self; }
2990         const LDKRecentPaymentDetails* operator &() const { return &self; }
2991         const LDKRecentPaymentDetails* operator ->() const { return &self; }
2992 };
2993 class PhantomRouteHints {
2994 private:
2995         LDKPhantomRouteHints self;
2996 public:
2997         PhantomRouteHints(const PhantomRouteHints&) = delete;
2998         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2999         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
3000         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
3001         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
3002         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
3003         LDKPhantomRouteHints* operator &() { return &self; }
3004         LDKPhantomRouteHints* operator ->() { return &self; }
3005         const LDKPhantomRouteHints* operator &() const { return &self; }
3006         const LDKPhantomRouteHints* operator ->() const { return &self; }
3007 };
3008 class ChannelManagerReadArgs {
3009 private:
3010         LDKChannelManagerReadArgs self;
3011 public:
3012         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
3013         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
3014         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
3015         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
3016         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
3017         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
3018         LDKChannelManagerReadArgs* operator &() { return &self; }
3019         LDKChannelManagerReadArgs* operator ->() { return &self; }
3020         const LDKChannelManagerReadArgs* operator &() const { return &self; }
3021         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
3022 };
3023 class ChannelHandshakeConfig {
3024 private:
3025         LDKChannelHandshakeConfig self;
3026 public:
3027         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
3028         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
3029         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
3030         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
3031         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
3032         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
3033         LDKChannelHandshakeConfig* operator &() { return &self; }
3034         LDKChannelHandshakeConfig* operator ->() { return &self; }
3035         const LDKChannelHandshakeConfig* operator &() const { return &self; }
3036         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
3037 };
3038 class ChannelHandshakeLimits {
3039 private:
3040         LDKChannelHandshakeLimits self;
3041 public:
3042         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
3043         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
3044         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
3045         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
3046         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
3047         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
3048         LDKChannelHandshakeLimits* operator &() { return &self; }
3049         LDKChannelHandshakeLimits* operator ->() { return &self; }
3050         const LDKChannelHandshakeLimits* operator &() const { return &self; }
3051         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
3052 };
3053 class MaxDustHTLCExposure {
3054 private:
3055         LDKMaxDustHTLCExposure self;
3056 public:
3057         MaxDustHTLCExposure(const MaxDustHTLCExposure&) = delete;
3058         MaxDustHTLCExposure(MaxDustHTLCExposure&& o) : self(o.self) { memset(&o, 0, sizeof(MaxDustHTLCExposure)); }
3059         MaxDustHTLCExposure(LDKMaxDustHTLCExposure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMaxDustHTLCExposure)); }
3060         operator LDKMaxDustHTLCExposure() && { LDKMaxDustHTLCExposure res = self; memset(&self, 0, sizeof(LDKMaxDustHTLCExposure)); return res; }
3061         ~MaxDustHTLCExposure() { MaxDustHTLCExposure_free(self); }
3062         MaxDustHTLCExposure& operator=(MaxDustHTLCExposure&& o) { MaxDustHTLCExposure_free(self); self = o.self; memset(&o, 0, sizeof(MaxDustHTLCExposure)); return *this; }
3063         LDKMaxDustHTLCExposure* operator &() { return &self; }
3064         LDKMaxDustHTLCExposure* operator ->() { return &self; }
3065         const LDKMaxDustHTLCExposure* operator &() const { return &self; }
3066         const LDKMaxDustHTLCExposure* operator ->() const { return &self; }
3067 };
3068 class ChannelConfig {
3069 private:
3070         LDKChannelConfig self;
3071 public:
3072         ChannelConfig(const ChannelConfig&) = delete;
3073         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
3074         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
3075         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
3076         ~ChannelConfig() { ChannelConfig_free(self); }
3077         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
3078         LDKChannelConfig* operator &() { return &self; }
3079         LDKChannelConfig* operator ->() { return &self; }
3080         const LDKChannelConfig* operator &() const { return &self; }
3081         const LDKChannelConfig* operator ->() const { return &self; }
3082 };
3083 class ChannelConfigUpdate {
3084 private:
3085         LDKChannelConfigUpdate self;
3086 public:
3087         ChannelConfigUpdate(const ChannelConfigUpdate&) = delete;
3088         ChannelConfigUpdate(ChannelConfigUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfigUpdate)); }
3089         ChannelConfigUpdate(LDKChannelConfigUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfigUpdate)); }
3090         operator LDKChannelConfigUpdate() && { LDKChannelConfigUpdate res = self; memset(&self, 0, sizeof(LDKChannelConfigUpdate)); return res; }
3091         ~ChannelConfigUpdate() { ChannelConfigUpdate_free(self); }
3092         ChannelConfigUpdate& operator=(ChannelConfigUpdate&& o) { ChannelConfigUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfigUpdate)); return *this; }
3093         LDKChannelConfigUpdate* operator &() { return &self; }
3094         LDKChannelConfigUpdate* operator ->() { return &self; }
3095         const LDKChannelConfigUpdate* operator &() const { return &self; }
3096         const LDKChannelConfigUpdate* operator ->() const { return &self; }
3097 };
3098 class UserConfig {
3099 private:
3100         LDKUserConfig self;
3101 public:
3102         UserConfig(const UserConfig&) = delete;
3103         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
3104         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
3105         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
3106         ~UserConfig() { UserConfig_free(self); }
3107         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
3108         LDKUserConfig* operator &() { return &self; }
3109         LDKUserConfig* operator ->() { return &self; }
3110         const LDKUserConfig* operator &() const { return &self; }
3111         const LDKUserConfig* operator ->() const { return &self; }
3112 };
3113 class APIError {
3114 private:
3115         LDKAPIError self;
3116 public:
3117         APIError(const APIError&) = delete;
3118         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
3119         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
3120         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
3121         ~APIError() { APIError_free(self); }
3122         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
3123         LDKAPIError* operator &() { return &self; }
3124         LDKAPIError* operator ->() { return &self; }
3125         const LDKAPIError* operator &() const { return &self; }
3126         const LDKAPIError* operator ->() const { return &self; }
3127 };
3128 class TaggedHash {
3129 private:
3130         LDKTaggedHash self;
3131 public:
3132         TaggedHash(const TaggedHash&) = delete;
3133         TaggedHash(TaggedHash&& o) : self(o.self) { memset(&o, 0, sizeof(TaggedHash)); }
3134         TaggedHash(LDKTaggedHash&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTaggedHash)); }
3135         operator LDKTaggedHash() && { LDKTaggedHash res = self; memset(&self, 0, sizeof(LDKTaggedHash)); return res; }
3136         ~TaggedHash() { TaggedHash_free(self); }
3137         TaggedHash& operator=(TaggedHash&& o) { TaggedHash_free(self); self = o.self; memset(&o, 0, sizeof(TaggedHash)); return *this; }
3138         LDKTaggedHash* operator &() { return &self; }
3139         LDKTaggedHash* operator ->() { return &self; }
3140         const LDKTaggedHash* operator &() const { return &self; }
3141         const LDKTaggedHash* operator ->() const { return &self; }
3142 };
3143 class SignError {
3144 private:
3145         LDKSignError self;
3146 public:
3147         SignError(const SignError&) = delete;
3148         SignError(SignError&& o) : self(o.self) { memset(&o, 0, sizeof(SignError)); }
3149         SignError(LDKSignError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignError)); }
3150         operator LDKSignError() && { LDKSignError res = self; memset(&self, 0, sizeof(LDKSignError)); return res; }
3151         ~SignError() { SignError_free(self); }
3152         SignError& operator=(SignError&& o) { SignError_free(self); self = o.self; memset(&o, 0, sizeof(SignError)); return *this; }
3153         LDKSignError* operator &() { return &self; }
3154         LDKSignError* operator ->() { return &self; }
3155         const LDKSignError* operator &() const { return &self; }
3156         const LDKSignError* operator ->() const { return &self; }
3157 };
3158 class EcdsaChannelSigner {
3159 private:
3160         LDKEcdsaChannelSigner self;
3161 public:
3162         EcdsaChannelSigner(const EcdsaChannelSigner&) = delete;
3163         EcdsaChannelSigner(EcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(EcdsaChannelSigner)); }
3164         EcdsaChannelSigner(LDKEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEcdsaChannelSigner)); }
3165         operator LDKEcdsaChannelSigner() && { LDKEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKEcdsaChannelSigner)); return res; }
3166         ~EcdsaChannelSigner() { EcdsaChannelSigner_free(self); }
3167         EcdsaChannelSigner& operator=(EcdsaChannelSigner&& o) { EcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(EcdsaChannelSigner)); return *this; }
3168         LDKEcdsaChannelSigner* operator &() { return &self; }
3169         LDKEcdsaChannelSigner* operator ->() { return &self; }
3170         const LDKEcdsaChannelSigner* operator &() const { return &self; }
3171         const LDKEcdsaChannelSigner* operator ->() const { return &self; }
3172         /**
3173          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
3174          * 
3175          *  Note that if signing fails or is rejected, the channel will be force-closed.
3176          * 
3177          *  Policy checks should be implemented in this function, including checking the amount
3178          *  sent to us and checking the HTLCs.
3179          * 
3180          *  The preimages of outbound and inbound HTLCs that were fulfilled since the last commitment
3181          *  are provided. A validating signer should ensure that an outbound HTLC output is removed
3182          *  only when the matching preimage is provided and after the corresponding inbound HTLC has
3183          *  been removed for forwarded payments.
3184          * 
3185          *  Note that all the relevant preimages will be provided, but there may also be additional
3186          *  irrelevant or duplicate preimages.
3187          */
3188         inline LDK::CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_ThirtyTwoBytesZ inbound_htlc_preimages, struct LDKCVec_ThirtyTwoBytesZ outbound_htlc_preimages);
3189         /**
3190          *  Creates a signature for a holder's commitment transaction.
3191          * 
3192          *  This will be called
3193          *  - with a non-revoked `commitment_tx`.
3194          *  - with the latest `commitment_tx` when we initiate a force-close.
3195          * 
3196          *  This may be called multiple times for the same transaction.
3197          * 
3198          *  An external signer implementation should check that the commitment has not been revoked.
3199          * 
3200          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3201          *  signature and should be retried later. Once the signer is ready to provide a signature after
3202          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3203          *  monitor.
3204          * 
3205          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3206          */
3207         inline LDK::CResult_ECDSASignatureNoneZ sign_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
3208         /**
3209          *  Create a signature for the given input in a transaction spending an HTLC transaction output
3210          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
3211          * 
3212          *  A justice transaction may claim multiple outputs at the same time if timelocks are
3213          *  similar, but only a signature for the input at index `input` should be signed for here.
3214          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
3215          *  to an upcoming timelock expiration.
3216          * 
3217          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3218          * 
3219          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
3220          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3221          *  not allow the spending of any funds by itself (you need our holder `revocation_secret` to do
3222          *  so).
3223          * 
3224          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3225          *  signature and should be retried later. Once the signer is ready to provide a signature after
3226          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3227          *  monitor.
3228          * 
3229          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3230          */
3231         inline LDK::CResult_ECDSASignatureNoneZ sign_justice_revoked_output(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]);
3232         /**
3233          *  Create a signature for the given input in a transaction spending a commitment transaction
3234          *  HTLC output when our counterparty broadcasts an old state.
3235          * 
3236          *  A justice transaction may claim multiple outputs at the same time if timelocks are
3237          *  similar, but only a signature for the input at index `input` should be signed for here.
3238          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
3239          *  to an upcoming timelock expiration.
3240          * 
3241          *  `amount` is the value of the output spent by this input, committed to in the BIP 143
3242          *  signature.
3243          * 
3244          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
3245          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3246          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
3247          *  so).
3248          * 
3249          *  `htlc` holds HTLC elements (hash, timelock), thus changing the format of the witness script
3250          *  (which is committed to in the BIP 143 signatures).
3251          * 
3252          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3253          *  signature and should be retried later. Once the signer is ready to provide a signature after
3254          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3255          *  monitor.
3256          * 
3257          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3258          */
3259         inline LDK::CResult_ECDSASignatureNoneZ 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);
3260         /**
3261          *  Computes the signature for a commitment transaction's HTLC output used as an input within
3262          *  `htlc_tx`, which spends the commitment transaction at index `input`. The signature returned
3263          *  must be be computed using [`EcdsaSighashType::All`].
3264          * 
3265          *  Note that this may be called for HTLCs in the penultimate commitment transaction if a
3266          *  [`ChannelMonitor`] [replica](https://github.com/lightningdevkit/rust-lightning/blob/main/GLOSSARY.md#monitor-replicas)
3267          *  broadcasts it before receiving the update for the latest commitment transaction.
3268          * 
3269          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3270          *  signature and should be retried later. Once the signer is ready to provide a signature after
3271          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3272          *  monitor.
3273          * 
3274          *  [`EcdsaSighashType::All`]: bitcoin::sighash::EcdsaSighashType::All
3275          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
3276          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3277          */
3278         inline LDK::CResult_ECDSASignatureNoneZ sign_holder_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, const struct LDKHTLCDescriptor *NONNULL_PTR htlc_descriptor);
3279         /**
3280          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
3281          *  transaction, either offered or received.
3282          * 
3283          *  Such a transaction may claim multiples offered outputs at same time if we know the
3284          *  preimage for each when we create it, but only the input at index `input` should be
3285          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
3286          *  needed with regards to an upcoming timelock expiration.
3287          * 
3288          *  `witness_script` is either an offered or received script as defined in BOLT3 for HTLC
3289          *  outputs.
3290          * 
3291          *  `amount` is value of the output spent by this input, committed to in the BIP 143 signature.
3292          * 
3293          *  `per_commitment_point` is the dynamic point corresponding to the channel state
3294          *  detected onchain. It has been generated by our counterparty and is used to derive
3295          *  channel state keys, which are then included in the witness script and committed to in the
3296          *  BIP 143 signature.
3297          * 
3298          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3299          *  signature and should be retried later. Once the signer is ready to provide a signature after
3300          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3301          *  monitor.
3302          * 
3303          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3304          */
3305         inline LDK::CResult_ECDSASignatureNoneZ 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);
3306         /**
3307          *  Create a signature for a (proposed) closing transaction.
3308          * 
3309          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
3310          *  chosen to forgo their output as dust.
3311          */
3312         inline LDK::CResult_ECDSASignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
3313         /**
3314          *  Computes the signature for a commitment transaction's anchor output used as an
3315          *  input within `anchor_tx`, which spends the commitment transaction, at index `input`.
3316          * 
3317          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3318          *  signature and should be retried later. Once the signer is ready to provide a signature after
3319          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3320          *  monitor.
3321          * 
3322          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3323          */
3324         inline LDK::CResult_ECDSASignatureNoneZ sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input);
3325         /**
3326          *  Signs a channel announcement message with our funding key proving it comes from one of the
3327          *  channel participants.
3328          * 
3329          *  Channel announcements also require a signature from each node's network key. Our node
3330          *  signature is computed through [`NodeSigner::sign_gossip_message`].
3331          * 
3332          *  Note that if this fails or is rejected, the channel will not be publicly announced and
3333          *  our counterparty may (though likely will not) close the channel on us for violating the
3334          *  protocol.
3335          * 
3336          *  [`NodeSigner::sign_gossip_message`]: crate::sign::NodeSigner::sign_gossip_message
3337          */
3338         inline LDK::CResult_ECDSASignatureNoneZ sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
3339 };
3340 class WriteableEcdsaChannelSigner {
3341 private:
3342         LDKWriteableEcdsaChannelSigner self;
3343 public:
3344         WriteableEcdsaChannelSigner(const WriteableEcdsaChannelSigner&) = delete;
3345         WriteableEcdsaChannelSigner(WriteableEcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); }
3346         WriteableEcdsaChannelSigner(LDKWriteableEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); }
3347         operator LDKWriteableEcdsaChannelSigner() && { LDKWriteableEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); return res; }
3348         ~WriteableEcdsaChannelSigner() { WriteableEcdsaChannelSigner_free(self); }
3349         WriteableEcdsaChannelSigner& operator=(WriteableEcdsaChannelSigner&& o) { WriteableEcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); return *this; }
3350         LDKWriteableEcdsaChannelSigner* operator &() { return &self; }
3351         LDKWriteableEcdsaChannelSigner* operator ->() { return &self; }
3352         const LDKWriteableEcdsaChannelSigner* operator &() const { return &self; }
3353         const LDKWriteableEcdsaChannelSigner* operator ->() const { return &self; }
3354 };
3355 class ChannelMonitorUpdate {
3356 private:
3357         LDKChannelMonitorUpdate self;
3358 public:
3359         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
3360         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
3361         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
3362         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
3363         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
3364         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
3365         LDKChannelMonitorUpdate* operator &() { return &self; }
3366         LDKChannelMonitorUpdate* operator ->() { return &self; }
3367         const LDKChannelMonitorUpdate* operator &() const { return &self; }
3368         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
3369 };
3370 class MonitorEvent {
3371 private:
3372         LDKMonitorEvent self;
3373 public:
3374         MonitorEvent(const MonitorEvent&) = delete;
3375         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
3376         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
3377         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
3378         ~MonitorEvent() { MonitorEvent_free(self); }
3379         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
3380         LDKMonitorEvent* operator &() { return &self; }
3381         LDKMonitorEvent* operator ->() { return &self; }
3382         const LDKMonitorEvent* operator &() const { return &self; }
3383         const LDKMonitorEvent* operator ->() const { return &self; }
3384 };
3385 class HTLCUpdate {
3386 private:
3387         LDKHTLCUpdate self;
3388 public:
3389         HTLCUpdate(const HTLCUpdate&) = delete;
3390         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
3391         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
3392         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
3393         ~HTLCUpdate() { HTLCUpdate_free(self); }
3394         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
3395         LDKHTLCUpdate* operator &() { return &self; }
3396         LDKHTLCUpdate* operator ->() { return &self; }
3397         const LDKHTLCUpdate* operator &() const { return &self; }
3398         const LDKHTLCUpdate* operator ->() const { return &self; }
3399 };
3400 class Balance {
3401 private:
3402         LDKBalance self;
3403 public:
3404         Balance(const Balance&) = delete;
3405         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
3406         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
3407         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
3408         ~Balance() { Balance_free(self); }
3409         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
3410         LDKBalance* operator &() { return &self; }
3411         LDKBalance* operator ->() { return &self; }
3412         const LDKBalance* operator &() const { return &self; }
3413         const LDKBalance* operator ->() const { return &self; }
3414 };
3415 class ChannelMonitor {
3416 private:
3417         LDKChannelMonitor self;
3418 public:
3419         ChannelMonitor(const ChannelMonitor&) = delete;
3420         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
3421         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
3422         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
3423         ~ChannelMonitor() { ChannelMonitor_free(self); }
3424         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
3425         LDKChannelMonitor* operator &() { return &self; }
3426         LDKChannelMonitor* operator ->() { return &self; }
3427         const LDKChannelMonitor* operator &() const { return &self; }
3428         const LDKChannelMonitor* operator ->() const { return &self; }
3429 };
3430 class ExpandedKey {
3431 private:
3432         LDKExpandedKey self;
3433 public:
3434         ExpandedKey(const ExpandedKey&) = delete;
3435         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
3436         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
3437         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
3438         ~ExpandedKey() { ExpandedKey_free(self); }
3439         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
3440         LDKExpandedKey* operator &() { return &self; }
3441         LDKExpandedKey* operator ->() { return &self; }
3442         const LDKExpandedKey* operator &() const { return &self; }
3443         const LDKExpandedKey* operator ->() const { return &self; }
3444 };
3445 class CustomMessageHandler {
3446 private:
3447         LDKCustomMessageHandler self;
3448 public:
3449         CustomMessageHandler(const CustomMessageHandler&) = delete;
3450         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
3451         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
3452         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
3453         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
3454         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
3455         LDKCustomMessageHandler* operator &() { return &self; }
3456         LDKCustomMessageHandler* operator ->() { return &self; }
3457         const LDKCustomMessageHandler* operator &() const { return &self; }
3458         const LDKCustomMessageHandler* operator ->() const { return &self; }
3459         /**
3460          *  Handles the given message sent from `sender_node_id`, possibly producing messages for
3461          *  [`CustomMessageHandler::get_and_clear_pending_msg`] to return and thus for [`PeerManager`]
3462          *  to send.
3463          */
3464         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
3465         /**
3466          *  Returns the list of pending messages that were generated by the handler, clearing the list
3467          *  in the process. Each message is paired with the node id of the intended recipient. If no
3468          *  connection to the node exists, then the message is simply not sent.
3469          */
3470         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
3471         /**
3472          *  Gets the node feature flags which this handler itself supports. All available handlers are
3473          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
3474          *  which are broadcasted in our [`NodeAnnouncement`] message.
3475          * 
3476          *  [`NodeAnnouncement`]: crate::ln::msgs::NodeAnnouncement
3477          */
3478         inline LDK::NodeFeatures provided_node_features();
3479         /**
3480          *  Gets the init feature flags which should be sent to the given peer. All available handlers
3481          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
3482          *  which are sent in our [`Init`] message.
3483          * 
3484          *  [`Init`]: crate::ln::msgs::Init
3485          */
3486         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
3487 };
3488 class IgnoringMessageHandler {
3489 private:
3490         LDKIgnoringMessageHandler self;
3491 public:
3492         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
3493         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
3494         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
3495         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
3496         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
3497         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
3498         LDKIgnoringMessageHandler* operator &() { return &self; }
3499         LDKIgnoringMessageHandler* operator ->() { return &self; }
3500         const LDKIgnoringMessageHandler* operator &() const { return &self; }
3501         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
3502 };
3503 class ErroringMessageHandler {
3504 private:
3505         LDKErroringMessageHandler self;
3506 public:
3507         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
3508         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
3509         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
3510         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
3511         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
3512         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
3513         LDKErroringMessageHandler* operator &() { return &self; }
3514         LDKErroringMessageHandler* operator ->() { return &self; }
3515         const LDKErroringMessageHandler* operator &() const { return &self; }
3516         const LDKErroringMessageHandler* operator ->() const { return &self; }
3517 };
3518 class MessageHandler {
3519 private:
3520         LDKMessageHandler self;
3521 public:
3522         MessageHandler(const MessageHandler&) = delete;
3523         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
3524         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
3525         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
3526         ~MessageHandler() { MessageHandler_free(self); }
3527         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
3528         LDKMessageHandler* operator &() { return &self; }
3529         LDKMessageHandler* operator ->() { return &self; }
3530         const LDKMessageHandler* operator &() const { return &self; }
3531         const LDKMessageHandler* operator ->() const { return &self; }
3532 };
3533 class SocketDescriptor {
3534 private:
3535         LDKSocketDescriptor self;
3536 public:
3537         SocketDescriptor(const SocketDescriptor&) = delete;
3538         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
3539         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
3540         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
3541         ~SocketDescriptor() { SocketDescriptor_free(self); }
3542         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
3543         LDKSocketDescriptor* operator &() { return &self; }
3544         LDKSocketDescriptor* operator ->() { return &self; }
3545         const LDKSocketDescriptor* operator &() const { return &self; }
3546         const LDKSocketDescriptor* operator ->() const { return &self; }
3547         /**
3548          *  Attempts to send some data from the given slice to the peer.
3549          * 
3550          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
3551          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
3552          *  called and further write attempts may occur until that time.
3553          * 
3554          *  If the returned size is smaller than `data.len()`, a
3555          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
3556          *  written. Additionally, until a `send_data` event completes fully, no further
3557          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
3558          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
3559          *  until then.
3560          * 
3561          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
3562          *  (indicating that read events should be paused to prevent DoS in the send buffer),
3563          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
3564          *  `resume_read` of false carries no meaning, and should not cause any action.
3565          */
3566         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
3567         /**
3568          *  Disconnect the socket pointed to by this SocketDescriptor.
3569          * 
3570          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
3571          *  call (doing so is a noop).
3572          */
3573         inline void disconnect_socket();
3574         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
3575         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
3576         /**
3577          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
3578          * This is used, for example, for inclusion of this object in a hash map.
3579          */
3580         inline uint64_t hash();
3581 };
3582 class PeerDetails {
3583 private:
3584         LDKPeerDetails self;
3585 public:
3586         PeerDetails(const PeerDetails&) = delete;
3587         PeerDetails(PeerDetails&& o) : self(o.self) { memset(&o, 0, sizeof(PeerDetails)); }
3588         PeerDetails(LDKPeerDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerDetails)); }
3589         operator LDKPeerDetails() && { LDKPeerDetails res = self; memset(&self, 0, sizeof(LDKPeerDetails)); return res; }
3590         ~PeerDetails() { PeerDetails_free(self); }
3591         PeerDetails& operator=(PeerDetails&& o) { PeerDetails_free(self); self = o.self; memset(&o, 0, sizeof(PeerDetails)); return *this; }
3592         LDKPeerDetails* operator &() { return &self; }
3593         LDKPeerDetails* operator ->() { return &self; }
3594         const LDKPeerDetails* operator &() const { return &self; }
3595         const LDKPeerDetails* operator ->() const { return &self; }
3596 };
3597 class PeerHandleError {
3598 private:
3599         LDKPeerHandleError self;
3600 public:
3601         PeerHandleError(const PeerHandleError&) = delete;
3602         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
3603         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
3604         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
3605         ~PeerHandleError() { PeerHandleError_free(self); }
3606         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
3607         LDKPeerHandleError* operator &() { return &self; }
3608         LDKPeerHandleError* operator ->() { return &self; }
3609         const LDKPeerHandleError* operator &() const { return &self; }
3610         const LDKPeerHandleError* operator ->() const { return &self; }
3611 };
3612 class PeerManager {
3613 private:
3614         LDKPeerManager self;
3615 public:
3616         PeerManager(const PeerManager&) = delete;
3617         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
3618         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
3619         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
3620         ~PeerManager() { PeerManager_free(self); }
3621         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
3622         LDKPeerManager* operator &() { return &self; }
3623         LDKPeerManager* operator ->() { return &self; }
3624         const LDKPeerManager* operator &() const { return &self; }
3625         const LDKPeerManager* operator ->() const { return &self; }
3626 };
3627 class GraphSyncError {
3628 private:
3629         LDKGraphSyncError self;
3630 public:
3631         GraphSyncError(const GraphSyncError&) = delete;
3632         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
3633         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
3634         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
3635         ~GraphSyncError() { GraphSyncError_free(self); }
3636         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
3637         LDKGraphSyncError* operator &() { return &self; }
3638         LDKGraphSyncError* operator ->() { return &self; }
3639         const LDKGraphSyncError* operator &() const { return &self; }
3640         const LDKGraphSyncError* operator ->() const { return &self; }
3641 };
3642 class RapidGossipSync {
3643 private:
3644         LDKRapidGossipSync self;
3645 public:
3646         RapidGossipSync(const RapidGossipSync&) = delete;
3647         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
3648         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
3649         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
3650         ~RapidGossipSync() { RapidGossipSync_free(self); }
3651         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
3652         LDKRapidGossipSync* operator &() { return &self; }
3653         LDKRapidGossipSync* operator ->() { return &self; }
3654         const LDKRapidGossipSync* operator &() const { return &self; }
3655         const LDKRapidGossipSync* operator ->() const { return &self; }
3656 };
3657 class KVStore {
3658 private:
3659         LDKKVStore self;
3660 public:
3661         KVStore(const KVStore&) = delete;
3662         KVStore(KVStore&& o) : self(o.self) { memset(&o, 0, sizeof(KVStore)); }
3663         KVStore(LDKKVStore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKVStore)); }
3664         operator LDKKVStore() && { LDKKVStore res = self; memset(&self, 0, sizeof(LDKKVStore)); return res; }
3665         ~KVStore() { KVStore_free(self); }
3666         KVStore& operator=(KVStore&& o) { KVStore_free(self); self = o.self; memset(&o, 0, sizeof(KVStore)); return *this; }
3667         LDKKVStore* operator &() { return &self; }
3668         LDKKVStore* operator ->() { return &self; }
3669         const LDKKVStore* operator &() const { return &self; }
3670         const LDKKVStore* operator ->() const { return &self; }
3671         /**
3672          *  Returns the data stored for the given `primary_namespace`, `secondary_namespace`, and
3673          *  `key`.
3674          * 
3675          *  Returns an [`ErrorKind::NotFound`] if the given `key` could not be found in the given
3676          *  `primary_namespace` and `secondary_namespace`.
3677          * 
3678          *  [`ErrorKind::NotFound`]: io::ErrorKind::NotFound
3679          */
3680         inline LDK::CResult_CVec_u8ZIOErrorZ read(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key);
3681         /**
3682          *  Persists the given data under the given `key`.
3683          * 
3684          *  Will create the given `primary_namespace` and `secondary_namespace` if not already present
3685          *  in the store.
3686          */
3687         inline LDK::CResult_NoneIOErrorZ write(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key, struct LDKu8slice buf);
3688         /**
3689          *  Removes any data that had previously been persisted under the given `key`.
3690          * 
3691          *  If the `lazy` flag is set to `true`, the backend implementation might choose to lazily
3692          *  remove the given `key` at some point in time after the method returns, e.g., as part of an
3693          *  eventual batch deletion of multiple keys. As a consequence, subsequent calls to
3694          *  [`KVStore::list`] might include the removed key until the changes are actually persisted.
3695          * 
3696          *  Note that while setting the `lazy` flag reduces the I/O burden of multiple subsequent
3697          *  `remove` calls, it also influences the atomicity guarantees as lazy `remove`s could
3698          *  potentially get lost on crash after the method returns. Therefore, this flag should only be
3699          *  set for `remove` operations that can be safely replayed at a later time.
3700          * 
3701          *  Returns successfully if no data will be stored for the given `primary_namespace`,
3702          *  `secondary_namespace`, and `key`, independently of whether it was present before its
3703          *  invokation or not.
3704          */
3705         inline LDK::CResult_NoneIOErrorZ remove(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key, bool lazy);
3706         /**
3707          *  Returns a list of keys that are stored under the given `secondary_namespace` in
3708          *  `primary_namespace`.
3709          * 
3710          *  Returns the keys in arbitrary order, so users requiring a particular order need to sort the
3711          *  returned keys. Returns an empty list if `primary_namespace` or `secondary_namespace` is unknown.
3712          */
3713         inline LDK::CResult_CVec_StrZIOErrorZ list(struct LDKStr primary_namespace, struct LDKStr secondary_namespace);
3714 };
3715 class Persister {
3716 private:
3717         LDKPersister self;
3718 public:
3719         Persister(const Persister&) = delete;
3720         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
3721         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
3722         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
3723         ~Persister() { Persister_free(self); }
3724         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
3725         LDKPersister* operator &() { return &self; }
3726         LDKPersister* operator ->() { return &self; }
3727         const LDKPersister* operator &() const { return &self; }
3728         const LDKPersister* operator ->() const { return &self; }
3729         /**
3730          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
3731          * 
3732          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3733          */
3734         inline LDK::CResult_NoneIOErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
3735         /**
3736          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
3737          */
3738         inline LDK::CResult_NoneIOErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
3739         /**
3740          *  Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
3741          */
3742         inline LDK::CResult_NoneIOErrorZ persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer);
3743 };
3744 class MonitorUpdatingPersister {
3745 private:
3746         LDKMonitorUpdatingPersister self;
3747 public:
3748         MonitorUpdatingPersister(const MonitorUpdatingPersister&) = delete;
3749         MonitorUpdatingPersister(MonitorUpdatingPersister&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdatingPersister)); }
3750         MonitorUpdatingPersister(LDKMonitorUpdatingPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdatingPersister)); }
3751         operator LDKMonitorUpdatingPersister() && { LDKMonitorUpdatingPersister res = self; memset(&self, 0, sizeof(LDKMonitorUpdatingPersister)); return res; }
3752         ~MonitorUpdatingPersister() { MonitorUpdatingPersister_free(self); }
3753         MonitorUpdatingPersister& operator=(MonitorUpdatingPersister&& o) { MonitorUpdatingPersister_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdatingPersister)); return *this; }
3754         LDKMonitorUpdatingPersister* operator &() { return &self; }
3755         LDKMonitorUpdatingPersister* operator ->() { return &self; }
3756         const LDKMonitorUpdatingPersister* operator &() const { return &self; }
3757         const LDKMonitorUpdatingPersister* operator ->() const { return &self; }
3758 };
3759 class InvoiceRequestWithExplicitPayerIdBuilder {
3760 private:
3761         LDKInvoiceRequestWithExplicitPayerIdBuilder self;
3762 public:
3763         InvoiceRequestWithExplicitPayerIdBuilder(const InvoiceRequestWithExplicitPayerIdBuilder&) = delete;
3764         InvoiceRequestWithExplicitPayerIdBuilder(InvoiceRequestWithExplicitPayerIdBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestWithExplicitPayerIdBuilder)); }
3765         InvoiceRequestWithExplicitPayerIdBuilder(LDKInvoiceRequestWithExplicitPayerIdBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestWithExplicitPayerIdBuilder)); }
3766         operator LDKInvoiceRequestWithExplicitPayerIdBuilder() && { LDKInvoiceRequestWithExplicitPayerIdBuilder res = self; memset(&self, 0, sizeof(LDKInvoiceRequestWithExplicitPayerIdBuilder)); return res; }
3767         ~InvoiceRequestWithExplicitPayerIdBuilder() { InvoiceRequestWithExplicitPayerIdBuilder_free(self); }
3768         InvoiceRequestWithExplicitPayerIdBuilder& operator=(InvoiceRequestWithExplicitPayerIdBuilder&& o) { InvoiceRequestWithExplicitPayerIdBuilder_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestWithExplicitPayerIdBuilder)); return *this; }
3769         LDKInvoiceRequestWithExplicitPayerIdBuilder* operator &() { return &self; }
3770         LDKInvoiceRequestWithExplicitPayerIdBuilder* operator ->() { return &self; }
3771         const LDKInvoiceRequestWithExplicitPayerIdBuilder* operator &() const { return &self; }
3772         const LDKInvoiceRequestWithExplicitPayerIdBuilder* operator ->() const { return &self; }
3773 };
3774 class InvoiceRequestWithDerivedPayerIdBuilder {
3775 private:
3776         LDKInvoiceRequestWithDerivedPayerIdBuilder self;
3777 public:
3778         InvoiceRequestWithDerivedPayerIdBuilder(const InvoiceRequestWithDerivedPayerIdBuilder&) = delete;
3779         InvoiceRequestWithDerivedPayerIdBuilder(InvoiceRequestWithDerivedPayerIdBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestWithDerivedPayerIdBuilder)); }
3780         InvoiceRequestWithDerivedPayerIdBuilder(LDKInvoiceRequestWithDerivedPayerIdBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestWithDerivedPayerIdBuilder)); }
3781         operator LDKInvoiceRequestWithDerivedPayerIdBuilder() && { LDKInvoiceRequestWithDerivedPayerIdBuilder res = self; memset(&self, 0, sizeof(LDKInvoiceRequestWithDerivedPayerIdBuilder)); return res; }
3782         ~InvoiceRequestWithDerivedPayerIdBuilder() { InvoiceRequestWithDerivedPayerIdBuilder_free(self); }
3783         InvoiceRequestWithDerivedPayerIdBuilder& operator=(InvoiceRequestWithDerivedPayerIdBuilder&& o) { InvoiceRequestWithDerivedPayerIdBuilder_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestWithDerivedPayerIdBuilder)); return *this; }
3784         LDKInvoiceRequestWithDerivedPayerIdBuilder* operator &() { return &self; }
3785         LDKInvoiceRequestWithDerivedPayerIdBuilder* operator ->() { return &self; }
3786         const LDKInvoiceRequestWithDerivedPayerIdBuilder* operator &() const { return &self; }
3787         const LDKInvoiceRequestWithDerivedPayerIdBuilder* operator ->() const { return &self; }
3788 };
3789 class UnsignedInvoiceRequest {
3790 private:
3791         LDKUnsignedInvoiceRequest self;
3792 public:
3793         UnsignedInvoiceRequest(const UnsignedInvoiceRequest&) = delete;
3794         UnsignedInvoiceRequest(UnsignedInvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedInvoiceRequest)); }
3795         UnsignedInvoiceRequest(LDKUnsignedInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedInvoiceRequest)); }
3796         operator LDKUnsignedInvoiceRequest() && { LDKUnsignedInvoiceRequest res = self; memset(&self, 0, sizeof(LDKUnsignedInvoiceRequest)); return res; }
3797         ~UnsignedInvoiceRequest() { UnsignedInvoiceRequest_free(self); }
3798         UnsignedInvoiceRequest& operator=(UnsignedInvoiceRequest&& o) { UnsignedInvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedInvoiceRequest)); return *this; }
3799         LDKUnsignedInvoiceRequest* operator &() { return &self; }
3800         LDKUnsignedInvoiceRequest* operator ->() { return &self; }
3801         const LDKUnsignedInvoiceRequest* operator &() const { return &self; }
3802         const LDKUnsignedInvoiceRequest* operator ->() const { return &self; }
3803 };
3804 class SignInvoiceRequestFn {
3805 private:
3806         LDKSignInvoiceRequestFn self;
3807 public:
3808         SignInvoiceRequestFn(const SignInvoiceRequestFn&) = delete;
3809         SignInvoiceRequestFn(SignInvoiceRequestFn&& o) : self(o.self) { memset(&o, 0, sizeof(SignInvoiceRequestFn)); }
3810         SignInvoiceRequestFn(LDKSignInvoiceRequestFn&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignInvoiceRequestFn)); }
3811         operator LDKSignInvoiceRequestFn() && { LDKSignInvoiceRequestFn res = self; memset(&self, 0, sizeof(LDKSignInvoiceRequestFn)); return res; }
3812         ~SignInvoiceRequestFn() { SignInvoiceRequestFn_free(self); }
3813         SignInvoiceRequestFn& operator=(SignInvoiceRequestFn&& o) { SignInvoiceRequestFn_free(self); self = o.self; memset(&o, 0, sizeof(SignInvoiceRequestFn)); return *this; }
3814         LDKSignInvoiceRequestFn* operator &() { return &self; }
3815         LDKSignInvoiceRequestFn* operator ->() { return &self; }
3816         const LDKSignInvoiceRequestFn* operator &() const { return &self; }
3817         const LDKSignInvoiceRequestFn* operator ->() const { return &self; }
3818         /**
3819          *  Signs a [`TaggedHash`] computed over the merkle root of `message`'s TLV stream.
3820          */
3821         inline LDK::CResult_SchnorrSignatureNoneZ sign_invoice_request(const struct LDKUnsignedInvoiceRequest *NONNULL_PTR message);
3822 };
3823 class InvoiceRequest {
3824 private:
3825         LDKInvoiceRequest self;
3826 public:
3827         InvoiceRequest(const InvoiceRequest&) = delete;
3828         InvoiceRequest(InvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequest)); }
3829         InvoiceRequest(LDKInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequest)); }
3830         operator LDKInvoiceRequest() && { LDKInvoiceRequest res = self; memset(&self, 0, sizeof(LDKInvoiceRequest)); return res; }
3831         ~InvoiceRequest() { InvoiceRequest_free(self); }
3832         InvoiceRequest& operator=(InvoiceRequest&& o) { InvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequest)); return *this; }
3833         LDKInvoiceRequest* operator &() { return &self; }
3834         LDKInvoiceRequest* operator ->() { return &self; }
3835         const LDKInvoiceRequest* operator &() const { return &self; }
3836         const LDKInvoiceRequest* operator ->() const { return &self; }
3837 };
3838 class VerifiedInvoiceRequest {
3839 private:
3840         LDKVerifiedInvoiceRequest self;
3841 public:
3842         VerifiedInvoiceRequest(const VerifiedInvoiceRequest&) = delete;
3843         VerifiedInvoiceRequest(VerifiedInvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(VerifiedInvoiceRequest)); }
3844         VerifiedInvoiceRequest(LDKVerifiedInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKVerifiedInvoiceRequest)); }
3845         operator LDKVerifiedInvoiceRequest() && { LDKVerifiedInvoiceRequest res = self; memset(&self, 0, sizeof(LDKVerifiedInvoiceRequest)); return res; }
3846         ~VerifiedInvoiceRequest() { VerifiedInvoiceRequest_free(self); }
3847         VerifiedInvoiceRequest& operator=(VerifiedInvoiceRequest&& o) { VerifiedInvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(VerifiedInvoiceRequest)); return *this; }
3848         LDKVerifiedInvoiceRequest* operator &() { return &self; }
3849         LDKVerifiedInvoiceRequest* operator ->() { return &self; }
3850         const LDKVerifiedInvoiceRequest* operator &() const { return &self; }
3851         const LDKVerifiedInvoiceRequest* operator ->() const { return &self; }
3852 };
3853 class InvoiceRequestFields {
3854 private:
3855         LDKInvoiceRequestFields self;
3856 public:
3857         InvoiceRequestFields(const InvoiceRequestFields&) = delete;
3858         InvoiceRequestFields(InvoiceRequestFields&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestFields)); }
3859         InvoiceRequestFields(LDKInvoiceRequestFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestFields)); }
3860         operator LDKInvoiceRequestFields() && { LDKInvoiceRequestFields res = self; memset(&self, 0, sizeof(LDKInvoiceRequestFields)); return res; }
3861         ~InvoiceRequestFields() { InvoiceRequestFields_free(self); }
3862         InvoiceRequestFields& operator=(InvoiceRequestFields&& o) { InvoiceRequestFields_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestFields)); return *this; }
3863         LDKInvoiceRequestFields* operator &() { return &self; }
3864         LDKInvoiceRequestFields* operator ->() { return &self; }
3865         const LDKInvoiceRequestFields* operator &() const { return &self; }
3866         const LDKInvoiceRequestFields* operator ->() const { return &self; }
3867 };
3868 class DecodeError {
3869 private:
3870         LDKDecodeError self;
3871 public:
3872         DecodeError(const DecodeError&) = delete;
3873         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
3874         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
3875         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
3876         ~DecodeError() { DecodeError_free(self); }
3877         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
3878         LDKDecodeError* operator &() { return &self; }
3879         LDKDecodeError* operator ->() { return &self; }
3880         const LDKDecodeError* operator &() const { return &self; }
3881         const LDKDecodeError* operator ->() const { return &self; }
3882 };
3883 class Init {
3884 private:
3885         LDKInit self;
3886 public:
3887         Init(const Init&) = delete;
3888         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
3889         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
3890         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
3891         ~Init() { Init_free(self); }
3892         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
3893         LDKInit* operator &() { return &self; }
3894         LDKInit* operator ->() { return &self; }
3895         const LDKInit* operator &() const { return &self; }
3896         const LDKInit* operator ->() const { return &self; }
3897 };
3898 class ErrorMessage {
3899 private:
3900         LDKErrorMessage self;
3901 public:
3902         ErrorMessage(const ErrorMessage&) = delete;
3903         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
3904         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
3905         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
3906         ~ErrorMessage() { ErrorMessage_free(self); }
3907         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
3908         LDKErrorMessage* operator &() { return &self; }
3909         LDKErrorMessage* operator ->() { return &self; }
3910         const LDKErrorMessage* operator &() const { return &self; }
3911         const LDKErrorMessage* operator ->() const { return &self; }
3912 };
3913 class WarningMessage {
3914 private:
3915         LDKWarningMessage self;
3916 public:
3917         WarningMessage(const WarningMessage&) = delete;
3918         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3919         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3920         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3921         ~WarningMessage() { WarningMessage_free(self); }
3922         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3923         LDKWarningMessage* operator &() { return &self; }
3924         LDKWarningMessage* operator ->() { return &self; }
3925         const LDKWarningMessage* operator &() const { return &self; }
3926         const LDKWarningMessage* operator ->() const { return &self; }
3927 };
3928 class Ping {
3929 private:
3930         LDKPing self;
3931 public:
3932         Ping(const Ping&) = delete;
3933         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3934         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3935         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3936         ~Ping() { Ping_free(self); }
3937         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3938         LDKPing* operator &() { return &self; }
3939         LDKPing* operator ->() { return &self; }
3940         const LDKPing* operator &() const { return &self; }
3941         const LDKPing* operator ->() const { return &self; }
3942 };
3943 class Pong {
3944 private:
3945         LDKPong self;
3946 public:
3947         Pong(const Pong&) = delete;
3948         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3949         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3950         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3951         ~Pong() { Pong_free(self); }
3952         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3953         LDKPong* operator &() { return &self; }
3954         LDKPong* operator ->() { return &self; }
3955         const LDKPong* operator &() const { return &self; }
3956         const LDKPong* operator ->() const { return &self; }
3957 };
3958 class CommonOpenChannelFields {
3959 private:
3960         LDKCommonOpenChannelFields self;
3961 public:
3962         CommonOpenChannelFields(const CommonOpenChannelFields&) = delete;
3963         CommonOpenChannelFields(CommonOpenChannelFields&& o) : self(o.self) { memset(&o, 0, sizeof(CommonOpenChannelFields)); }
3964         CommonOpenChannelFields(LDKCommonOpenChannelFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommonOpenChannelFields)); }
3965         operator LDKCommonOpenChannelFields() && { LDKCommonOpenChannelFields res = self; memset(&self, 0, sizeof(LDKCommonOpenChannelFields)); return res; }
3966         ~CommonOpenChannelFields() { CommonOpenChannelFields_free(self); }
3967         CommonOpenChannelFields& operator=(CommonOpenChannelFields&& o) { CommonOpenChannelFields_free(self); self = o.self; memset(&o, 0, sizeof(CommonOpenChannelFields)); return *this; }
3968         LDKCommonOpenChannelFields* operator &() { return &self; }
3969         LDKCommonOpenChannelFields* operator ->() { return &self; }
3970         const LDKCommonOpenChannelFields* operator &() const { return &self; }
3971         const LDKCommonOpenChannelFields* operator ->() const { return &self; }
3972 };
3973 class OpenChannel {
3974 private:
3975         LDKOpenChannel self;
3976 public:
3977         OpenChannel(const OpenChannel&) = delete;
3978         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3979         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3980         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3981         ~OpenChannel() { OpenChannel_free(self); }
3982         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3983         LDKOpenChannel* operator &() { return &self; }
3984         LDKOpenChannel* operator ->() { return &self; }
3985         const LDKOpenChannel* operator &() const { return &self; }
3986         const LDKOpenChannel* operator ->() const { return &self; }
3987 };
3988 class OpenChannelV2 {
3989 private:
3990         LDKOpenChannelV2 self;
3991 public:
3992         OpenChannelV2(const OpenChannelV2&) = delete;
3993         OpenChannelV2(OpenChannelV2&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannelV2)); }
3994         OpenChannelV2(LDKOpenChannelV2&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannelV2)); }
3995         operator LDKOpenChannelV2() && { LDKOpenChannelV2 res = self; memset(&self, 0, sizeof(LDKOpenChannelV2)); return res; }
3996         ~OpenChannelV2() { OpenChannelV2_free(self); }
3997         OpenChannelV2& operator=(OpenChannelV2&& o) { OpenChannelV2_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannelV2)); return *this; }
3998         LDKOpenChannelV2* operator &() { return &self; }
3999         LDKOpenChannelV2* operator ->() { return &self; }
4000         const LDKOpenChannelV2* operator &() const { return &self; }
4001         const LDKOpenChannelV2* operator ->() const { return &self; }
4002 };
4003 class CommonAcceptChannelFields {
4004 private:
4005         LDKCommonAcceptChannelFields self;
4006 public:
4007         CommonAcceptChannelFields(const CommonAcceptChannelFields&) = delete;
4008         CommonAcceptChannelFields(CommonAcceptChannelFields&& o) : self(o.self) { memset(&o, 0, sizeof(CommonAcceptChannelFields)); }
4009         CommonAcceptChannelFields(LDKCommonAcceptChannelFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommonAcceptChannelFields)); }
4010         operator LDKCommonAcceptChannelFields() && { LDKCommonAcceptChannelFields res = self; memset(&self, 0, sizeof(LDKCommonAcceptChannelFields)); return res; }
4011         ~CommonAcceptChannelFields() { CommonAcceptChannelFields_free(self); }
4012         CommonAcceptChannelFields& operator=(CommonAcceptChannelFields&& o) { CommonAcceptChannelFields_free(self); self = o.self; memset(&o, 0, sizeof(CommonAcceptChannelFields)); return *this; }
4013         LDKCommonAcceptChannelFields* operator &() { return &self; }
4014         LDKCommonAcceptChannelFields* operator ->() { return &self; }
4015         const LDKCommonAcceptChannelFields* operator &() const { return &self; }
4016         const LDKCommonAcceptChannelFields* operator ->() const { return &self; }
4017 };
4018 class AcceptChannel {
4019 private:
4020         LDKAcceptChannel self;
4021 public:
4022         AcceptChannel(const AcceptChannel&) = delete;
4023         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
4024         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
4025         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
4026         ~AcceptChannel() { AcceptChannel_free(self); }
4027         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
4028         LDKAcceptChannel* operator &() { return &self; }
4029         LDKAcceptChannel* operator ->() { return &self; }
4030         const LDKAcceptChannel* operator &() const { return &self; }
4031         const LDKAcceptChannel* operator ->() const { return &self; }
4032 };
4033 class AcceptChannelV2 {
4034 private:
4035         LDKAcceptChannelV2 self;
4036 public:
4037         AcceptChannelV2(const AcceptChannelV2&) = delete;
4038         AcceptChannelV2(AcceptChannelV2&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannelV2)); }
4039         AcceptChannelV2(LDKAcceptChannelV2&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannelV2)); }
4040         operator LDKAcceptChannelV2() && { LDKAcceptChannelV2 res = self; memset(&self, 0, sizeof(LDKAcceptChannelV2)); return res; }
4041         ~AcceptChannelV2() { AcceptChannelV2_free(self); }
4042         AcceptChannelV2& operator=(AcceptChannelV2&& o) { AcceptChannelV2_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannelV2)); return *this; }
4043         LDKAcceptChannelV2* operator &() { return &self; }
4044         LDKAcceptChannelV2* operator ->() { return &self; }
4045         const LDKAcceptChannelV2* operator &() const { return &self; }
4046         const LDKAcceptChannelV2* operator ->() const { return &self; }
4047 };
4048 class FundingCreated {
4049 private:
4050         LDKFundingCreated self;
4051 public:
4052         FundingCreated(const FundingCreated&) = delete;
4053         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
4054         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
4055         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
4056         ~FundingCreated() { FundingCreated_free(self); }
4057         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
4058         LDKFundingCreated* operator &() { return &self; }
4059         LDKFundingCreated* operator ->() { return &self; }
4060         const LDKFundingCreated* operator &() const { return &self; }
4061         const LDKFundingCreated* operator ->() const { return &self; }
4062 };
4063 class FundingSigned {
4064 private:
4065         LDKFundingSigned self;
4066 public:
4067         FundingSigned(const FundingSigned&) = delete;
4068         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
4069         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
4070         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
4071         ~FundingSigned() { FundingSigned_free(self); }
4072         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
4073         LDKFundingSigned* operator &() { return &self; }
4074         LDKFundingSigned* operator ->() { return &self; }
4075         const LDKFundingSigned* operator &() const { return &self; }
4076         const LDKFundingSigned* operator ->() const { return &self; }
4077 };
4078 class ChannelReady {
4079 private:
4080         LDKChannelReady self;
4081 public:
4082         ChannelReady(const ChannelReady&) = delete;
4083         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
4084         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
4085         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
4086         ~ChannelReady() { ChannelReady_free(self); }
4087         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
4088         LDKChannelReady* operator &() { return &self; }
4089         LDKChannelReady* operator ->() { return &self; }
4090         const LDKChannelReady* operator &() const { return &self; }
4091         const LDKChannelReady* operator ->() const { return &self; }
4092 };
4093 class Stfu {
4094 private:
4095         LDKStfu self;
4096 public:
4097         Stfu(const Stfu&) = delete;
4098         Stfu(Stfu&& o) : self(o.self) { memset(&o, 0, sizeof(Stfu)); }
4099         Stfu(LDKStfu&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStfu)); }
4100         operator LDKStfu() && { LDKStfu res = self; memset(&self, 0, sizeof(LDKStfu)); return res; }
4101         ~Stfu() { Stfu_free(self); }
4102         Stfu& operator=(Stfu&& o) { Stfu_free(self); self = o.self; memset(&o, 0, sizeof(Stfu)); return *this; }
4103         LDKStfu* operator &() { return &self; }
4104         LDKStfu* operator ->() { return &self; }
4105         const LDKStfu* operator &() const { return &self; }
4106         const LDKStfu* operator ->() const { return &self; }
4107 };
4108 class Splice {
4109 private:
4110         LDKSplice self;
4111 public:
4112         Splice(const Splice&) = delete;
4113         Splice(Splice&& o) : self(o.self) { memset(&o, 0, sizeof(Splice)); }
4114         Splice(LDKSplice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSplice)); }
4115         operator LDKSplice() && { LDKSplice res = self; memset(&self, 0, sizeof(LDKSplice)); return res; }
4116         ~Splice() { Splice_free(self); }
4117         Splice& operator=(Splice&& o) { Splice_free(self); self = o.self; memset(&o, 0, sizeof(Splice)); return *this; }
4118         LDKSplice* operator &() { return &self; }
4119         LDKSplice* operator ->() { return &self; }
4120         const LDKSplice* operator &() const { return &self; }
4121         const LDKSplice* operator ->() const { return &self; }
4122 };
4123 class SpliceAck {
4124 private:
4125         LDKSpliceAck self;
4126 public:
4127         SpliceAck(const SpliceAck&) = delete;
4128         SpliceAck(SpliceAck&& o) : self(o.self) { memset(&o, 0, sizeof(SpliceAck)); }
4129         SpliceAck(LDKSpliceAck&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpliceAck)); }
4130         operator LDKSpliceAck() && { LDKSpliceAck res = self; memset(&self, 0, sizeof(LDKSpliceAck)); return res; }
4131         ~SpliceAck() { SpliceAck_free(self); }
4132         SpliceAck& operator=(SpliceAck&& o) { SpliceAck_free(self); self = o.self; memset(&o, 0, sizeof(SpliceAck)); return *this; }
4133         LDKSpliceAck* operator &() { return &self; }
4134         LDKSpliceAck* operator ->() { return &self; }
4135         const LDKSpliceAck* operator &() const { return &self; }
4136         const LDKSpliceAck* operator ->() const { return &self; }
4137 };
4138 class SpliceLocked {
4139 private:
4140         LDKSpliceLocked self;
4141 public:
4142         SpliceLocked(const SpliceLocked&) = delete;
4143         SpliceLocked(SpliceLocked&& o) : self(o.self) { memset(&o, 0, sizeof(SpliceLocked)); }
4144         SpliceLocked(LDKSpliceLocked&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpliceLocked)); }
4145         operator LDKSpliceLocked() && { LDKSpliceLocked res = self; memset(&self, 0, sizeof(LDKSpliceLocked)); return res; }
4146         ~SpliceLocked() { SpliceLocked_free(self); }
4147         SpliceLocked& operator=(SpliceLocked&& o) { SpliceLocked_free(self); self = o.self; memset(&o, 0, sizeof(SpliceLocked)); return *this; }
4148         LDKSpliceLocked* operator &() { return &self; }
4149         LDKSpliceLocked* operator ->() { return &self; }
4150         const LDKSpliceLocked* operator &() const { return &self; }
4151         const LDKSpliceLocked* operator ->() const { return &self; }
4152 };
4153 class TxAddInput {
4154 private:
4155         LDKTxAddInput self;
4156 public:
4157         TxAddInput(const TxAddInput&) = delete;
4158         TxAddInput(TxAddInput&& o) : self(o.self) { memset(&o, 0, sizeof(TxAddInput)); }
4159         TxAddInput(LDKTxAddInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAddInput)); }
4160         operator LDKTxAddInput() && { LDKTxAddInput res = self; memset(&self, 0, sizeof(LDKTxAddInput)); return res; }
4161         ~TxAddInput() { TxAddInput_free(self); }
4162         TxAddInput& operator=(TxAddInput&& o) { TxAddInput_free(self); self = o.self; memset(&o, 0, sizeof(TxAddInput)); return *this; }
4163         LDKTxAddInput* operator &() { return &self; }
4164         LDKTxAddInput* operator ->() { return &self; }
4165         const LDKTxAddInput* operator &() const { return &self; }
4166         const LDKTxAddInput* operator ->() const { return &self; }
4167 };
4168 class TxAddOutput {
4169 private:
4170         LDKTxAddOutput self;
4171 public:
4172         TxAddOutput(const TxAddOutput&) = delete;
4173         TxAddOutput(TxAddOutput&& o) : self(o.self) { memset(&o, 0, sizeof(TxAddOutput)); }
4174         TxAddOutput(LDKTxAddOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAddOutput)); }
4175         operator LDKTxAddOutput() && { LDKTxAddOutput res = self; memset(&self, 0, sizeof(LDKTxAddOutput)); return res; }
4176         ~TxAddOutput() { TxAddOutput_free(self); }
4177         TxAddOutput& operator=(TxAddOutput&& o) { TxAddOutput_free(self); self = o.self; memset(&o, 0, sizeof(TxAddOutput)); return *this; }
4178         LDKTxAddOutput* operator &() { return &self; }
4179         LDKTxAddOutput* operator ->() { return &self; }
4180         const LDKTxAddOutput* operator &() const { return &self; }
4181         const LDKTxAddOutput* operator ->() const { return &self; }
4182 };
4183 class TxRemoveInput {
4184 private:
4185         LDKTxRemoveInput self;
4186 public:
4187         TxRemoveInput(const TxRemoveInput&) = delete;
4188         TxRemoveInput(TxRemoveInput&& o) : self(o.self) { memset(&o, 0, sizeof(TxRemoveInput)); }
4189         TxRemoveInput(LDKTxRemoveInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxRemoveInput)); }
4190         operator LDKTxRemoveInput() && { LDKTxRemoveInput res = self; memset(&self, 0, sizeof(LDKTxRemoveInput)); return res; }
4191         ~TxRemoveInput() { TxRemoveInput_free(self); }
4192         TxRemoveInput& operator=(TxRemoveInput&& o) { TxRemoveInput_free(self); self = o.self; memset(&o, 0, sizeof(TxRemoveInput)); return *this; }
4193         LDKTxRemoveInput* operator &() { return &self; }
4194         LDKTxRemoveInput* operator ->() { return &self; }
4195         const LDKTxRemoveInput* operator &() const { return &self; }
4196         const LDKTxRemoveInput* operator ->() const { return &self; }
4197 };
4198 class TxRemoveOutput {
4199 private:
4200         LDKTxRemoveOutput self;
4201 public:
4202         TxRemoveOutput(const TxRemoveOutput&) = delete;
4203         TxRemoveOutput(TxRemoveOutput&& o) : self(o.self) { memset(&o, 0, sizeof(TxRemoveOutput)); }
4204         TxRemoveOutput(LDKTxRemoveOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxRemoveOutput)); }
4205         operator LDKTxRemoveOutput() && { LDKTxRemoveOutput res = self; memset(&self, 0, sizeof(LDKTxRemoveOutput)); return res; }
4206         ~TxRemoveOutput() { TxRemoveOutput_free(self); }
4207         TxRemoveOutput& operator=(TxRemoveOutput&& o) { TxRemoveOutput_free(self); self = o.self; memset(&o, 0, sizeof(TxRemoveOutput)); return *this; }
4208         LDKTxRemoveOutput* operator &() { return &self; }
4209         LDKTxRemoveOutput* operator ->() { return &self; }
4210         const LDKTxRemoveOutput* operator &() const { return &self; }
4211         const LDKTxRemoveOutput* operator ->() const { return &self; }
4212 };
4213 class TxComplete {
4214 private:
4215         LDKTxComplete self;
4216 public:
4217         TxComplete(const TxComplete&) = delete;
4218         TxComplete(TxComplete&& o) : self(o.self) { memset(&o, 0, sizeof(TxComplete)); }
4219         TxComplete(LDKTxComplete&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxComplete)); }
4220         operator LDKTxComplete() && { LDKTxComplete res = self; memset(&self, 0, sizeof(LDKTxComplete)); return res; }
4221         ~TxComplete() { TxComplete_free(self); }
4222         TxComplete& operator=(TxComplete&& o) { TxComplete_free(self); self = o.self; memset(&o, 0, sizeof(TxComplete)); return *this; }
4223         LDKTxComplete* operator &() { return &self; }
4224         LDKTxComplete* operator ->() { return &self; }
4225         const LDKTxComplete* operator &() const { return &self; }
4226         const LDKTxComplete* operator ->() const { return &self; }
4227 };
4228 class TxSignatures {
4229 private:
4230         LDKTxSignatures self;
4231 public:
4232         TxSignatures(const TxSignatures&) = delete;
4233         TxSignatures(TxSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(TxSignatures)); }
4234         TxSignatures(LDKTxSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxSignatures)); }
4235         operator LDKTxSignatures() && { LDKTxSignatures res = self; memset(&self, 0, sizeof(LDKTxSignatures)); return res; }
4236         ~TxSignatures() { TxSignatures_free(self); }
4237         TxSignatures& operator=(TxSignatures&& o) { TxSignatures_free(self); self = o.self; memset(&o, 0, sizeof(TxSignatures)); return *this; }
4238         LDKTxSignatures* operator &() { return &self; }
4239         LDKTxSignatures* operator ->() { return &self; }
4240         const LDKTxSignatures* operator &() const { return &self; }
4241         const LDKTxSignatures* operator ->() const { return &self; }
4242 };
4243 class TxInitRbf {
4244 private:
4245         LDKTxInitRbf self;
4246 public:
4247         TxInitRbf(const TxInitRbf&) = delete;
4248         TxInitRbf(TxInitRbf&& o) : self(o.self) { memset(&o, 0, sizeof(TxInitRbf)); }
4249         TxInitRbf(LDKTxInitRbf&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxInitRbf)); }
4250         operator LDKTxInitRbf() && { LDKTxInitRbf res = self; memset(&self, 0, sizeof(LDKTxInitRbf)); return res; }
4251         ~TxInitRbf() { TxInitRbf_free(self); }
4252         TxInitRbf& operator=(TxInitRbf&& o) { TxInitRbf_free(self); self = o.self; memset(&o, 0, sizeof(TxInitRbf)); return *this; }
4253         LDKTxInitRbf* operator &() { return &self; }
4254         LDKTxInitRbf* operator ->() { return &self; }
4255         const LDKTxInitRbf* operator &() const { return &self; }
4256         const LDKTxInitRbf* operator ->() const { return &self; }
4257 };
4258 class TxAckRbf {
4259 private:
4260         LDKTxAckRbf self;
4261 public:
4262         TxAckRbf(const TxAckRbf&) = delete;
4263         TxAckRbf(TxAckRbf&& o) : self(o.self) { memset(&o, 0, sizeof(TxAckRbf)); }
4264         TxAckRbf(LDKTxAckRbf&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAckRbf)); }
4265         operator LDKTxAckRbf() && { LDKTxAckRbf res = self; memset(&self, 0, sizeof(LDKTxAckRbf)); return res; }
4266         ~TxAckRbf() { TxAckRbf_free(self); }
4267         TxAckRbf& operator=(TxAckRbf&& o) { TxAckRbf_free(self); self = o.self; memset(&o, 0, sizeof(TxAckRbf)); return *this; }
4268         LDKTxAckRbf* operator &() { return &self; }
4269         LDKTxAckRbf* operator ->() { return &self; }
4270         const LDKTxAckRbf* operator &() const { return &self; }
4271         const LDKTxAckRbf* operator ->() const { return &self; }
4272 };
4273 class TxAbort {
4274 private:
4275         LDKTxAbort self;
4276 public:
4277         TxAbort(const TxAbort&) = delete;
4278         TxAbort(TxAbort&& o) : self(o.self) { memset(&o, 0, sizeof(TxAbort)); }
4279         TxAbort(LDKTxAbort&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAbort)); }
4280         operator LDKTxAbort() && { LDKTxAbort res = self; memset(&self, 0, sizeof(LDKTxAbort)); return res; }
4281         ~TxAbort() { TxAbort_free(self); }
4282         TxAbort& operator=(TxAbort&& o) { TxAbort_free(self); self = o.self; memset(&o, 0, sizeof(TxAbort)); return *this; }
4283         LDKTxAbort* operator &() { return &self; }
4284         LDKTxAbort* operator ->() { return &self; }
4285         const LDKTxAbort* operator &() const { return &self; }
4286         const LDKTxAbort* operator ->() const { return &self; }
4287 };
4288 class Shutdown {
4289 private:
4290         LDKShutdown self;
4291 public:
4292         Shutdown(const Shutdown&) = delete;
4293         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
4294         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
4295         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
4296         ~Shutdown() { Shutdown_free(self); }
4297         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
4298         LDKShutdown* operator &() { return &self; }
4299         LDKShutdown* operator ->() { return &self; }
4300         const LDKShutdown* operator &() const { return &self; }
4301         const LDKShutdown* operator ->() const { return &self; }
4302 };
4303 class ClosingSignedFeeRange {
4304 private:
4305         LDKClosingSignedFeeRange self;
4306 public:
4307         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
4308         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
4309         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
4310         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
4311         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
4312         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
4313         LDKClosingSignedFeeRange* operator &() { return &self; }
4314         LDKClosingSignedFeeRange* operator ->() { return &self; }
4315         const LDKClosingSignedFeeRange* operator &() const { return &self; }
4316         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
4317 };
4318 class ClosingSigned {
4319 private:
4320         LDKClosingSigned self;
4321 public:
4322         ClosingSigned(const ClosingSigned&) = delete;
4323         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
4324         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
4325         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
4326         ~ClosingSigned() { ClosingSigned_free(self); }
4327         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
4328         LDKClosingSigned* operator &() { return &self; }
4329         LDKClosingSigned* operator ->() { return &self; }
4330         const LDKClosingSigned* operator &() const { return &self; }
4331         const LDKClosingSigned* operator ->() const { return &self; }
4332 };
4333 class UpdateAddHTLC {
4334 private:
4335         LDKUpdateAddHTLC self;
4336 public:
4337         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
4338         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
4339         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
4340         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
4341         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
4342         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
4343         LDKUpdateAddHTLC* operator &() { return &self; }
4344         LDKUpdateAddHTLC* operator ->() { return &self; }
4345         const LDKUpdateAddHTLC* operator &() const { return &self; }
4346         const LDKUpdateAddHTLC* operator ->() const { return &self; }
4347 };
4348 class OnionMessage {
4349 private:
4350         LDKOnionMessage self;
4351 public:
4352         OnionMessage(const OnionMessage&) = delete;
4353         OnionMessage(OnionMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessage)); }
4354         OnionMessage(LDKOnionMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessage)); }
4355         operator LDKOnionMessage() && { LDKOnionMessage res = self; memset(&self, 0, sizeof(LDKOnionMessage)); return res; }
4356         ~OnionMessage() { OnionMessage_free(self); }
4357         OnionMessage& operator=(OnionMessage&& o) { OnionMessage_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessage)); return *this; }
4358         LDKOnionMessage* operator &() { return &self; }
4359         LDKOnionMessage* operator ->() { return &self; }
4360         const LDKOnionMessage* operator &() const { return &self; }
4361         const LDKOnionMessage* operator ->() const { return &self; }
4362 };
4363 class UpdateFulfillHTLC {
4364 private:
4365         LDKUpdateFulfillHTLC self;
4366 public:
4367         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
4368         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
4369         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
4370         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
4371         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
4372         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
4373         LDKUpdateFulfillHTLC* operator &() { return &self; }
4374         LDKUpdateFulfillHTLC* operator ->() { return &self; }
4375         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
4376         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
4377 };
4378 class UpdateFailHTLC {
4379 private:
4380         LDKUpdateFailHTLC self;
4381 public:
4382         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
4383         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
4384         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
4385         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
4386         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
4387         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
4388         LDKUpdateFailHTLC* operator &() { return &self; }
4389         LDKUpdateFailHTLC* operator ->() { return &self; }
4390         const LDKUpdateFailHTLC* operator &() const { return &self; }
4391         const LDKUpdateFailHTLC* operator ->() const { return &self; }
4392 };
4393 class UpdateFailMalformedHTLC {
4394 private:
4395         LDKUpdateFailMalformedHTLC self;
4396 public:
4397         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
4398         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
4399         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
4400         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
4401         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
4402         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
4403         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
4404         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
4405         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
4406         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
4407 };
4408 class CommitmentSigned {
4409 private:
4410         LDKCommitmentSigned self;
4411 public:
4412         CommitmentSigned(const CommitmentSigned&) = delete;
4413         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
4414         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
4415         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
4416         ~CommitmentSigned() { CommitmentSigned_free(self); }
4417         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
4418         LDKCommitmentSigned* operator &() { return &self; }
4419         LDKCommitmentSigned* operator ->() { return &self; }
4420         const LDKCommitmentSigned* operator &() const { return &self; }
4421         const LDKCommitmentSigned* operator ->() const { return &self; }
4422 };
4423 class RevokeAndACK {
4424 private:
4425         LDKRevokeAndACK self;
4426 public:
4427         RevokeAndACK(const RevokeAndACK&) = delete;
4428         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
4429         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
4430         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
4431         ~RevokeAndACK() { RevokeAndACK_free(self); }
4432         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
4433         LDKRevokeAndACK* operator &() { return &self; }
4434         LDKRevokeAndACK* operator ->() { return &self; }
4435         const LDKRevokeAndACK* operator &() const { return &self; }
4436         const LDKRevokeAndACK* operator ->() const { return &self; }
4437 };
4438 class UpdateFee {
4439 private:
4440         LDKUpdateFee self;
4441 public:
4442         UpdateFee(const UpdateFee&) = delete;
4443         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
4444         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
4445         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
4446         ~UpdateFee() { UpdateFee_free(self); }
4447         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
4448         LDKUpdateFee* operator &() { return &self; }
4449         LDKUpdateFee* operator ->() { return &self; }
4450         const LDKUpdateFee* operator &() const { return &self; }
4451         const LDKUpdateFee* operator ->() const { return &self; }
4452 };
4453 class ChannelReestablish {
4454 private:
4455         LDKChannelReestablish self;
4456 public:
4457         ChannelReestablish(const ChannelReestablish&) = delete;
4458         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
4459         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
4460         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
4461         ~ChannelReestablish() { ChannelReestablish_free(self); }
4462         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
4463         LDKChannelReestablish* operator &() { return &self; }
4464         LDKChannelReestablish* operator ->() { return &self; }
4465         const LDKChannelReestablish* operator &() const { return &self; }
4466         const LDKChannelReestablish* operator ->() const { return &self; }
4467 };
4468 class AnnouncementSignatures {
4469 private:
4470         LDKAnnouncementSignatures self;
4471 public:
4472         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
4473         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
4474         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
4475         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
4476         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
4477         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
4478         LDKAnnouncementSignatures* operator &() { return &self; }
4479         LDKAnnouncementSignatures* operator ->() { return &self; }
4480         const LDKAnnouncementSignatures* operator &() const { return &self; }
4481         const LDKAnnouncementSignatures* operator ->() const { return &self; }
4482 };
4483 class SocketAddress {
4484 private:
4485         LDKSocketAddress self;
4486 public:
4487         SocketAddress(const SocketAddress&) = delete;
4488         SocketAddress(SocketAddress&& o) : self(o.self) { memset(&o, 0, sizeof(SocketAddress)); }
4489         SocketAddress(LDKSocketAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketAddress)); }
4490         operator LDKSocketAddress() && { LDKSocketAddress res = self; memset(&self, 0, sizeof(LDKSocketAddress)); return res; }
4491         ~SocketAddress() { SocketAddress_free(self); }
4492         SocketAddress& operator=(SocketAddress&& o) { SocketAddress_free(self); self = o.self; memset(&o, 0, sizeof(SocketAddress)); return *this; }
4493         LDKSocketAddress* operator &() { return &self; }
4494         LDKSocketAddress* operator ->() { return &self; }
4495         const LDKSocketAddress* operator &() const { return &self; }
4496         const LDKSocketAddress* operator ->() const { return &self; }
4497 };
4498 class SocketAddressParseError {
4499 private:
4500         LDKSocketAddressParseError self;
4501 public:
4502         SocketAddressParseError(const SocketAddressParseError&) = delete;
4503         SocketAddressParseError(SocketAddressParseError&& o) : self(o.self) { memset(&o, 0, sizeof(SocketAddressParseError)); }
4504         SocketAddressParseError(LDKSocketAddressParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketAddressParseError)); }
4505         operator LDKSocketAddressParseError() && { LDKSocketAddressParseError res = self; memset(&self, 0, sizeof(LDKSocketAddressParseError)); return res; }
4506         SocketAddressParseError& operator=(SocketAddressParseError&& o) { self = o.self; memset(&o, 0, sizeof(SocketAddressParseError)); return *this; }
4507         LDKSocketAddressParseError* operator &() { return &self; }
4508         LDKSocketAddressParseError* operator ->() { return &self; }
4509         const LDKSocketAddressParseError* operator &() const { return &self; }
4510         const LDKSocketAddressParseError* operator ->() const { return &self; }
4511 };
4512 class UnsignedGossipMessage {
4513 private:
4514         LDKUnsignedGossipMessage self;
4515 public:
4516         UnsignedGossipMessage(const UnsignedGossipMessage&) = delete;
4517         UnsignedGossipMessage(UnsignedGossipMessage&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedGossipMessage)); }
4518         UnsignedGossipMessage(LDKUnsignedGossipMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedGossipMessage)); }
4519         operator LDKUnsignedGossipMessage() && { LDKUnsignedGossipMessage res = self; memset(&self, 0, sizeof(LDKUnsignedGossipMessage)); return res; }
4520         ~UnsignedGossipMessage() { UnsignedGossipMessage_free(self); }
4521         UnsignedGossipMessage& operator=(UnsignedGossipMessage&& o) { UnsignedGossipMessage_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedGossipMessage)); return *this; }
4522         LDKUnsignedGossipMessage* operator &() { return &self; }
4523         LDKUnsignedGossipMessage* operator ->() { return &self; }
4524         const LDKUnsignedGossipMessage* operator &() const { return &self; }
4525         const LDKUnsignedGossipMessage* operator ->() const { return &self; }
4526 };
4527 class UnsignedNodeAnnouncement {
4528 private:
4529         LDKUnsignedNodeAnnouncement self;
4530 public:
4531         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
4532         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
4533         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
4534         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
4535         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
4536         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
4537         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
4538         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
4539         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
4540         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
4541 };
4542 class NodeAnnouncement {
4543 private:
4544         LDKNodeAnnouncement self;
4545 public:
4546         NodeAnnouncement(const NodeAnnouncement&) = delete;
4547         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
4548         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
4549         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
4550         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
4551         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
4552         LDKNodeAnnouncement* operator &() { return &self; }
4553         LDKNodeAnnouncement* operator ->() { return &self; }
4554         const LDKNodeAnnouncement* operator &() const { return &self; }
4555         const LDKNodeAnnouncement* operator ->() const { return &self; }
4556 };
4557 class UnsignedChannelAnnouncement {
4558 private:
4559         LDKUnsignedChannelAnnouncement self;
4560 public:
4561         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
4562         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
4563         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
4564         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
4565         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
4566         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
4567         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
4568         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
4569         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
4570         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
4571 };
4572 class ChannelAnnouncement {
4573 private:
4574         LDKChannelAnnouncement self;
4575 public:
4576         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
4577         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
4578         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
4579         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
4580         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
4581         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
4582         LDKChannelAnnouncement* operator &() { return &self; }
4583         LDKChannelAnnouncement* operator ->() { return &self; }
4584         const LDKChannelAnnouncement* operator &() const { return &self; }
4585         const LDKChannelAnnouncement* operator ->() const { return &self; }
4586 };
4587 class UnsignedChannelUpdate {
4588 private:
4589         LDKUnsignedChannelUpdate self;
4590 public:
4591         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
4592         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
4593         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
4594         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
4595         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
4596         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
4597         LDKUnsignedChannelUpdate* operator &() { return &self; }
4598         LDKUnsignedChannelUpdate* operator ->() { return &self; }
4599         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
4600         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
4601 };
4602 class ChannelUpdate {
4603 private:
4604         LDKChannelUpdate self;
4605 public:
4606         ChannelUpdate(const ChannelUpdate&) = delete;
4607         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
4608         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
4609         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
4610         ~ChannelUpdate() { ChannelUpdate_free(self); }
4611         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
4612         LDKChannelUpdate* operator &() { return &self; }
4613         LDKChannelUpdate* operator ->() { return &self; }
4614         const LDKChannelUpdate* operator &() const { return &self; }
4615         const LDKChannelUpdate* operator ->() const { return &self; }
4616 };
4617 class QueryChannelRange {
4618 private:
4619         LDKQueryChannelRange self;
4620 public:
4621         QueryChannelRange(const QueryChannelRange&) = delete;
4622         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
4623         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
4624         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
4625         ~QueryChannelRange() { QueryChannelRange_free(self); }
4626         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
4627         LDKQueryChannelRange* operator &() { return &self; }
4628         LDKQueryChannelRange* operator ->() { return &self; }
4629         const LDKQueryChannelRange* operator &() const { return &self; }
4630         const LDKQueryChannelRange* operator ->() const { return &self; }
4631 };
4632 class ReplyChannelRange {
4633 private:
4634         LDKReplyChannelRange self;
4635 public:
4636         ReplyChannelRange(const ReplyChannelRange&) = delete;
4637         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
4638         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
4639         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
4640         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
4641         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
4642         LDKReplyChannelRange* operator &() { return &self; }
4643         LDKReplyChannelRange* operator ->() { return &self; }
4644         const LDKReplyChannelRange* operator &() const { return &self; }
4645         const LDKReplyChannelRange* operator ->() const { return &self; }
4646 };
4647 class QueryShortChannelIds {
4648 private:
4649         LDKQueryShortChannelIds self;
4650 public:
4651         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
4652         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
4653         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
4654         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
4655         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
4656         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
4657         LDKQueryShortChannelIds* operator &() { return &self; }
4658         LDKQueryShortChannelIds* operator ->() { return &self; }
4659         const LDKQueryShortChannelIds* operator &() const { return &self; }
4660         const LDKQueryShortChannelIds* operator ->() const { return &self; }
4661 };
4662 class ReplyShortChannelIdsEnd {
4663 private:
4664         LDKReplyShortChannelIdsEnd self;
4665 public:
4666         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
4667         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
4668         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
4669         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
4670         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
4671         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
4672         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
4673         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
4674         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
4675         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
4676 };
4677 class GossipTimestampFilter {
4678 private:
4679         LDKGossipTimestampFilter self;
4680 public:
4681         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
4682         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
4683         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
4684         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
4685         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
4686         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
4687         LDKGossipTimestampFilter* operator &() { return &self; }
4688         LDKGossipTimestampFilter* operator ->() { return &self; }
4689         const LDKGossipTimestampFilter* operator &() const { return &self; }
4690         const LDKGossipTimestampFilter* operator ->() const { return &self; }
4691 };
4692 class ErrorAction {
4693 private:
4694         LDKErrorAction self;
4695 public:
4696         ErrorAction(const ErrorAction&) = delete;
4697         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
4698         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
4699         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
4700         ~ErrorAction() { ErrorAction_free(self); }
4701         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
4702         LDKErrorAction* operator &() { return &self; }
4703         LDKErrorAction* operator ->() { return &self; }
4704         const LDKErrorAction* operator &() const { return &self; }
4705         const LDKErrorAction* operator ->() const { return &self; }
4706 };
4707 class LightningError {
4708 private:
4709         LDKLightningError self;
4710 public:
4711         LightningError(const LightningError&) = delete;
4712         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
4713         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
4714         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
4715         ~LightningError() { LightningError_free(self); }
4716         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
4717         LDKLightningError* operator &() { return &self; }
4718         LDKLightningError* operator ->() { return &self; }
4719         const LDKLightningError* operator &() const { return &self; }
4720         const LDKLightningError* operator ->() const { return &self; }
4721 };
4722 class CommitmentUpdate {
4723 private:
4724         LDKCommitmentUpdate self;
4725 public:
4726         CommitmentUpdate(const CommitmentUpdate&) = delete;
4727         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
4728         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
4729         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
4730         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
4731         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
4732         LDKCommitmentUpdate* operator &() { return &self; }
4733         LDKCommitmentUpdate* operator ->() { return &self; }
4734         const LDKCommitmentUpdate* operator &() const { return &self; }
4735         const LDKCommitmentUpdate* operator ->() const { return &self; }
4736 };
4737 class ChannelMessageHandler {
4738 private:
4739         LDKChannelMessageHandler self;
4740 public:
4741         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
4742         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
4743         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
4744         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
4745         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
4746         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
4747         LDKChannelMessageHandler* operator &() { return &self; }
4748         LDKChannelMessageHandler* operator ->() { return &self; }
4749         const LDKChannelMessageHandler* operator &() const { return &self; }
4750         const LDKChannelMessageHandler* operator ->() const { return &self; }
4751         /**
4752          *  Handle an incoming `open_channel` message from the given peer.
4753          */
4754         inline void handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg);
4755         /**
4756          *  Handle an incoming `open_channel2` message from the given peer.
4757          */
4758         inline void handle_open_channel_v2(struct LDKPublicKey their_node_id, const struct LDKOpenChannelV2 *NONNULL_PTR msg);
4759         /**
4760          *  Handle an incoming `accept_channel` message from the given peer.
4761          */
4762         inline void handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg);
4763         /**
4764          *  Handle an incoming `accept_channel2` message from the given peer.
4765          */
4766         inline void handle_accept_channel_v2(struct LDKPublicKey their_node_id, const struct LDKAcceptChannelV2 *NONNULL_PTR msg);
4767         /**
4768          *  Handle an incoming `funding_created` message from the given peer.
4769          */
4770         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
4771         /**
4772          *  Handle an incoming `funding_signed` message from the given peer.
4773          */
4774         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
4775         /**
4776          *  Handle an incoming `channel_ready` message from the given peer.
4777          */
4778         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
4779         /**
4780          *  Handle an incoming `shutdown` message from the given peer.
4781          */
4782         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg);
4783         /**
4784          *  Handle an incoming `closing_signed` message from the given peer.
4785          */
4786         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
4787         /**
4788          *  Handle an incoming `stfu` message from the given peer.
4789          */
4790         inline void handle_stfu(struct LDKPublicKey their_node_id, const struct LDKStfu *NONNULL_PTR msg);
4791         /**
4792          *  Handle an incoming `tx_add_input message` from the given peer.
4793          */
4794         inline void handle_tx_add_input(struct LDKPublicKey their_node_id, const struct LDKTxAddInput *NONNULL_PTR msg);
4795         /**
4796          *  Handle an incoming `tx_add_output` message from the given peer.
4797          */
4798         inline void handle_tx_add_output(struct LDKPublicKey their_node_id, const struct LDKTxAddOutput *NONNULL_PTR msg);
4799         /**
4800          *  Handle an incoming `tx_remove_input` message from the given peer.
4801          */
4802         inline void handle_tx_remove_input(struct LDKPublicKey their_node_id, const struct LDKTxRemoveInput *NONNULL_PTR msg);
4803         /**
4804          *  Handle an incoming `tx_remove_output` message from the given peer.
4805          */
4806         inline void handle_tx_remove_output(struct LDKPublicKey their_node_id, const struct LDKTxRemoveOutput *NONNULL_PTR msg);
4807         /**
4808          *  Handle an incoming `tx_complete message` from the given peer.
4809          */
4810         inline void handle_tx_complete(struct LDKPublicKey their_node_id, const struct LDKTxComplete *NONNULL_PTR msg);
4811         /**
4812          *  Handle an incoming `tx_signatures` message from the given peer.
4813          */
4814         inline void handle_tx_signatures(struct LDKPublicKey their_node_id, const struct LDKTxSignatures *NONNULL_PTR msg);
4815         /**
4816          *  Handle an incoming `tx_init_rbf` message from the given peer.
4817          */
4818         inline void handle_tx_init_rbf(struct LDKPublicKey their_node_id, const struct LDKTxInitRbf *NONNULL_PTR msg);
4819         /**
4820          *  Handle an incoming `tx_ack_rbf` message from the given peer.
4821          */
4822         inline void handle_tx_ack_rbf(struct LDKPublicKey their_node_id, const struct LDKTxAckRbf *NONNULL_PTR msg);
4823         /**
4824          *  Handle an incoming `tx_abort message` from the given peer.
4825          */
4826         inline void handle_tx_abort(struct LDKPublicKey their_node_id, const struct LDKTxAbort *NONNULL_PTR msg);
4827         /**
4828          *  Handle an incoming `update_add_htlc` message from the given peer.
4829          */
4830         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
4831         /**
4832          *  Handle an incoming `update_fulfill_htlc` message from the given peer.
4833          */
4834         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
4835         /**
4836          *  Handle an incoming `update_fail_htlc` message from the given peer.
4837          */
4838         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
4839         /**
4840          *  Handle an incoming `update_fail_malformed_htlc` message from the given peer.
4841          */
4842         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
4843         /**
4844          *  Handle an incoming `commitment_signed` message from the given peer.
4845          */
4846         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
4847         /**
4848          *  Handle an incoming `revoke_and_ack` message from the given peer.
4849          */
4850         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
4851         /**
4852          *  Handle an incoming `update_fee` message from the given peer.
4853          */
4854         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
4855         /**
4856          *  Handle an incoming `announcement_signatures` message from the given peer.
4857          */
4858         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
4859         /**
4860          *  Indicates a connection to the peer failed/an existing connection was lost.
4861          */
4862         inline void peer_disconnected(struct LDKPublicKey their_node_id);
4863         /**
4864          *  Handle a peer reconnecting, possibly generating `channel_reestablish` message(s).
4865          * 
4866          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4867          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4868          *  message handlers may still wish to communicate with this peer.
4869          */
4870         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound);
4871         /**
4872          *  Handle an incoming `channel_reestablish` message from the given peer.
4873          */
4874         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
4875         /**
4876          *  Handle an incoming `channel_update` message from the given peer.
4877          */
4878         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
4879         /**
4880          *  Handle an incoming `error` message from the given peer.
4881          */
4882         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
4883         /**
4884          *  Gets the node feature flags which this handler itself supports. All available handlers are
4885          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4886          *  which are broadcasted in our [`NodeAnnouncement`] message.
4887          */
4888         inline LDK::NodeFeatures provided_node_features();
4889         /**
4890          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4891          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4892          *  which are sent in our [`Init`] message.
4893          * 
4894          *  Note that this method is called before [`Self::peer_connected`].
4895          */
4896         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4897         /**
4898          *  Gets the chain hashes for this `ChannelMessageHandler` indicating which chains it supports.
4899          * 
4900          *  If it's `None`, then no particular network chain hash compatibility will be enforced when
4901          *  connecting to peers.
4902          */
4903         inline LDK::COption_CVec_ThirtyTwoBytesZZ get_chain_hashes();
4904 };
4905 class RoutingMessageHandler {
4906 private:
4907         LDKRoutingMessageHandler self;
4908 public:
4909         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
4910         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
4911         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
4912         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
4913         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
4914         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
4915         LDKRoutingMessageHandler* operator &() { return &self; }
4916         LDKRoutingMessageHandler* operator ->() { return &self; }
4917         const LDKRoutingMessageHandler* operator &() const { return &self; }
4918         const LDKRoutingMessageHandler* operator ->() const { return &self; }
4919         /**
4920          *  Handle an incoming `node_announcement` message, returning `true` if it should be forwarded on,
4921          *  `false` or returning an `Err` otherwise.
4922          */
4923         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
4924         /**
4925          *  Handle a `channel_announcement` message, returning `true` if it should be forwarded on, `false`
4926          *  or returning an `Err` otherwise.
4927          */
4928         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
4929         /**
4930          *  Handle an incoming `channel_update` message, returning true if it should be forwarded on,
4931          *  `false` or returning an `Err` otherwise.
4932          */
4933         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
4934         /**
4935          *  Gets channel announcements and updates required to dump our routing table to a remote node,
4936          *  starting at the `short_channel_id` indicated by `starting_point` and including announcements
4937          *  for a single channel.
4938          */
4939         inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcement(uint64_t starting_point);
4940         /**
4941          *  Gets a node announcement required to dump our routing table to a remote node, starting at
4942          *  the node *after* the provided pubkey and including up to one announcement immediately
4943          *  higher (as defined by `<PublicKey as Ord>::cmp`) than `starting_point`.
4944          *  If `None` is provided for `starting_point`, we start at the first node.
4945          * 
4946          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
4947          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
4948          */
4949         inline LDK::NodeAnnouncement get_next_node_announcement(struct LDKNodeId starting_point);
4950         /**
4951          *  Called when a connection is established with a peer. This can be used to
4952          *  perform routing table synchronization using a strategy defined by the
4953          *  implementor.
4954          * 
4955          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4956          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4957          *  message handlers may still wish to communicate with this peer.
4958          */
4959         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
4960         /**
4961          *  Handles the reply of a query we initiated to learn about channels
4962          *  for a given range of blocks. We can expect to receive one or more
4963          *  replies to a single query.
4964          */
4965         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
4966         /**
4967          *  Handles the reply of a query we initiated asking for routing gossip
4968          *  messages for a list of channels. We should receive this message when
4969          *  a node has completed its best effort to send us the pertaining routing
4970          *  gossip messages.
4971          */
4972         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
4973         /**
4974          *  Handles when a peer asks us to send a list of `short_channel_id`s
4975          *  for the requested range of blocks.
4976          */
4977         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
4978         /**
4979          *  Handles when a peer asks us to send routing gossip messages for a
4980          *  list of `short_channel_id`s.
4981          */
4982         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
4983         /**
4984          *  Indicates that there are a large number of [`ChannelAnnouncement`] (or other) messages
4985          *  pending some async action. While there is no guarantee of the rate of future messages, the
4986          *  caller should seek to reduce the rate of new gossip messages handled, especially
4987          *  [`ChannelAnnouncement`]s.
4988          */
4989         inline bool processing_queue_high();
4990         /**
4991          *  Gets the node feature flags which this handler itself supports. All available handlers are
4992          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4993          *  which are broadcasted in our [`NodeAnnouncement`] message.
4994          */
4995         inline LDK::NodeFeatures provided_node_features();
4996         /**
4997          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4998          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4999          *  which are sent in our [`Init`] message.
5000          * 
5001          *  Note that this method is called before [`Self::peer_connected`].
5002          */
5003         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
5004 };
5005 class OnionMessageHandler {
5006 private:
5007         LDKOnionMessageHandler self;
5008 public:
5009         OnionMessageHandler(const OnionMessageHandler&) = delete;
5010         OnionMessageHandler(OnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageHandler)); }
5011         OnionMessageHandler(LDKOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageHandler)); }
5012         operator LDKOnionMessageHandler() && { LDKOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKOnionMessageHandler)); return res; }
5013         ~OnionMessageHandler() { OnionMessageHandler_free(self); }
5014         OnionMessageHandler& operator=(OnionMessageHandler&& o) { OnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageHandler)); return *this; }
5015         LDKOnionMessageHandler* operator &() { return &self; }
5016         LDKOnionMessageHandler* operator ->() { return &self; }
5017         const LDKOnionMessageHandler* operator &() const { return &self; }
5018         const LDKOnionMessageHandler* operator ->() const { return &self; }
5019         /**
5020          *  Because much of the lightning network does not yet support forwarding onion messages, we
5021          *  may need to directly connect to a node which will forward a message for us. In such a case,
5022          *  this method will return the set of nodes which need connection by node_id and the
5023          *  corresponding socket addresses where they may accept incoming connections.
5024          * 
5025          *  Thus, this method should be polled regularly to detect messages await such a direct
5026          *  connection.
5027          */
5028         inline LDK::CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ get_and_clear_connections_needed();
5029         /**
5030          *  Handle an incoming `onion_message` message from the given peer.
5031          */
5032         inline void handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg);
5033         /**
5034          *  Returns the next pending onion message for the peer with the given node id.
5035          * 
5036          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
5037          */
5038         inline LDK::OnionMessage next_onion_message_for_peer(struct LDKPublicKey peer_node_id);
5039         /**
5040          *  Called when a connection is established with a peer. Can be used to track which peers
5041          *  advertise onion message support and are online.
5042          * 
5043          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
5044          *  with us. Implementors should be somewhat conservative about doing so, however, as other
5045          *  message handlers may still wish to communicate with this peer.
5046          */
5047         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
5048         /**
5049          *  Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
5050          *  drop and refuse to forward onion messages to this peer.
5051          */
5052         inline void peer_disconnected(struct LDKPublicKey their_node_id);
5053         /**
5054          *  Performs actions that should happen roughly every ten seconds after startup. Allows handlers
5055          *  to drop any buffered onion messages intended for prospective peers.
5056          */
5057         inline void timer_tick_occurred();
5058         /**
5059          *  Gets the node feature flags which this handler itself supports. All available handlers are
5060          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
5061          *  which are broadcasted in our [`NodeAnnouncement`] message.
5062          */
5063         inline LDK::NodeFeatures provided_node_features();
5064         /**
5065          *  Gets the init feature flags which should be sent to the given peer. All available handlers
5066          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
5067          *  which are sent in our [`Init`] message.
5068          * 
5069          *  Note that this method is called before [`Self::peer_connected`].
5070          */
5071         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
5072 };
5073 class FinalOnionHopData {
5074 private:
5075         LDKFinalOnionHopData self;
5076 public:
5077         FinalOnionHopData(const FinalOnionHopData&) = delete;
5078         FinalOnionHopData(FinalOnionHopData&& o) : self(o.self) { memset(&o, 0, sizeof(FinalOnionHopData)); }
5079         FinalOnionHopData(LDKFinalOnionHopData&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFinalOnionHopData)); }
5080         operator LDKFinalOnionHopData() && { LDKFinalOnionHopData res = self; memset(&self, 0, sizeof(LDKFinalOnionHopData)); return res; }
5081         ~FinalOnionHopData() { FinalOnionHopData_free(self); }
5082         FinalOnionHopData& operator=(FinalOnionHopData&& o) { FinalOnionHopData_free(self); self = o.self; memset(&o, 0, sizeof(FinalOnionHopData)); return *this; }
5083         LDKFinalOnionHopData* operator &() { return &self; }
5084         LDKFinalOnionHopData* operator ->() { return &self; }
5085         const LDKFinalOnionHopData* operator &() const { return &self; }
5086         const LDKFinalOnionHopData* operator ->() const { return &self; }
5087 };
5088 class OnionPacket {
5089 private:
5090         LDKOnionPacket self;
5091 public:
5092         OnionPacket(const OnionPacket&) = delete;
5093         OnionPacket(OnionPacket&& o) : self(o.self) { memset(&o, 0, sizeof(OnionPacket)); }
5094         OnionPacket(LDKOnionPacket&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionPacket)); }
5095         operator LDKOnionPacket() && { LDKOnionPacket res = self; memset(&self, 0, sizeof(LDKOnionPacket)); return res; }
5096         ~OnionPacket() { OnionPacket_free(self); }
5097         OnionPacket& operator=(OnionPacket&& o) { OnionPacket_free(self); self = o.self; memset(&o, 0, sizeof(OnionPacket)); return *this; }
5098         LDKOnionPacket* operator &() { return &self; }
5099         LDKOnionPacket* operator ->() { return &self; }
5100         const LDKOnionPacket* operator &() const { return &self; }
5101         const LDKOnionPacket* operator ->() const { return &self; }
5102 };
5103 class TrampolineOnionPacket {
5104 private:
5105         LDKTrampolineOnionPacket self;
5106 public:
5107         TrampolineOnionPacket(const TrampolineOnionPacket&) = delete;
5108         TrampolineOnionPacket(TrampolineOnionPacket&& o) : self(o.self) { memset(&o, 0, sizeof(TrampolineOnionPacket)); }
5109         TrampolineOnionPacket(LDKTrampolineOnionPacket&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrampolineOnionPacket)); }
5110         operator LDKTrampolineOnionPacket() && { LDKTrampolineOnionPacket res = self; memset(&self, 0, sizeof(LDKTrampolineOnionPacket)); return res; }
5111         ~TrampolineOnionPacket() { TrampolineOnionPacket_free(self); }
5112         TrampolineOnionPacket& operator=(TrampolineOnionPacket&& o) { TrampolineOnionPacket_free(self); self = o.self; memset(&o, 0, sizeof(TrampolineOnionPacket)); return *this; }
5113         LDKTrampolineOnionPacket* operator &() { return &self; }
5114         LDKTrampolineOnionPacket* operator ->() { return &self; }
5115         const LDKTrampolineOnionPacket* operator &() const { return &self; }
5116         const LDKTrampolineOnionPacket* operator ->() const { return &self; }
5117 };
5118 class Level {
5119 private:
5120         LDKLevel self;
5121 public:
5122         Level(const Level&) = delete;
5123         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
5124         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
5125         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
5126         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
5127         LDKLevel* operator &() { return &self; }
5128         LDKLevel* operator ->() { return &self; }
5129         const LDKLevel* operator &() const { return &self; }
5130         const LDKLevel* operator ->() const { return &self; }
5131 };
5132 class Record {
5133 private:
5134         LDKRecord self;
5135 public:
5136         Record(const Record&) = delete;
5137         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
5138         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
5139         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
5140         ~Record() { Record_free(self); }
5141         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
5142         LDKRecord* operator &() { return &self; }
5143         LDKRecord* operator ->() { return &self; }
5144         const LDKRecord* operator &() const { return &self; }
5145         const LDKRecord* operator ->() const { return &self; }
5146 };
5147 class Logger {
5148 private:
5149         LDKLogger self;
5150 public:
5151         Logger(const Logger&) = delete;
5152         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
5153         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
5154         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
5155         ~Logger() { Logger_free(self); }
5156         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
5157         LDKLogger* operator &() { return &self; }
5158         LDKLogger* operator ->() { return &self; }
5159         const LDKLogger* operator &() const { return &self; }
5160         const LDKLogger* operator ->() const { return &self; }
5161         /**
5162          *  Logs the [`Record`].
5163          */
5164         inline void log(struct LDKRecord record);
5165 };
5166 class InboundHTLCStateDetails {
5167 private:
5168         LDKInboundHTLCStateDetails self;
5169 public:
5170         InboundHTLCStateDetails(const InboundHTLCStateDetails&) = delete;
5171         InboundHTLCStateDetails(InboundHTLCStateDetails&& o) : self(o.self) { memset(&o, 0, sizeof(InboundHTLCStateDetails)); }
5172         InboundHTLCStateDetails(LDKInboundHTLCStateDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInboundHTLCStateDetails)); }
5173         operator LDKInboundHTLCStateDetails() && { LDKInboundHTLCStateDetails res = self; memset(&self, 0, sizeof(LDKInboundHTLCStateDetails)); return res; }
5174         InboundHTLCStateDetails& operator=(InboundHTLCStateDetails&& o) { self = o.self; memset(&o, 0, sizeof(InboundHTLCStateDetails)); return *this; }
5175         LDKInboundHTLCStateDetails* operator &() { return &self; }
5176         LDKInboundHTLCStateDetails* operator ->() { return &self; }
5177         const LDKInboundHTLCStateDetails* operator &() const { return &self; }
5178         const LDKInboundHTLCStateDetails* operator ->() const { return &self; }
5179 };
5180 class InboundHTLCDetails {
5181 private:
5182         LDKInboundHTLCDetails self;
5183 public:
5184         InboundHTLCDetails(const InboundHTLCDetails&) = delete;
5185         InboundHTLCDetails(InboundHTLCDetails&& o) : self(o.self) { memset(&o, 0, sizeof(InboundHTLCDetails)); }
5186         InboundHTLCDetails(LDKInboundHTLCDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInboundHTLCDetails)); }
5187         operator LDKInboundHTLCDetails() && { LDKInboundHTLCDetails res = self; memset(&self, 0, sizeof(LDKInboundHTLCDetails)); return res; }
5188         ~InboundHTLCDetails() { InboundHTLCDetails_free(self); }
5189         InboundHTLCDetails& operator=(InboundHTLCDetails&& o) { InboundHTLCDetails_free(self); self = o.self; memset(&o, 0, sizeof(InboundHTLCDetails)); return *this; }
5190         LDKInboundHTLCDetails* operator &() { return &self; }
5191         LDKInboundHTLCDetails* operator ->() { return &self; }
5192         const LDKInboundHTLCDetails* operator &() const { return &self; }
5193         const LDKInboundHTLCDetails* operator ->() const { return &self; }
5194 };
5195 class OutboundHTLCStateDetails {
5196 private:
5197         LDKOutboundHTLCStateDetails self;
5198 public:
5199         OutboundHTLCStateDetails(const OutboundHTLCStateDetails&) = delete;
5200         OutboundHTLCStateDetails(OutboundHTLCStateDetails&& o) : self(o.self) { memset(&o, 0, sizeof(OutboundHTLCStateDetails)); }
5201         OutboundHTLCStateDetails(LDKOutboundHTLCStateDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutboundHTLCStateDetails)); }
5202         operator LDKOutboundHTLCStateDetails() && { LDKOutboundHTLCStateDetails res = self; memset(&self, 0, sizeof(LDKOutboundHTLCStateDetails)); return res; }
5203         OutboundHTLCStateDetails& operator=(OutboundHTLCStateDetails&& o) { self = o.self; memset(&o, 0, sizeof(OutboundHTLCStateDetails)); return *this; }
5204         LDKOutboundHTLCStateDetails* operator &() { return &self; }
5205         LDKOutboundHTLCStateDetails* operator ->() { return &self; }
5206         const LDKOutboundHTLCStateDetails* operator &() const { return &self; }
5207         const LDKOutboundHTLCStateDetails* operator ->() const { return &self; }
5208 };
5209 class OutboundHTLCDetails {
5210 private:
5211         LDKOutboundHTLCDetails self;
5212 public:
5213         OutboundHTLCDetails(const OutboundHTLCDetails&) = delete;
5214         OutboundHTLCDetails(OutboundHTLCDetails&& o) : self(o.self) { memset(&o, 0, sizeof(OutboundHTLCDetails)); }
5215         OutboundHTLCDetails(LDKOutboundHTLCDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutboundHTLCDetails)); }
5216         operator LDKOutboundHTLCDetails() && { LDKOutboundHTLCDetails res = self; memset(&self, 0, sizeof(LDKOutboundHTLCDetails)); return res; }
5217         ~OutboundHTLCDetails() { OutboundHTLCDetails_free(self); }
5218         OutboundHTLCDetails& operator=(OutboundHTLCDetails&& o) { OutboundHTLCDetails_free(self); self = o.self; memset(&o, 0, sizeof(OutboundHTLCDetails)); return *this; }
5219         LDKOutboundHTLCDetails* operator &() { return &self; }
5220         LDKOutboundHTLCDetails* operator ->() { return &self; }
5221         const LDKOutboundHTLCDetails* operator &() const { return &self; }
5222         const LDKOutboundHTLCDetails* operator ->() const { return &self; }
5223 };
5224 class CounterpartyForwardingInfo {
5225 private:
5226         LDKCounterpartyForwardingInfo self;
5227 public:
5228         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
5229         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
5230         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
5231         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
5232         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
5233         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
5234         LDKCounterpartyForwardingInfo* operator &() { return &self; }
5235         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
5236         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
5237         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
5238 };
5239 class ChannelCounterparty {
5240 private:
5241         LDKChannelCounterparty self;
5242 public:
5243         ChannelCounterparty(const ChannelCounterparty&) = delete;
5244         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
5245         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
5246         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
5247         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
5248         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
5249         LDKChannelCounterparty* operator &() { return &self; }
5250         LDKChannelCounterparty* operator ->() { return &self; }
5251         const LDKChannelCounterparty* operator &() const { return &self; }
5252         const LDKChannelCounterparty* operator ->() const { return &self; }
5253 };
5254 class ChannelDetails {
5255 private:
5256         LDKChannelDetails self;
5257 public:
5258         ChannelDetails(const ChannelDetails&) = delete;
5259         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
5260         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
5261         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
5262         ~ChannelDetails() { ChannelDetails_free(self); }
5263         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
5264         LDKChannelDetails* operator &() { return &self; }
5265         LDKChannelDetails* operator ->() { return &self; }
5266         const LDKChannelDetails* operator &() const { return &self; }
5267         const LDKChannelDetails* operator ->() const { return &self; }
5268 };
5269 class ChannelShutdownState {
5270 private:
5271         LDKChannelShutdownState self;
5272 public:
5273         ChannelShutdownState(const ChannelShutdownState&) = delete;
5274         ChannelShutdownState(ChannelShutdownState&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelShutdownState)); }
5275         ChannelShutdownState(LDKChannelShutdownState&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelShutdownState)); }
5276         operator LDKChannelShutdownState() && { LDKChannelShutdownState res = self; memset(&self, 0, sizeof(LDKChannelShutdownState)); return res; }
5277         ChannelShutdownState& operator=(ChannelShutdownState&& o) { self = o.self; memset(&o, 0, sizeof(ChannelShutdownState)); return *this; }
5278         LDKChannelShutdownState* operator &() { return &self; }
5279         LDKChannelShutdownState* operator ->() { return &self; }
5280         const LDKChannelShutdownState* operator &() const { return &self; }
5281         const LDKChannelShutdownState* operator ->() const { return &self; }
5282 };
5283 class FutureCallback {
5284 private:
5285         LDKFutureCallback self;
5286 public:
5287         FutureCallback(const FutureCallback&) = delete;
5288         FutureCallback(FutureCallback&& o) : self(o.self) { memset(&o, 0, sizeof(FutureCallback)); }
5289         FutureCallback(LDKFutureCallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFutureCallback)); }
5290         operator LDKFutureCallback() && { LDKFutureCallback res = self; memset(&self, 0, sizeof(LDKFutureCallback)); return res; }
5291         ~FutureCallback() { FutureCallback_free(self); }
5292         FutureCallback& operator=(FutureCallback&& o) { FutureCallback_free(self); self = o.self; memset(&o, 0, sizeof(FutureCallback)); return *this; }
5293         LDKFutureCallback* operator &() { return &self; }
5294         LDKFutureCallback* operator ->() { return &self; }
5295         const LDKFutureCallback* operator &() const { return &self; }
5296         const LDKFutureCallback* operator ->() const { return &self; }
5297         /**
5298          *  The method which is called.
5299          */
5300         inline void call();
5301 };
5302 class Future {
5303 private:
5304         LDKFuture self;
5305 public:
5306         Future(const Future&) = delete;
5307         Future(Future&& o) : self(o.self) { memset(&o, 0, sizeof(Future)); }
5308         Future(LDKFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFuture)); }
5309         operator LDKFuture() && { LDKFuture res = self; memset(&self, 0, sizeof(LDKFuture)); return res; }
5310         ~Future() { Future_free(self); }
5311         Future& operator=(Future&& o) { Future_free(self); self = o.self; memset(&o, 0, sizeof(Future)); return *this; }
5312         LDKFuture* operator &() { return &self; }
5313         LDKFuture* operator ->() { return &self; }
5314         const LDKFuture* operator &() const { return &self; }
5315         const LDKFuture* operator ->() const { return &self; }
5316 };
5317 class Sleeper {
5318 private:
5319         LDKSleeper self;
5320 public:
5321         Sleeper(const Sleeper&) = delete;
5322         Sleeper(Sleeper&& o) : self(o.self) { memset(&o, 0, sizeof(Sleeper)); }
5323         Sleeper(LDKSleeper&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSleeper)); }
5324         operator LDKSleeper() && { LDKSleeper res = self; memset(&self, 0, sizeof(LDKSleeper)); return res; }
5325         ~Sleeper() { Sleeper_free(self); }
5326         Sleeper& operator=(Sleeper&& o) { Sleeper_free(self); self = o.self; memset(&o, 0, sizeof(Sleeper)); return *this; }
5327         LDKSleeper* operator &() { return &self; }
5328         LDKSleeper* operator ->() { return &self; }
5329         const LDKSleeper* operator &() const { return &self; }
5330         const LDKSleeper* operator ->() const { return &self; }
5331 };
5332 class OffersMessageHandler {
5333 private:
5334         LDKOffersMessageHandler self;
5335 public:
5336         OffersMessageHandler(const OffersMessageHandler&) = delete;
5337         OffersMessageHandler(OffersMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OffersMessageHandler)); }
5338         OffersMessageHandler(LDKOffersMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffersMessageHandler)); }
5339         operator LDKOffersMessageHandler() && { LDKOffersMessageHandler res = self; memset(&self, 0, sizeof(LDKOffersMessageHandler)); return res; }
5340         ~OffersMessageHandler() { OffersMessageHandler_free(self); }
5341         OffersMessageHandler& operator=(OffersMessageHandler&& o) { OffersMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OffersMessageHandler)); return *this; }
5342         LDKOffersMessageHandler* operator &() { return &self; }
5343         LDKOffersMessageHandler* operator ->() { return &self; }
5344         const LDKOffersMessageHandler* operator &() const { return &self; }
5345         const LDKOffersMessageHandler* operator ->() const { return &self; }
5346         /**
5347          *  Handles the given message by either responding with an [`Bolt12Invoice`], sending a payment,
5348          *  or replying with an error.
5349          * 
5350          *  The returned [`OffersMessage`], if any, is enqueued to be sent by [`OnionMessenger`].
5351          * 
5352          *  [`OnionMessenger`]: crate::onion_message::messenger::OnionMessenger
5353          */
5354         inline LDK::COption_OffersMessageZ handle_message(struct LDKOffersMessage message);
5355         /**
5356          *  Releases any [`OffersMessage`]s that need to be sent.
5357          * 
5358          *  Typically, this is used for messages initiating a payment flow rather than in response to
5359          *  another message. The latter should use the return value of [`Self::handle_message`].
5360          */
5361         inline LDK::CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ release_pending_messages();
5362 };
5363 class OffersMessage {
5364 private:
5365         LDKOffersMessage self;
5366 public:
5367         OffersMessage(const OffersMessage&) = delete;
5368         OffersMessage(OffersMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OffersMessage)); }
5369         OffersMessage(LDKOffersMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffersMessage)); }
5370         operator LDKOffersMessage() && { LDKOffersMessage res = self; memset(&self, 0, sizeof(LDKOffersMessage)); return res; }
5371         ~OffersMessage() { OffersMessage_free(self); }
5372         OffersMessage& operator=(OffersMessage&& o) { OffersMessage_free(self); self = o.self; memset(&o, 0, sizeof(OffersMessage)); return *this; }
5373         LDKOffersMessage* operator &() { return &self; }
5374         LDKOffersMessage* operator ->() { return &self; }
5375         const LDKOffersMessage* operator &() const { return &self; }
5376         const LDKOffersMessage* operator ->() const { return &self; }
5377 };
5378 class HTLCClaim {
5379 private:
5380         LDKHTLCClaim self;
5381 public:
5382         HTLCClaim(const HTLCClaim&) = delete;
5383         HTLCClaim(HTLCClaim&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCClaim)); }
5384         HTLCClaim(LDKHTLCClaim&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCClaim)); }
5385         operator LDKHTLCClaim() && { LDKHTLCClaim res = self; memset(&self, 0, sizeof(LDKHTLCClaim)); return res; }
5386         HTLCClaim& operator=(HTLCClaim&& o) { self = o.self; memset(&o, 0, sizeof(HTLCClaim)); return *this; }
5387         LDKHTLCClaim* operator &() { return &self; }
5388         LDKHTLCClaim* operator ->() { return &self; }
5389         const LDKHTLCClaim* operator &() const { return &self; }
5390         const LDKHTLCClaim* operator ->() const { return &self; }
5391 };
5392 class CounterpartyCommitmentSecrets {
5393 private:
5394         LDKCounterpartyCommitmentSecrets self;
5395 public:
5396         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
5397         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
5398         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
5399         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
5400         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
5401         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
5402         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
5403         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
5404         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
5405         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
5406 };
5407 class TxCreationKeys {
5408 private:
5409         LDKTxCreationKeys self;
5410 public:
5411         TxCreationKeys(const TxCreationKeys&) = delete;
5412         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
5413         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
5414         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
5415         ~TxCreationKeys() { TxCreationKeys_free(self); }
5416         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
5417         LDKTxCreationKeys* operator &() { return &self; }
5418         LDKTxCreationKeys* operator ->() { return &self; }
5419         const LDKTxCreationKeys* operator &() const { return &self; }
5420         const LDKTxCreationKeys* operator ->() const { return &self; }
5421 };
5422 class ChannelPublicKeys {
5423 private:
5424         LDKChannelPublicKeys self;
5425 public:
5426         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
5427         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
5428         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
5429         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
5430         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
5431         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
5432         LDKChannelPublicKeys* operator &() { return &self; }
5433         LDKChannelPublicKeys* operator ->() { return &self; }
5434         const LDKChannelPublicKeys* operator &() const { return &self; }
5435         const LDKChannelPublicKeys* operator ->() const { return &self; }
5436 };
5437 class HTLCOutputInCommitment {
5438 private:
5439         LDKHTLCOutputInCommitment self;
5440 public:
5441         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
5442         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
5443         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
5444         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
5445         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
5446         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
5447         LDKHTLCOutputInCommitment* operator &() { return &self; }
5448         LDKHTLCOutputInCommitment* operator ->() { return &self; }
5449         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
5450         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
5451 };
5452 class ChannelTransactionParameters {
5453 private:
5454         LDKChannelTransactionParameters self;
5455 public:
5456         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
5457         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
5458         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
5459         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
5460         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
5461         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
5462         LDKChannelTransactionParameters* operator &() { return &self; }
5463         LDKChannelTransactionParameters* operator ->() { return &self; }
5464         const LDKChannelTransactionParameters* operator &() const { return &self; }
5465         const LDKChannelTransactionParameters* operator ->() const { return &self; }
5466 };
5467 class CounterpartyChannelTransactionParameters {
5468 private:
5469         LDKCounterpartyChannelTransactionParameters self;
5470 public:
5471         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
5472         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
5473         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
5474         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
5475         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
5476         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
5477         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
5478         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
5479         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
5480         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
5481 };
5482 class DirectedChannelTransactionParameters {
5483 private:
5484         LDKDirectedChannelTransactionParameters self;
5485 public:
5486         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
5487         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
5488         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
5489         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
5490         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
5491         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
5492         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
5493         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
5494         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
5495         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
5496 };
5497 class HolderCommitmentTransaction {
5498 private:
5499         LDKHolderCommitmentTransaction self;
5500 public:
5501         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
5502         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
5503         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
5504         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
5505         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
5506         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
5507         LDKHolderCommitmentTransaction* operator &() { return &self; }
5508         LDKHolderCommitmentTransaction* operator ->() { return &self; }
5509         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
5510         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
5511 };
5512 class BuiltCommitmentTransaction {
5513 private:
5514         LDKBuiltCommitmentTransaction self;
5515 public:
5516         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
5517         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
5518         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
5519         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
5520         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
5521         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
5522         LDKBuiltCommitmentTransaction* operator &() { return &self; }
5523         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
5524         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
5525         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
5526 };
5527 class ClosingTransaction {
5528 private:
5529         LDKClosingTransaction self;
5530 public:
5531         ClosingTransaction(const ClosingTransaction&) = delete;
5532         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
5533         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
5534         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
5535         ~ClosingTransaction() { ClosingTransaction_free(self); }
5536         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
5537         LDKClosingTransaction* operator &() { return &self; }
5538         LDKClosingTransaction* operator ->() { return &self; }
5539         const LDKClosingTransaction* operator &() const { return &self; }
5540         const LDKClosingTransaction* operator ->() const { return &self; }
5541 };
5542 class TrustedClosingTransaction {
5543 private:
5544         LDKTrustedClosingTransaction self;
5545 public:
5546         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
5547         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
5548         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
5549         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
5550         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
5551         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
5552         LDKTrustedClosingTransaction* operator &() { return &self; }
5553         LDKTrustedClosingTransaction* operator ->() { return &self; }
5554         const LDKTrustedClosingTransaction* operator &() const { return &self; }
5555         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
5556 };
5557 class CommitmentTransaction {
5558 private:
5559         LDKCommitmentTransaction self;
5560 public:
5561         CommitmentTransaction(const CommitmentTransaction&) = delete;
5562         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
5563         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
5564         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
5565         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
5566         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
5567         LDKCommitmentTransaction* operator &() { return &self; }
5568         LDKCommitmentTransaction* operator ->() { return &self; }
5569         const LDKCommitmentTransaction* operator &() const { return &self; }
5570         const LDKCommitmentTransaction* operator ->() const { return &self; }
5571 };
5572 class TrustedCommitmentTransaction {
5573 private:
5574         LDKTrustedCommitmentTransaction self;
5575 public:
5576         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
5577         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
5578         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
5579         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
5580         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
5581         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
5582         LDKTrustedCommitmentTransaction* operator &() { return &self; }
5583         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
5584         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
5585         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
5586 };
5587 class ShutdownScript {
5588 private:
5589         LDKShutdownScript self;
5590 public:
5591         ShutdownScript(const ShutdownScript&) = delete;
5592         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
5593         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
5594         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
5595         ~ShutdownScript() { ShutdownScript_free(self); }
5596         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
5597         LDKShutdownScript* operator &() { return &self; }
5598         LDKShutdownScript* operator ->() { return &self; }
5599         const LDKShutdownScript* operator &() const { return &self; }
5600         const LDKShutdownScript* operator ->() const { return &self; }
5601 };
5602 class InvalidShutdownScript {
5603 private:
5604         LDKInvalidShutdownScript self;
5605 public:
5606         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
5607         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
5608         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
5609         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
5610         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
5611         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
5612         LDKInvalidShutdownScript* operator &() { return &self; }
5613         LDKInvalidShutdownScript* operator ->() { return &self; }
5614         const LDKInvalidShutdownScript* operator &() const { return &self; }
5615         const LDKInvalidShutdownScript* operator ->() const { return &self; }
5616 };
5617 class Bolt12ParseError {
5618 private:
5619         LDKBolt12ParseError self;
5620 public:
5621         Bolt12ParseError(const Bolt12ParseError&) = delete;
5622         Bolt12ParseError(Bolt12ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12ParseError)); }
5623         Bolt12ParseError(LDKBolt12ParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12ParseError)); }
5624         operator LDKBolt12ParseError() && { LDKBolt12ParseError res = self; memset(&self, 0, sizeof(LDKBolt12ParseError)); return res; }
5625         ~Bolt12ParseError() { Bolt12ParseError_free(self); }
5626         Bolt12ParseError& operator=(Bolt12ParseError&& o) { Bolt12ParseError_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12ParseError)); return *this; }
5627         LDKBolt12ParseError* operator &() { return &self; }
5628         LDKBolt12ParseError* operator ->() { return &self; }
5629         const LDKBolt12ParseError* operator &() const { return &self; }
5630         const LDKBolt12ParseError* operator ->() const { return &self; }
5631 };
5632 class Bolt12SemanticError {
5633 private:
5634         LDKBolt12SemanticError self;
5635 public:
5636         Bolt12SemanticError(const Bolt12SemanticError&) = delete;
5637         Bolt12SemanticError(Bolt12SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12SemanticError)); }
5638         Bolt12SemanticError(LDKBolt12SemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12SemanticError)); }
5639         operator LDKBolt12SemanticError() && { LDKBolt12SemanticError res = self; memset(&self, 0, sizeof(LDKBolt12SemanticError)); return res; }
5640         Bolt12SemanticError& operator=(Bolt12SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(Bolt12SemanticError)); return *this; }
5641         LDKBolt12SemanticError* operator &() { return &self; }
5642         LDKBolt12SemanticError* operator ->() { return &self; }
5643         const LDKBolt12SemanticError* operator &() const { return &self; }
5644         const LDKBolt12SemanticError* operator ->() const { return &self; }
5645 };
5646 class BroadcasterInterface {
5647 private:
5648         LDKBroadcasterInterface self;
5649 public:
5650         BroadcasterInterface(const BroadcasterInterface&) = delete;
5651         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
5652         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
5653         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
5654         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
5655         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
5656         LDKBroadcasterInterface* operator &() { return &self; }
5657         LDKBroadcasterInterface* operator ->() { return &self; }
5658         const LDKBroadcasterInterface* operator &() const { return &self; }
5659         const LDKBroadcasterInterface* operator ->() const { return &self; }
5660         /**
5661          *  Sends a list of transactions out to (hopefully) be mined.
5662          *  This only needs to handle the actual broadcasting of transactions, LDK will automatically
5663          *  rebroadcast transactions that haven't made it into a block.
5664          * 
5665          *  In some cases LDK may attempt to broadcast a transaction which double-spends another
5666          *  and this isn't a bug and can be safely ignored.
5667          * 
5668          *  If more than one transaction is given, these transactions should be considered to be a
5669          *  package and broadcast together. Some of the transactions may or may not depend on each other,
5670          *  be sure to manage both cases correctly.
5671          * 
5672          *  Bitcoin transaction packages are defined in BIP 331 and here:
5673          *  <https://github.com/bitcoin/bitcoin/blob/master/doc/policy/packages.md>
5674          */
5675         inline void broadcast_transactions(struct LDKCVec_TransactionZ txs);
5676 };
5677 class ConfirmationTarget {
5678 private:
5679         LDKConfirmationTarget self;
5680 public:
5681         ConfirmationTarget(const ConfirmationTarget&) = delete;
5682         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
5683         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
5684         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
5685         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
5686         LDKConfirmationTarget* operator &() { return &self; }
5687         LDKConfirmationTarget* operator ->() { return &self; }
5688         const LDKConfirmationTarget* operator &() const { return &self; }
5689         const LDKConfirmationTarget* operator ->() const { return &self; }
5690 };
5691 class FeeEstimator {
5692 private:
5693         LDKFeeEstimator self;
5694 public:
5695         FeeEstimator(const FeeEstimator&) = delete;
5696         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
5697         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
5698         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
5699         ~FeeEstimator() { FeeEstimator_free(self); }
5700         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
5701         LDKFeeEstimator* operator &() { return &self; }
5702         LDKFeeEstimator* operator ->() { return &self; }
5703         const LDKFeeEstimator* operator &() const { return &self; }
5704         const LDKFeeEstimator* operator ->() const { return &self; }
5705         /**
5706          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
5707          * 
5708          *  LDK will wrap this method and ensure that the value returned is no smaller than 253
5709          *  (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
5710          * 
5711          *  The following unit conversions can be used to convert to sats/KW:
5712          *   * satoshis-per-byte * 250
5713          *   * satoshis-per-kbyte / 4
5714          */
5715         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
5716 };
5717 class Packet {
5718 private:
5719         LDKPacket self;
5720 public:
5721         Packet(const Packet&) = delete;
5722         Packet(Packet&& o) : self(o.self) { memset(&o, 0, sizeof(Packet)); }
5723         Packet(LDKPacket&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPacket)); }
5724         operator LDKPacket() && { LDKPacket res = self; memset(&self, 0, sizeof(LDKPacket)); return res; }
5725         ~Packet() { Packet_free(self); }
5726         Packet& operator=(Packet&& o) { Packet_free(self); self = o.self; memset(&o, 0, sizeof(Packet)); return *this; }
5727         LDKPacket* operator &() { return &self; }
5728         LDKPacket* operator ->() { return &self; }
5729         const LDKPacket* operator &() const { return &self; }
5730         const LDKPacket* operator ->() const { return &self; }
5731 };
5732 class ParsedOnionMessageContents {
5733 private:
5734         LDKParsedOnionMessageContents self;
5735 public:
5736         ParsedOnionMessageContents(const ParsedOnionMessageContents&) = delete;
5737         ParsedOnionMessageContents(ParsedOnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(ParsedOnionMessageContents)); }
5738         ParsedOnionMessageContents(LDKParsedOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParsedOnionMessageContents)); }
5739         operator LDKParsedOnionMessageContents() && { LDKParsedOnionMessageContents res = self; memset(&self, 0, sizeof(LDKParsedOnionMessageContents)); return res; }
5740         ~ParsedOnionMessageContents() { ParsedOnionMessageContents_free(self); }
5741         ParsedOnionMessageContents& operator=(ParsedOnionMessageContents&& o) { ParsedOnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(ParsedOnionMessageContents)); return *this; }
5742         LDKParsedOnionMessageContents* operator &() { return &self; }
5743         LDKParsedOnionMessageContents* operator ->() { return &self; }
5744         const LDKParsedOnionMessageContents* operator &() const { return &self; }
5745         const LDKParsedOnionMessageContents* operator ->() const { return &self; }
5746 };
5747 class OnionMessageContents {
5748 private:
5749         LDKOnionMessageContents self;
5750 public:
5751         OnionMessageContents(const OnionMessageContents&) = delete;
5752         OnionMessageContents(OnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageContents)); }
5753         OnionMessageContents(LDKOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageContents)); }
5754         operator LDKOnionMessageContents() && { LDKOnionMessageContents res = self; memset(&self, 0, sizeof(LDKOnionMessageContents)); return res; }
5755         ~OnionMessageContents() { OnionMessageContents_free(self); }
5756         OnionMessageContents& operator=(OnionMessageContents&& o) { OnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageContents)); return *this; }
5757         LDKOnionMessageContents* operator &() { return &self; }
5758         LDKOnionMessageContents* operator ->() { return &self; }
5759         const LDKOnionMessageContents* operator &() const { return &self; }
5760         const LDKOnionMessageContents* operator ->() const { return &self; }
5761         /**
5762          *  Returns the TLV type identifying the message contents. MUST be >= 64.
5763          */
5764         inline uint64_t tlv_type();
5765         /**
5766          * Return a human-readable "debug" string describing this object
5767          */
5768         inline LDK::Str debug_str();
5769 };
5770 class PaymentPurpose {
5771 private:
5772         LDKPaymentPurpose self;
5773 public:
5774         PaymentPurpose(const PaymentPurpose&) = delete;
5775         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
5776         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
5777         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
5778         ~PaymentPurpose() { PaymentPurpose_free(self); }
5779         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
5780         LDKPaymentPurpose* operator &() { return &self; }
5781         LDKPaymentPurpose* operator ->() { return &self; }
5782         const LDKPaymentPurpose* operator &() const { return &self; }
5783         const LDKPaymentPurpose* operator ->() const { return &self; }
5784 };
5785 class ClaimedHTLC {
5786 private:
5787         LDKClaimedHTLC self;
5788 public:
5789         ClaimedHTLC(const ClaimedHTLC&) = delete;
5790         ClaimedHTLC(ClaimedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(ClaimedHTLC)); }
5791         ClaimedHTLC(LDKClaimedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClaimedHTLC)); }
5792         operator LDKClaimedHTLC() && { LDKClaimedHTLC res = self; memset(&self, 0, sizeof(LDKClaimedHTLC)); return res; }
5793         ~ClaimedHTLC() { ClaimedHTLC_free(self); }
5794         ClaimedHTLC& operator=(ClaimedHTLC&& o) { ClaimedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(ClaimedHTLC)); return *this; }
5795         LDKClaimedHTLC* operator &() { return &self; }
5796         LDKClaimedHTLC* operator ->() { return &self; }
5797         const LDKClaimedHTLC* operator &() const { return &self; }
5798         const LDKClaimedHTLC* operator ->() const { return &self; }
5799 };
5800 class PathFailure {
5801 private:
5802         LDKPathFailure self;
5803 public:
5804         PathFailure(const PathFailure&) = delete;
5805         PathFailure(PathFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PathFailure)); }
5806         PathFailure(LDKPathFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPathFailure)); }
5807         operator LDKPathFailure() && { LDKPathFailure res = self; memset(&self, 0, sizeof(LDKPathFailure)); return res; }
5808         ~PathFailure() { PathFailure_free(self); }
5809         PathFailure& operator=(PathFailure&& o) { PathFailure_free(self); self = o.self; memset(&o, 0, sizeof(PathFailure)); return *this; }
5810         LDKPathFailure* operator &() { return &self; }
5811         LDKPathFailure* operator ->() { return &self; }
5812         const LDKPathFailure* operator &() const { return &self; }
5813         const LDKPathFailure* operator ->() const { return &self; }
5814 };
5815 class ClosureReason {
5816 private:
5817         LDKClosureReason self;
5818 public:
5819         ClosureReason(const ClosureReason&) = delete;
5820         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
5821         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
5822         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
5823         ~ClosureReason() { ClosureReason_free(self); }
5824         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
5825         LDKClosureReason* operator &() { return &self; }
5826         LDKClosureReason* operator ->() { return &self; }
5827         const LDKClosureReason* operator &() const { return &self; }
5828         const LDKClosureReason* operator ->() const { return &self; }
5829 };
5830 class HTLCDestination {
5831 private:
5832         LDKHTLCDestination self;
5833 public:
5834         HTLCDestination(const HTLCDestination&) = delete;
5835         HTLCDestination(HTLCDestination&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDestination)); }
5836         HTLCDestination(LDKHTLCDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDestination)); }
5837         operator LDKHTLCDestination() && { LDKHTLCDestination res = self; memset(&self, 0, sizeof(LDKHTLCDestination)); return res; }
5838         ~HTLCDestination() { HTLCDestination_free(self); }
5839         HTLCDestination& operator=(HTLCDestination&& o) { HTLCDestination_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDestination)); return *this; }
5840         LDKHTLCDestination* operator &() { return &self; }
5841         LDKHTLCDestination* operator ->() { return &self; }
5842         const LDKHTLCDestination* operator &() const { return &self; }
5843         const LDKHTLCDestination* operator ->() const { return &self; }
5844 };
5845 class PaymentFailureReason {
5846 private:
5847         LDKPaymentFailureReason self;
5848 public:
5849         PaymentFailureReason(const PaymentFailureReason&) = delete;
5850         PaymentFailureReason(PaymentFailureReason&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentFailureReason)); }
5851         PaymentFailureReason(LDKPaymentFailureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentFailureReason)); }
5852         operator LDKPaymentFailureReason() && { LDKPaymentFailureReason res = self; memset(&self, 0, sizeof(LDKPaymentFailureReason)); return res; }
5853         PaymentFailureReason& operator=(PaymentFailureReason&& o) { self = o.self; memset(&o, 0, sizeof(PaymentFailureReason)); return *this; }
5854         LDKPaymentFailureReason* operator &() { return &self; }
5855         LDKPaymentFailureReason* operator ->() { return &self; }
5856         const LDKPaymentFailureReason* operator &() const { return &self; }
5857         const LDKPaymentFailureReason* operator ->() const { return &self; }
5858 };
5859 class Event {
5860 private:
5861         LDKEvent self;
5862 public:
5863         Event(const Event&) = delete;
5864         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
5865         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
5866         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
5867         ~Event() { Event_free(self); }
5868         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
5869         LDKEvent* operator &() { return &self; }
5870         LDKEvent* operator ->() { return &self; }
5871         const LDKEvent* operator &() const { return &self; }
5872         const LDKEvent* operator ->() const { return &self; }
5873 };
5874 class MessageSendEvent {
5875 private:
5876         LDKMessageSendEvent self;
5877 public:
5878         MessageSendEvent(const MessageSendEvent&) = delete;
5879         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
5880         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
5881         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
5882         ~MessageSendEvent() { MessageSendEvent_free(self); }
5883         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
5884         LDKMessageSendEvent* operator &() { return &self; }
5885         LDKMessageSendEvent* operator ->() { return &self; }
5886         const LDKMessageSendEvent* operator &() const { return &self; }
5887         const LDKMessageSendEvent* operator ->() const { return &self; }
5888 };
5889 class MessageSendEventsProvider {
5890 private:
5891         LDKMessageSendEventsProvider self;
5892 public:
5893         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
5894         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
5895         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
5896         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
5897         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
5898         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
5899         LDKMessageSendEventsProvider* operator &() { return &self; }
5900         LDKMessageSendEventsProvider* operator ->() { return &self; }
5901         const LDKMessageSendEventsProvider* operator &() const { return &self; }
5902         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
5903         /**
5904          *  Gets the list of pending events which were generated by previous actions, clearing the list
5905          *  in the process.
5906          */
5907         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
5908 };
5909 class EventsProvider {
5910 private:
5911         LDKEventsProvider self;
5912 public:
5913         EventsProvider(const EventsProvider&) = delete;
5914         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
5915         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
5916         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
5917         ~EventsProvider() { EventsProvider_free(self); }
5918         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
5919         LDKEventsProvider* operator &() { return &self; }
5920         LDKEventsProvider* operator ->() { return &self; }
5921         const LDKEventsProvider* operator &() const { return &self; }
5922         const LDKEventsProvider* operator ->() const { return &self; }
5923         /**
5924          *  Processes any events generated since the last call using the given event handler.
5925          * 
5926          *  See the trait-level documentation for requirements.
5927          */
5928         inline void process_pending_events(struct LDKEventHandler handler);
5929 };
5930 class EventHandler {
5931 private:
5932         LDKEventHandler self;
5933 public:
5934         EventHandler(const EventHandler&) = delete;
5935         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
5936         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
5937         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
5938         ~EventHandler() { EventHandler_free(self); }
5939         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
5940         LDKEventHandler* operator &() { return &self; }
5941         LDKEventHandler* operator ->() { return &self; }
5942         const LDKEventHandler* operator &() const { return &self; }
5943         const LDKEventHandler* operator ->() const { return &self; }
5944         /**
5945          *  Handles the given [`Event`].
5946          * 
5947          *  See [`EventsProvider`] for details that must be considered when implementing this method.
5948          */
5949         inline void handle_event(struct LDKEvent event);
5950 };
5951 class ElectrumSyncClient {
5952 private:
5953         LDKElectrumSyncClient self;
5954 public:
5955         ElectrumSyncClient(const ElectrumSyncClient&) = delete;
5956         ElectrumSyncClient(ElectrumSyncClient&& o) : self(o.self) { memset(&o, 0, sizeof(ElectrumSyncClient)); }
5957         ElectrumSyncClient(LDKElectrumSyncClient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKElectrumSyncClient)); }
5958         operator LDKElectrumSyncClient() && { LDKElectrumSyncClient res = self; memset(&self, 0, sizeof(LDKElectrumSyncClient)); return res; }
5959         ~ElectrumSyncClient() { ElectrumSyncClient_free(self); }
5960         ElectrumSyncClient& operator=(ElectrumSyncClient&& o) { ElectrumSyncClient_free(self); self = o.self; memset(&o, 0, sizeof(ElectrumSyncClient)); return *this; }
5961         LDKElectrumSyncClient* operator &() { return &self; }
5962         LDKElectrumSyncClient* operator ->() { return &self; }
5963         const LDKElectrumSyncClient* operator &() const { return &self; }
5964         const LDKElectrumSyncClient* operator ->() const { return &self; }
5965 };
5966 class EsploraSyncClient {
5967 private:
5968         LDKEsploraSyncClient self;
5969 public:
5970         EsploraSyncClient(const EsploraSyncClient&) = delete;
5971         EsploraSyncClient(EsploraSyncClient&& o) : self(o.self) { memset(&o, 0, sizeof(EsploraSyncClient)); }
5972         EsploraSyncClient(LDKEsploraSyncClient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEsploraSyncClient)); }
5973         operator LDKEsploraSyncClient() && { LDKEsploraSyncClient res = self; memset(&self, 0, sizeof(LDKEsploraSyncClient)); return res; }
5974         ~EsploraSyncClient() { EsploraSyncClient_free(self); }
5975         EsploraSyncClient& operator=(EsploraSyncClient&& o) { EsploraSyncClient_free(self); self = o.self; memset(&o, 0, sizeof(EsploraSyncClient)); return *this; }
5976         LDKEsploraSyncClient* operator &() { return &self; }
5977         LDKEsploraSyncClient* operator ->() { return &self; }
5978         const LDKEsploraSyncClient* operator &() const { return &self; }
5979         const LDKEsploraSyncClient* operator ->() const { return &self; }
5980 };
5981 class Bolt11ParseError {
5982 private:
5983         LDKBolt11ParseError self;
5984 public:
5985         Bolt11ParseError(const Bolt11ParseError&) = delete;
5986         Bolt11ParseError(Bolt11ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11ParseError)); }
5987         Bolt11ParseError(LDKBolt11ParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11ParseError)); }
5988         operator LDKBolt11ParseError() && { LDKBolt11ParseError res = self; memset(&self, 0, sizeof(LDKBolt11ParseError)); return res; }
5989         ~Bolt11ParseError() { Bolt11ParseError_free(self); }
5990         Bolt11ParseError& operator=(Bolt11ParseError&& o) { Bolt11ParseError_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11ParseError)); return *this; }
5991         LDKBolt11ParseError* operator &() { return &self; }
5992         LDKBolt11ParseError* operator ->() { return &self; }
5993         const LDKBolt11ParseError* operator &() const { return &self; }
5994         const LDKBolt11ParseError* operator ->() const { return &self; }
5995 };
5996 class ParseOrSemanticError {
5997 private:
5998         LDKParseOrSemanticError self;
5999 public:
6000         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
6001         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
6002         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
6003         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
6004         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
6005         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
6006         LDKParseOrSemanticError* operator &() { return &self; }
6007         LDKParseOrSemanticError* operator ->() { return &self; }
6008         const LDKParseOrSemanticError* operator &() const { return &self; }
6009         const LDKParseOrSemanticError* operator ->() const { return &self; }
6010 };
6011 class Bolt11Invoice {
6012 private:
6013         LDKBolt11Invoice self;
6014 public:
6015         Bolt11Invoice(const Bolt11Invoice&) = delete;
6016         Bolt11Invoice(Bolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11Invoice)); }
6017         Bolt11Invoice(LDKBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11Invoice)); }
6018         operator LDKBolt11Invoice() && { LDKBolt11Invoice res = self; memset(&self, 0, sizeof(LDKBolt11Invoice)); return res; }
6019         ~Bolt11Invoice() { Bolt11Invoice_free(self); }
6020         Bolt11Invoice& operator=(Bolt11Invoice&& o) { Bolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11Invoice)); return *this; }
6021         LDKBolt11Invoice* operator &() { return &self; }
6022         LDKBolt11Invoice* operator ->() { return &self; }
6023         const LDKBolt11Invoice* operator &() const { return &self; }
6024         const LDKBolt11Invoice* operator ->() const { return &self; }
6025 };
6026 class SignedRawBolt11Invoice {
6027 private:
6028         LDKSignedRawBolt11Invoice self;
6029 public:
6030         SignedRawBolt11Invoice(const SignedRawBolt11Invoice&) = delete;
6031         SignedRawBolt11Invoice(SignedRawBolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawBolt11Invoice)); }
6032         SignedRawBolt11Invoice(LDKSignedRawBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawBolt11Invoice)); }
6033         operator LDKSignedRawBolt11Invoice() && { LDKSignedRawBolt11Invoice res = self; memset(&self, 0, sizeof(LDKSignedRawBolt11Invoice)); return res; }
6034         ~SignedRawBolt11Invoice() { SignedRawBolt11Invoice_free(self); }
6035         SignedRawBolt11Invoice& operator=(SignedRawBolt11Invoice&& o) { SignedRawBolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawBolt11Invoice)); return *this; }
6036         LDKSignedRawBolt11Invoice* operator &() { return &self; }
6037         LDKSignedRawBolt11Invoice* operator ->() { return &self; }
6038         const LDKSignedRawBolt11Invoice* operator &() const { return &self; }
6039         const LDKSignedRawBolt11Invoice* operator ->() const { return &self; }
6040 };
6041 class RawBolt11Invoice {
6042 private:
6043         LDKRawBolt11Invoice self;
6044 public:
6045         RawBolt11Invoice(const RawBolt11Invoice&) = delete;
6046         RawBolt11Invoice(RawBolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawBolt11Invoice)); }
6047         RawBolt11Invoice(LDKRawBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawBolt11Invoice)); }
6048         operator LDKRawBolt11Invoice() && { LDKRawBolt11Invoice res = self; memset(&self, 0, sizeof(LDKRawBolt11Invoice)); return res; }
6049         ~RawBolt11Invoice() { RawBolt11Invoice_free(self); }
6050         RawBolt11Invoice& operator=(RawBolt11Invoice&& o) { RawBolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(RawBolt11Invoice)); return *this; }
6051         LDKRawBolt11Invoice* operator &() { return &self; }
6052         LDKRawBolt11Invoice* operator ->() { return &self; }
6053         const LDKRawBolt11Invoice* operator &() const { return &self; }
6054         const LDKRawBolt11Invoice* operator ->() const { return &self; }
6055 };
6056 class RawDataPart {
6057 private:
6058         LDKRawDataPart self;
6059 public:
6060         RawDataPart(const RawDataPart&) = delete;
6061         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
6062         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
6063         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
6064         ~RawDataPart() { RawDataPart_free(self); }
6065         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
6066         LDKRawDataPart* operator &() { return &self; }
6067         LDKRawDataPart* operator ->() { return &self; }
6068         const LDKRawDataPart* operator &() const { return &self; }
6069         const LDKRawDataPart* operator ->() const { return &self; }
6070 };
6071 class PositiveTimestamp {
6072 private:
6073         LDKPositiveTimestamp self;
6074 public:
6075         PositiveTimestamp(const PositiveTimestamp&) = delete;
6076         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
6077         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
6078         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
6079         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
6080         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
6081         LDKPositiveTimestamp* operator &() { return &self; }
6082         LDKPositiveTimestamp* operator ->() { return &self; }
6083         const LDKPositiveTimestamp* operator &() const { return &self; }
6084         const LDKPositiveTimestamp* operator ->() const { return &self; }
6085 };
6086 class SiPrefix {
6087 private:
6088         LDKSiPrefix self;
6089 public:
6090         SiPrefix(const SiPrefix&) = delete;
6091         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
6092         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
6093         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
6094         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
6095         LDKSiPrefix* operator &() { return &self; }
6096         LDKSiPrefix* operator ->() { return &self; }
6097         const LDKSiPrefix* operator &() const { return &self; }
6098         const LDKSiPrefix* operator ->() const { return &self; }
6099 };
6100 class Currency {
6101 private:
6102         LDKCurrency self;
6103 public:
6104         Currency(const Currency&) = delete;
6105         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
6106         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
6107         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
6108         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
6109         LDKCurrency* operator &() { return &self; }
6110         LDKCurrency* operator ->() { return &self; }
6111         const LDKCurrency* operator &() const { return &self; }
6112         const LDKCurrency* operator ->() const { return &self; }
6113 };
6114 class Sha256 {
6115 private:
6116         LDKSha256 self;
6117 public:
6118         Sha256(const Sha256&) = delete;
6119         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
6120         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
6121         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
6122         ~Sha256() { Sha256_free(self); }
6123         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
6124         LDKSha256* operator &() { return &self; }
6125         LDKSha256* operator ->() { return &self; }
6126         const LDKSha256* operator &() const { return &self; }
6127         const LDKSha256* operator ->() const { return &self; }
6128 };
6129 class Description {
6130 private:
6131         LDKDescription self;
6132 public:
6133         Description(const Description&) = delete;
6134         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
6135         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
6136         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
6137         ~Description() { Description_free(self); }
6138         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
6139         LDKDescription* operator &() { return &self; }
6140         LDKDescription* operator ->() { return &self; }
6141         const LDKDescription* operator &() const { return &self; }
6142         const LDKDescription* operator ->() const { return &self; }
6143 };
6144 class PayeePubKey {
6145 private:
6146         LDKPayeePubKey self;
6147 public:
6148         PayeePubKey(const PayeePubKey&) = delete;
6149         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
6150         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
6151         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
6152         ~PayeePubKey() { PayeePubKey_free(self); }
6153         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
6154         LDKPayeePubKey* operator &() { return &self; }
6155         LDKPayeePubKey* operator ->() { return &self; }
6156         const LDKPayeePubKey* operator &() const { return &self; }
6157         const LDKPayeePubKey* operator ->() const { return &self; }
6158 };
6159 class ExpiryTime {
6160 private:
6161         LDKExpiryTime self;
6162 public:
6163         ExpiryTime(const ExpiryTime&) = delete;
6164         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
6165         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
6166         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
6167         ~ExpiryTime() { ExpiryTime_free(self); }
6168         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
6169         LDKExpiryTime* operator &() { return &self; }
6170         LDKExpiryTime* operator ->() { return &self; }
6171         const LDKExpiryTime* operator &() const { return &self; }
6172         const LDKExpiryTime* operator ->() const { return &self; }
6173 };
6174 class MinFinalCltvExpiryDelta {
6175 private:
6176         LDKMinFinalCltvExpiryDelta self;
6177 public:
6178         MinFinalCltvExpiryDelta(const MinFinalCltvExpiryDelta&) = delete;
6179         MinFinalCltvExpiryDelta(MinFinalCltvExpiryDelta&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); }
6180         MinFinalCltvExpiryDelta(LDKMinFinalCltvExpiryDelta&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); }
6181         operator LDKMinFinalCltvExpiryDelta() && { LDKMinFinalCltvExpiryDelta res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); return res; }
6182         ~MinFinalCltvExpiryDelta() { MinFinalCltvExpiryDelta_free(self); }
6183         MinFinalCltvExpiryDelta& operator=(MinFinalCltvExpiryDelta&& o) { MinFinalCltvExpiryDelta_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); return *this; }
6184         LDKMinFinalCltvExpiryDelta* operator &() { return &self; }
6185         LDKMinFinalCltvExpiryDelta* operator ->() { return &self; }
6186         const LDKMinFinalCltvExpiryDelta* operator &() const { return &self; }
6187         const LDKMinFinalCltvExpiryDelta* operator ->() const { return &self; }
6188 };
6189 class Fallback {
6190 private:
6191         LDKFallback self;
6192 public:
6193         Fallback(const Fallback&) = delete;
6194         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
6195         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
6196         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
6197         ~Fallback() { Fallback_free(self); }
6198         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
6199         LDKFallback* operator &() { return &self; }
6200         LDKFallback* operator ->() { return &self; }
6201         const LDKFallback* operator &() const { return &self; }
6202         const LDKFallback* operator ->() const { return &self; }
6203 };
6204 class Bolt11InvoiceSignature {
6205 private:
6206         LDKBolt11InvoiceSignature self;
6207 public:
6208         Bolt11InvoiceSignature(const Bolt11InvoiceSignature&) = delete;
6209         Bolt11InvoiceSignature(Bolt11InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11InvoiceSignature)); }
6210         Bolt11InvoiceSignature(LDKBolt11InvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11InvoiceSignature)); }
6211         operator LDKBolt11InvoiceSignature() && { LDKBolt11InvoiceSignature res = self; memset(&self, 0, sizeof(LDKBolt11InvoiceSignature)); return res; }
6212         ~Bolt11InvoiceSignature() { Bolt11InvoiceSignature_free(self); }
6213         Bolt11InvoiceSignature& operator=(Bolt11InvoiceSignature&& o) { Bolt11InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11InvoiceSignature)); return *this; }
6214         LDKBolt11InvoiceSignature* operator &() { return &self; }
6215         LDKBolt11InvoiceSignature* operator ->() { return &self; }
6216         const LDKBolt11InvoiceSignature* operator &() const { return &self; }
6217         const LDKBolt11InvoiceSignature* operator ->() const { return &self; }
6218 };
6219 class PrivateRoute {
6220 private:
6221         LDKPrivateRoute self;
6222 public:
6223         PrivateRoute(const PrivateRoute&) = delete;
6224         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
6225         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
6226         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
6227         ~PrivateRoute() { PrivateRoute_free(self); }
6228         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
6229         LDKPrivateRoute* operator &() { return &self; }
6230         LDKPrivateRoute* operator ->() { return &self; }
6231         const LDKPrivateRoute* operator &() const { return &self; }
6232         const LDKPrivateRoute* operator ->() const { return &self; }
6233 };
6234 class CreationError {
6235 private:
6236         LDKCreationError self;
6237 public:
6238         CreationError(const CreationError&) = delete;
6239         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
6240         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
6241         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
6242         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
6243         LDKCreationError* operator &() { return &self; }
6244         LDKCreationError* operator ->() { return &self; }
6245         const LDKCreationError* operator &() const { return &self; }
6246         const LDKCreationError* operator ->() const { return &self; }
6247 };
6248 class Bolt11SemanticError {
6249 private:
6250         LDKBolt11SemanticError self;
6251 public:
6252         Bolt11SemanticError(const Bolt11SemanticError&) = delete;
6253         Bolt11SemanticError(Bolt11SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11SemanticError)); }
6254         Bolt11SemanticError(LDKBolt11SemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11SemanticError)); }
6255         operator LDKBolt11SemanticError() && { LDKBolt11SemanticError res = self; memset(&self, 0, sizeof(LDKBolt11SemanticError)); return res; }
6256         Bolt11SemanticError& operator=(Bolt11SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(Bolt11SemanticError)); return *this; }
6257         LDKBolt11SemanticError* operator &() { return &self; }
6258         LDKBolt11SemanticError* operator ->() { return &self; }
6259         const LDKBolt11SemanticError* operator &() const { return &self; }
6260         const LDKBolt11SemanticError* operator ->() const { return &self; }
6261 };
6262 class SignOrCreationError {
6263 private:
6264         LDKSignOrCreationError self;
6265 public:
6266         SignOrCreationError(const SignOrCreationError&) = delete;
6267         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
6268         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
6269         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
6270         ~SignOrCreationError() { SignOrCreationError_free(self); }
6271         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
6272         LDKSignOrCreationError* operator &() { return &self; }
6273         LDKSignOrCreationError* operator ->() { return &self; }
6274         const LDKSignOrCreationError* operator &() const { return &self; }
6275         const LDKSignOrCreationError* operator ->() const { return &self; }
6276 };
6277 class OutPoint {
6278 private:
6279         LDKOutPoint self;
6280 public:
6281         OutPoint(const OutPoint&) = delete;
6282         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
6283         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
6284         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
6285         ~OutPoint() { OutPoint_free(self); }
6286         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
6287         LDKOutPoint* operator &() { return &self; }
6288         LDKOutPoint* operator ->() { return &self; }
6289         const LDKOutPoint* operator &() const { return &self; }
6290         const LDKOutPoint* operator ->() const { return &self; }
6291 };
6292 class BigSize {
6293 private:
6294         LDKBigSize self;
6295 public:
6296         BigSize(const BigSize&) = delete;
6297         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
6298         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
6299         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
6300         ~BigSize() { BigSize_free(self); }
6301         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
6302         LDKBigSize* operator &() { return &self; }
6303         LDKBigSize* operator ->() { return &self; }
6304         const LDKBigSize* operator &() const { return &self; }
6305         const LDKBigSize* operator ->() const { return &self; }
6306 };
6307 class Hostname {
6308 private:
6309         LDKHostname self;
6310 public:
6311         Hostname(const Hostname&) = delete;
6312         Hostname(Hostname&& o) : self(o.self) { memset(&o, 0, sizeof(Hostname)); }
6313         Hostname(LDKHostname&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHostname)); }
6314         operator LDKHostname() && { LDKHostname res = self; memset(&self, 0, sizeof(LDKHostname)); return res; }
6315         ~Hostname() { Hostname_free(self); }
6316         Hostname& operator=(Hostname&& o) { Hostname_free(self); self = o.self; memset(&o, 0, sizeof(Hostname)); return *this; }
6317         LDKHostname* operator &() { return &self; }
6318         LDKHostname* operator ->() { return &self; }
6319         const LDKHostname* operator &() const { return &self; }
6320         const LDKHostname* operator ->() const { return &self; }
6321 };
6322 class TransactionU16LenLimited {
6323 private:
6324         LDKTransactionU16LenLimited self;
6325 public:
6326         TransactionU16LenLimited(const TransactionU16LenLimited&) = delete;
6327         TransactionU16LenLimited(TransactionU16LenLimited&& o) : self(o.self) { memset(&o, 0, sizeof(TransactionU16LenLimited)); }
6328         TransactionU16LenLimited(LDKTransactionU16LenLimited&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTransactionU16LenLimited)); }
6329         operator LDKTransactionU16LenLimited() && { LDKTransactionU16LenLimited res = self; memset(&self, 0, sizeof(LDKTransactionU16LenLimited)); return res; }
6330         ~TransactionU16LenLimited() { TransactionU16LenLimited_free(self); }
6331         TransactionU16LenLimited& operator=(TransactionU16LenLimited&& o) { TransactionU16LenLimited_free(self); self = o.self; memset(&o, 0, sizeof(TransactionU16LenLimited)); return *this; }
6332         LDKTransactionU16LenLimited* operator &() { return &self; }
6333         LDKTransactionU16LenLimited* operator ->() { return &self; }
6334         const LDKTransactionU16LenLimited* operator &() const { return &self; }
6335         const LDKTransactionU16LenLimited* operator ->() const { return &self; }
6336 };
6337 class UntrustedString {
6338 private:
6339         LDKUntrustedString self;
6340 public:
6341         UntrustedString(const UntrustedString&) = delete;
6342         UntrustedString(UntrustedString&& o) : self(o.self) { memset(&o, 0, sizeof(UntrustedString)); }
6343         UntrustedString(LDKUntrustedString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUntrustedString)); }
6344         operator LDKUntrustedString() && { LDKUntrustedString res = self; memset(&self, 0, sizeof(LDKUntrustedString)); return res; }
6345         ~UntrustedString() { UntrustedString_free(self); }
6346         UntrustedString& operator=(UntrustedString&& o) { UntrustedString_free(self); self = o.self; memset(&o, 0, sizeof(UntrustedString)); return *this; }
6347         LDKUntrustedString* operator &() { return &self; }
6348         LDKUntrustedString* operator ->() { return &self; }
6349         const LDKUntrustedString* operator &() const { return &self; }
6350         const LDKUntrustedString* operator ->() const { return &self; }
6351 };
6352 class PrintableString {
6353 private:
6354         LDKPrintableString self;
6355 public:
6356         PrintableString(const PrintableString&) = delete;
6357         PrintableString(PrintableString&& o) : self(o.self) { memset(&o, 0, sizeof(PrintableString)); }
6358         PrintableString(LDKPrintableString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrintableString)); }
6359         operator LDKPrintableString() && { LDKPrintableString res = self; memset(&self, 0, sizeof(LDKPrintableString)); return res; }
6360         ~PrintableString() { PrintableString_free(self); }
6361         PrintableString& operator=(PrintableString&& o) { PrintableString_free(self); self = o.self; memset(&o, 0, sizeof(PrintableString)); return *this; }
6362         LDKPrintableString* operator &() { return &self; }
6363         LDKPrintableString* operator ->() { return &self; }
6364         const LDKPrintableString* operator &() const { return &self; }
6365         const LDKPrintableString* operator ->() const { return &self; }
6366 };
6367 class ChannelId {
6368 private:
6369         LDKChannelId self;
6370 public:
6371         ChannelId(const ChannelId&) = delete;
6372         ChannelId(ChannelId&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelId)); }
6373         ChannelId(LDKChannelId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelId)); }
6374         operator LDKChannelId() && { LDKChannelId res = self; memset(&self, 0, sizeof(LDKChannelId)); return res; }
6375         ~ChannelId() { ChannelId_free(self); }
6376         ChannelId& operator=(ChannelId&& o) { ChannelId_free(self); self = o.self; memset(&o, 0, sizeof(ChannelId)); return *this; }
6377         LDKChannelId* operator &() { return &self; }
6378         LDKChannelId* operator ->() { return &self; }
6379         const LDKChannelId* operator &() const { return &self; }
6380         const LDKChannelId* operator ->() const { return &self; }
6381 };
6382 class CustomMessageReader {
6383 private:
6384         LDKCustomMessageReader self;
6385 public:
6386         CustomMessageReader(const CustomMessageReader&) = delete;
6387         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
6388         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
6389         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
6390         ~CustomMessageReader() { CustomMessageReader_free(self); }
6391         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
6392         LDKCustomMessageReader* operator &() { return &self; }
6393         LDKCustomMessageReader* operator ->() { return &self; }
6394         const LDKCustomMessageReader* operator &() const { return &self; }
6395         const LDKCustomMessageReader* operator ->() const { return &self; }
6396         /**
6397          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
6398          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
6399          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
6400          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
6401          */
6402         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
6403 };
6404 class Type {
6405 private:
6406         LDKType self;
6407 public:
6408         Type(const Type&) = delete;
6409         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
6410         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
6411         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
6412         ~Type() { Type_free(self); }
6413         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
6414         LDKType* operator &() { return &self; }
6415         LDKType* operator ->() { return &self; }
6416         const LDKType* operator &() const { return &self; }
6417         const LDKType* operator ->() const { return &self; }
6418         /**
6419          *  Returns the type identifying the message payload.
6420          */
6421         inline uint16_t type_id();
6422         /**
6423          * Return a human-readable "debug" string describing this object
6424          */
6425         inline LDK::Str debug_str();
6426 };
6427 class ForwardNode {
6428 private:
6429         LDKForwardNode self;
6430 public:
6431         ForwardNode(const ForwardNode&) = delete;
6432         ForwardNode(ForwardNode&& o) : self(o.self) { memset(&o, 0, sizeof(ForwardNode)); }
6433         ForwardNode(LDKForwardNode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKForwardNode)); }
6434         operator LDKForwardNode() && { LDKForwardNode res = self; memset(&self, 0, sizeof(LDKForwardNode)); return res; }
6435         ~ForwardNode() { ForwardNode_free(self); }
6436         ForwardNode& operator=(ForwardNode&& o) { ForwardNode_free(self); self = o.self; memset(&o, 0, sizeof(ForwardNode)); return *this; }
6437         LDKForwardNode* operator &() { return &self; }
6438         LDKForwardNode* operator ->() { return &self; }
6439         const LDKForwardNode* operator &() const { return &self; }
6440         const LDKForwardNode* operator ->() const { return &self; }
6441 };
6442 class ForwardTlvs {
6443 private:
6444         LDKForwardTlvs self;
6445 public:
6446         ForwardTlvs(const ForwardTlvs&) = delete;
6447         ForwardTlvs(ForwardTlvs&& o) : self(o.self) { memset(&o, 0, sizeof(ForwardTlvs)); }
6448         ForwardTlvs(LDKForwardTlvs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKForwardTlvs)); }
6449         operator LDKForwardTlvs() && { LDKForwardTlvs res = self; memset(&self, 0, sizeof(LDKForwardTlvs)); return res; }
6450         ~ForwardTlvs() { ForwardTlvs_free(self); }
6451         ForwardTlvs& operator=(ForwardTlvs&& o) { ForwardTlvs_free(self); self = o.self; memset(&o, 0, sizeof(ForwardTlvs)); return *this; }
6452         LDKForwardTlvs* operator &() { return &self; }
6453         LDKForwardTlvs* operator ->() { return &self; }
6454         const LDKForwardTlvs* operator &() const { return &self; }
6455         const LDKForwardTlvs* operator ->() const { return &self; }
6456 };
6457 class ReceiveTlvs {
6458 private:
6459         LDKReceiveTlvs self;
6460 public:
6461         ReceiveTlvs(const ReceiveTlvs&) = delete;
6462         ReceiveTlvs(ReceiveTlvs&& o) : self(o.self) { memset(&o, 0, sizeof(ReceiveTlvs)); }
6463         ReceiveTlvs(LDKReceiveTlvs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReceiveTlvs)); }
6464         operator LDKReceiveTlvs() && { LDKReceiveTlvs res = self; memset(&self, 0, sizeof(LDKReceiveTlvs)); return res; }
6465         ~ReceiveTlvs() { ReceiveTlvs_free(self); }
6466         ReceiveTlvs& operator=(ReceiveTlvs&& o) { ReceiveTlvs_free(self); self = o.self; memset(&o, 0, sizeof(ReceiveTlvs)); return *this; }
6467         LDKReceiveTlvs* operator &() { return &self; }
6468         LDKReceiveTlvs* operator ->() { return &self; }
6469         const LDKReceiveTlvs* operator &() const { return &self; }
6470         const LDKReceiveTlvs* operator ->() const { return &self; }
6471 };
6472 class PaymentRelay {
6473 private:
6474         LDKPaymentRelay self;
6475 public:
6476         PaymentRelay(const PaymentRelay&) = delete;
6477         PaymentRelay(PaymentRelay&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentRelay)); }
6478         PaymentRelay(LDKPaymentRelay&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentRelay)); }
6479         operator LDKPaymentRelay() && { LDKPaymentRelay res = self; memset(&self, 0, sizeof(LDKPaymentRelay)); return res; }
6480         ~PaymentRelay() { PaymentRelay_free(self); }
6481         PaymentRelay& operator=(PaymentRelay&& o) { PaymentRelay_free(self); self = o.self; memset(&o, 0, sizeof(PaymentRelay)); return *this; }
6482         LDKPaymentRelay* operator &() { return &self; }
6483         LDKPaymentRelay* operator ->() { return &self; }
6484         const LDKPaymentRelay* operator &() const { return &self; }
6485         const LDKPaymentRelay* operator ->() const { return &self; }
6486 };
6487 class PaymentConstraints {
6488 private:
6489         LDKPaymentConstraints self;
6490 public:
6491         PaymentConstraints(const PaymentConstraints&) = delete;
6492         PaymentConstraints(PaymentConstraints&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentConstraints)); }
6493         PaymentConstraints(LDKPaymentConstraints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentConstraints)); }
6494         operator LDKPaymentConstraints() && { LDKPaymentConstraints res = self; memset(&self, 0, sizeof(LDKPaymentConstraints)); return res; }
6495         ~PaymentConstraints() { PaymentConstraints_free(self); }
6496         PaymentConstraints& operator=(PaymentConstraints&& o) { PaymentConstraints_free(self); self = o.self; memset(&o, 0, sizeof(PaymentConstraints)); return *this; }
6497         LDKPaymentConstraints* operator &() { return &self; }
6498         LDKPaymentConstraints* operator ->() { return &self; }
6499         const LDKPaymentConstraints* operator &() const { return &self; }
6500         const LDKPaymentConstraints* operator ->() const { return &self; }
6501 };
6502 class PaymentContext {
6503 private:
6504         LDKPaymentContext self;
6505 public:
6506         PaymentContext(const PaymentContext&) = delete;
6507         PaymentContext(PaymentContext&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentContext)); }
6508         PaymentContext(LDKPaymentContext&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentContext)); }
6509         operator LDKPaymentContext() && { LDKPaymentContext res = self; memset(&self, 0, sizeof(LDKPaymentContext)); return res; }
6510         ~PaymentContext() { PaymentContext_free(self); }
6511         PaymentContext& operator=(PaymentContext&& o) { PaymentContext_free(self); self = o.self; memset(&o, 0, sizeof(PaymentContext)); return *this; }
6512         LDKPaymentContext* operator &() { return &self; }
6513         LDKPaymentContext* operator ->() { return &self; }
6514         const LDKPaymentContext* operator &() const { return &self; }
6515         const LDKPaymentContext* operator ->() const { return &self; }
6516 };
6517 class UnknownPaymentContext {
6518 private:
6519         LDKUnknownPaymentContext self;
6520 public:
6521         UnknownPaymentContext(const UnknownPaymentContext&) = delete;
6522         UnknownPaymentContext(UnknownPaymentContext&& o) : self(o.self) { memset(&o, 0, sizeof(UnknownPaymentContext)); }
6523         UnknownPaymentContext(LDKUnknownPaymentContext&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnknownPaymentContext)); }
6524         operator LDKUnknownPaymentContext() && { LDKUnknownPaymentContext res = self; memset(&self, 0, sizeof(LDKUnknownPaymentContext)); return res; }
6525         ~UnknownPaymentContext() { UnknownPaymentContext_free(self); }
6526         UnknownPaymentContext& operator=(UnknownPaymentContext&& o) { UnknownPaymentContext_free(self); self = o.self; memset(&o, 0, sizeof(UnknownPaymentContext)); return *this; }
6527         LDKUnknownPaymentContext* operator &() { return &self; }
6528         LDKUnknownPaymentContext* operator ->() { return &self; }
6529         const LDKUnknownPaymentContext* operator &() const { return &self; }
6530         const LDKUnknownPaymentContext* operator ->() const { return &self; }
6531 };
6532 class Bolt12OfferContext {
6533 private:
6534         LDKBolt12OfferContext self;
6535 public:
6536         Bolt12OfferContext(const Bolt12OfferContext&) = delete;
6537         Bolt12OfferContext(Bolt12OfferContext&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12OfferContext)); }
6538         Bolt12OfferContext(LDKBolt12OfferContext&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12OfferContext)); }
6539         operator LDKBolt12OfferContext() && { LDKBolt12OfferContext res = self; memset(&self, 0, sizeof(LDKBolt12OfferContext)); return res; }
6540         ~Bolt12OfferContext() { Bolt12OfferContext_free(self); }
6541         Bolt12OfferContext& operator=(Bolt12OfferContext&& o) { Bolt12OfferContext_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12OfferContext)); return *this; }
6542         LDKBolt12OfferContext* operator &() { return &self; }
6543         LDKBolt12OfferContext* operator ->() { return &self; }
6544         const LDKBolt12OfferContext* operator &() const { return &self; }
6545         const LDKBolt12OfferContext* operator ->() const { return &self; }
6546 };
6547 class Bolt12RefundContext {
6548 private:
6549         LDKBolt12RefundContext self;
6550 public:
6551         Bolt12RefundContext(const Bolt12RefundContext&) = delete;
6552         Bolt12RefundContext(Bolt12RefundContext&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12RefundContext)); }
6553         Bolt12RefundContext(LDKBolt12RefundContext&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12RefundContext)); }
6554         operator LDKBolt12RefundContext() && { LDKBolt12RefundContext res = self; memset(&self, 0, sizeof(LDKBolt12RefundContext)); return res; }
6555         ~Bolt12RefundContext() { Bolt12RefundContext_free(self); }
6556         Bolt12RefundContext& operator=(Bolt12RefundContext&& o) { Bolt12RefundContext_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12RefundContext)); return *this; }
6557         LDKBolt12RefundContext* operator &() { return &self; }
6558         LDKBolt12RefundContext* operator ->() { return &self; }
6559         const LDKBolt12RefundContext* operator &() const { return &self; }
6560         const LDKBolt12RefundContext* operator ->() const { return &self; }
6561 };
6562 class UtxoLookupError {
6563 private:
6564         LDKUtxoLookupError self;
6565 public:
6566         UtxoLookupError(const UtxoLookupError&) = delete;
6567         UtxoLookupError(UtxoLookupError&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookupError)); }
6568         UtxoLookupError(LDKUtxoLookupError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookupError)); }
6569         operator LDKUtxoLookupError() && { LDKUtxoLookupError res = self; memset(&self, 0, sizeof(LDKUtxoLookupError)); return res; }
6570         UtxoLookupError& operator=(UtxoLookupError&& o) { self = o.self; memset(&o, 0, sizeof(UtxoLookupError)); return *this; }
6571         LDKUtxoLookupError* operator &() { return &self; }
6572         LDKUtxoLookupError* operator ->() { return &self; }
6573         const LDKUtxoLookupError* operator &() const { return &self; }
6574         const LDKUtxoLookupError* operator ->() const { return &self; }
6575 };
6576 class UtxoResult {
6577 private:
6578         LDKUtxoResult self;
6579 public:
6580         UtxoResult(const UtxoResult&) = delete;
6581         UtxoResult(UtxoResult&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoResult)); }
6582         UtxoResult(LDKUtxoResult&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoResult)); }
6583         operator LDKUtxoResult() && { LDKUtxoResult res = self; memset(&self, 0, sizeof(LDKUtxoResult)); return res; }
6584         ~UtxoResult() { UtxoResult_free(self); }
6585         UtxoResult& operator=(UtxoResult&& o) { UtxoResult_free(self); self = o.self; memset(&o, 0, sizeof(UtxoResult)); return *this; }
6586         LDKUtxoResult* operator &() { return &self; }
6587         LDKUtxoResult* operator ->() { return &self; }
6588         const LDKUtxoResult* operator &() const { return &self; }
6589         const LDKUtxoResult* operator ->() const { return &self; }
6590 };
6591 class UtxoLookup {
6592 private:
6593         LDKUtxoLookup self;
6594 public:
6595         UtxoLookup(const UtxoLookup&) = delete;
6596         UtxoLookup(UtxoLookup&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookup)); }
6597         UtxoLookup(LDKUtxoLookup&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookup)); }
6598         operator LDKUtxoLookup() && { LDKUtxoLookup res = self; memset(&self, 0, sizeof(LDKUtxoLookup)); return res; }
6599         ~UtxoLookup() { UtxoLookup_free(self); }
6600         UtxoLookup& operator=(UtxoLookup&& o) { UtxoLookup_free(self); self = o.self; memset(&o, 0, sizeof(UtxoLookup)); return *this; }
6601         LDKUtxoLookup* operator &() { return &self; }
6602         LDKUtxoLookup* operator ->() { return &self; }
6603         const LDKUtxoLookup* operator &() const { return &self; }
6604         const LDKUtxoLookup* operator ->() const { return &self; }
6605         /**
6606          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
6607          *  Returns an error if `chain_hash` is for a different chain or if such a transaction output is
6608          *  unknown.
6609          * 
6610          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
6611          */
6612         inline LDK::UtxoResult get_utxo(const uint8_t (*chain_hash)[32], uint64_t short_channel_id);
6613 };
6614 class UtxoFuture {
6615 private:
6616         LDKUtxoFuture self;
6617 public:
6618         UtxoFuture(const UtxoFuture&) = delete;
6619         UtxoFuture(UtxoFuture&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoFuture)); }
6620         UtxoFuture(LDKUtxoFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoFuture)); }
6621         operator LDKUtxoFuture() && { LDKUtxoFuture res = self; memset(&self, 0, sizeof(LDKUtxoFuture)); return res; }
6622         ~UtxoFuture() { UtxoFuture_free(self); }
6623         UtxoFuture& operator=(UtxoFuture&& o) { UtxoFuture_free(self); self = o.self; memset(&o, 0, sizeof(UtxoFuture)); return *this; }
6624         LDKUtxoFuture* operator &() { return &self; }
6625         LDKUtxoFuture* operator ->() { return &self; }
6626         const LDKUtxoFuture* operator &() const { return &self; }
6627         const LDKUtxoFuture* operator ->() const { return &self; }
6628 };
6629 class OnionMessenger {
6630 private:
6631         LDKOnionMessenger self;
6632 public:
6633         OnionMessenger(const OnionMessenger&) = delete;
6634         OnionMessenger(OnionMessenger&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessenger)); }
6635         OnionMessenger(LDKOnionMessenger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessenger)); }
6636         operator LDKOnionMessenger() && { LDKOnionMessenger res = self; memset(&self, 0, sizeof(LDKOnionMessenger)); return res; }
6637         ~OnionMessenger() { OnionMessenger_free(self); }
6638         OnionMessenger& operator=(OnionMessenger&& o) { OnionMessenger_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessenger)); return *this; }
6639         LDKOnionMessenger* operator &() { return &self; }
6640         LDKOnionMessenger* operator ->() { return &self; }
6641         const LDKOnionMessenger* operator &() const { return &self; }
6642         const LDKOnionMessenger* operator ->() const { return &self; }
6643 };
6644 class MessageRouter {
6645 private:
6646         LDKMessageRouter self;
6647 public:
6648         MessageRouter(const MessageRouter&) = delete;
6649         MessageRouter(MessageRouter&& o) : self(o.self) { memset(&o, 0, sizeof(MessageRouter)); }
6650         MessageRouter(LDKMessageRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageRouter)); }
6651         operator LDKMessageRouter() && { LDKMessageRouter res = self; memset(&self, 0, sizeof(LDKMessageRouter)); return res; }
6652         ~MessageRouter() { MessageRouter_free(self); }
6653         MessageRouter& operator=(MessageRouter&& o) { MessageRouter_free(self); self = o.self; memset(&o, 0, sizeof(MessageRouter)); return *this; }
6654         LDKMessageRouter* operator &() { return &self; }
6655         LDKMessageRouter* operator ->() { return &self; }
6656         const LDKMessageRouter* operator &() const { return &self; }
6657         const LDKMessageRouter* operator ->() const { return &self; }
6658         /**
6659          *  Returns a route for sending an [`OnionMessage`] to the given [`Destination`].
6660          */
6661         inline LDK::CResult_OnionMessagePathNoneZ find_path(struct LDKPublicKey sender, struct LDKCVec_PublicKeyZ peers, struct LDKDestination destination);
6662         /**
6663          *  Creates [`BlindedPath`]s to the `recipient` node. The nodes in `peers` are assumed to be
6664          *  direct peers with the `recipient`.
6665          */
6666         inline LDK::CResult_CVec_BlindedPathZNoneZ create_blinded_paths(struct LDKPublicKey recipient, struct LDKCVec_PublicKeyZ peers);
6667 };
6668 class DefaultMessageRouter {
6669 private:
6670         LDKDefaultMessageRouter self;
6671 public:
6672         DefaultMessageRouter(const DefaultMessageRouter&) = delete;
6673         DefaultMessageRouter(DefaultMessageRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultMessageRouter)); }
6674         DefaultMessageRouter(LDKDefaultMessageRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultMessageRouter)); }
6675         operator LDKDefaultMessageRouter() && { LDKDefaultMessageRouter res = self; memset(&self, 0, sizeof(LDKDefaultMessageRouter)); return res; }
6676         ~DefaultMessageRouter() { DefaultMessageRouter_free(self); }
6677         DefaultMessageRouter& operator=(DefaultMessageRouter&& o) { DefaultMessageRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultMessageRouter)); return *this; }
6678         LDKDefaultMessageRouter* operator &() { return &self; }
6679         LDKDefaultMessageRouter* operator ->() { return &self; }
6680         const LDKDefaultMessageRouter* operator &() const { return &self; }
6681         const LDKDefaultMessageRouter* operator ->() const { return &self; }
6682 };
6683 class OnionMessagePath {
6684 private:
6685         LDKOnionMessagePath self;
6686 public:
6687         OnionMessagePath(const OnionMessagePath&) = delete;
6688         OnionMessagePath(OnionMessagePath&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessagePath)); }
6689         OnionMessagePath(LDKOnionMessagePath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessagePath)); }
6690         operator LDKOnionMessagePath() && { LDKOnionMessagePath res = self; memset(&self, 0, sizeof(LDKOnionMessagePath)); return res; }
6691         ~OnionMessagePath() { OnionMessagePath_free(self); }
6692         OnionMessagePath& operator=(OnionMessagePath&& o) { OnionMessagePath_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessagePath)); return *this; }
6693         LDKOnionMessagePath* operator &() { return &self; }
6694         LDKOnionMessagePath* operator ->() { return &self; }
6695         const LDKOnionMessagePath* operator &() const { return &self; }
6696         const LDKOnionMessagePath* operator ->() const { return &self; }
6697 };
6698 class Destination {
6699 private:
6700         LDKDestination self;
6701 public:
6702         Destination(const Destination&) = delete;
6703         Destination(Destination&& o) : self(o.self) { memset(&o, 0, sizeof(Destination)); }
6704         Destination(LDKDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDestination)); }
6705         operator LDKDestination() && { LDKDestination res = self; memset(&self, 0, sizeof(LDKDestination)); return res; }
6706         ~Destination() { Destination_free(self); }
6707         Destination& operator=(Destination&& o) { Destination_free(self); self = o.self; memset(&o, 0, sizeof(Destination)); return *this; }
6708         LDKDestination* operator &() { return &self; }
6709         LDKDestination* operator ->() { return &self; }
6710         const LDKDestination* operator &() const { return &self; }
6711         const LDKDestination* operator ->() const { return &self; }
6712 };
6713 class SendSuccess {
6714 private:
6715         LDKSendSuccess self;
6716 public:
6717         SendSuccess(const SendSuccess&) = delete;
6718         SendSuccess(SendSuccess&& o) : self(o.self) { memset(&o, 0, sizeof(SendSuccess)); }
6719         SendSuccess(LDKSendSuccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendSuccess)); }
6720         operator LDKSendSuccess() && { LDKSendSuccess res = self; memset(&self, 0, sizeof(LDKSendSuccess)); return res; }
6721         ~SendSuccess() { SendSuccess_free(self); }
6722         SendSuccess& operator=(SendSuccess&& o) { SendSuccess_free(self); self = o.self; memset(&o, 0, sizeof(SendSuccess)); return *this; }
6723         LDKSendSuccess* operator &() { return &self; }
6724         LDKSendSuccess* operator ->() { return &self; }
6725         const LDKSendSuccess* operator &() const { return &self; }
6726         const LDKSendSuccess* operator ->() const { return &self; }
6727 };
6728 class SendError {
6729 private:
6730         LDKSendError self;
6731 public:
6732         SendError(const SendError&) = delete;
6733         SendError(SendError&& o) : self(o.self) { memset(&o, 0, sizeof(SendError)); }
6734         SendError(LDKSendError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendError)); }
6735         operator LDKSendError() && { LDKSendError res = self; memset(&self, 0, sizeof(LDKSendError)); return res; }
6736         ~SendError() { SendError_free(self); }
6737         SendError& operator=(SendError&& o) { SendError_free(self); self = o.self; memset(&o, 0, sizeof(SendError)); return *this; }
6738         LDKSendError* operator &() { return &self; }
6739         LDKSendError* operator ->() { return &self; }
6740         const LDKSendError* operator &() const { return &self; }
6741         const LDKSendError* operator ->() const { return &self; }
6742 };
6743 class CustomOnionMessageHandler {
6744 private:
6745         LDKCustomOnionMessageHandler self;
6746 public:
6747         CustomOnionMessageHandler(const CustomOnionMessageHandler&) = delete;
6748         CustomOnionMessageHandler(CustomOnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageHandler)); }
6749         CustomOnionMessageHandler(LDKCustomOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageHandler)); }
6750         operator LDKCustomOnionMessageHandler() && { LDKCustomOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageHandler)); return res; }
6751         ~CustomOnionMessageHandler() { CustomOnionMessageHandler_free(self); }
6752         CustomOnionMessageHandler& operator=(CustomOnionMessageHandler&& o) { CustomOnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageHandler)); return *this; }
6753         LDKCustomOnionMessageHandler* operator &() { return &self; }
6754         LDKCustomOnionMessageHandler* operator ->() { return &self; }
6755         const LDKCustomOnionMessageHandler* operator &() const { return &self; }
6756         const LDKCustomOnionMessageHandler* operator ->() const { return &self; }
6757         /**
6758          *  Called with the custom message that was received, returning a response to send, if any.
6759          * 
6760          *  The returned [`Self::CustomMessage`], if any, is enqueued to be sent by [`OnionMessenger`].
6761          */
6762         inline LDK::COption_OnionMessageContentsZ handle_custom_message(struct LDKOnionMessageContents msg);
6763         /**
6764          *  Read a custom message of type `message_type` from `buffer`, returning `Ok(None)` if the
6765          *  message type is unknown.
6766          */
6767         inline LDK::CResult_COption_OnionMessageContentsZDecodeErrorZ read_custom_message(uint64_t message_type, struct LDKu8slice buffer);
6768         /**
6769          *  Releases any [`Self::CustomMessage`]s that need to be sent.
6770          * 
6771          *  Typically, this is used for messages initiating a message flow rather than in response to
6772          *  another message. The latter should use the return value of [`Self::handle_custom_message`].
6773          */
6774         inline LDK::CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ release_pending_custom_messages();
6775 };
6776 class PeeledOnion {
6777 private:
6778         LDKPeeledOnion self;
6779 public:
6780         PeeledOnion(const PeeledOnion&) = delete;
6781         PeeledOnion(PeeledOnion&& o) : self(o.self) { memset(&o, 0, sizeof(PeeledOnion)); }
6782         PeeledOnion(LDKPeeledOnion&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeeledOnion)); }
6783         operator LDKPeeledOnion() && { LDKPeeledOnion res = self; memset(&self, 0, sizeof(LDKPeeledOnion)); return res; }
6784         ~PeeledOnion() { PeeledOnion_free(self); }
6785         PeeledOnion& operator=(PeeledOnion&& o) { PeeledOnion_free(self); self = o.self; memset(&o, 0, sizeof(PeeledOnion)); return *this; }
6786         LDKPeeledOnion* operator &() { return &self; }
6787         LDKPeeledOnion* operator ->() { return &self; }
6788         const LDKPeeledOnion* operator &() const { return &self; }
6789         const LDKPeeledOnion* operator ->() const { return &self; }
6790 };
6791 class FilesystemStore {
6792 private:
6793         LDKFilesystemStore self;
6794 public:
6795         FilesystemStore(const FilesystemStore&) = delete;
6796         FilesystemStore(FilesystemStore&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemStore)); }
6797         FilesystemStore(LDKFilesystemStore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemStore)); }
6798         operator LDKFilesystemStore() && { LDKFilesystemStore res = self; memset(&self, 0, sizeof(LDKFilesystemStore)); return res; }
6799         ~FilesystemStore() { FilesystemStore_free(self); }
6800         FilesystemStore& operator=(FilesystemStore&& o) { FilesystemStore_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemStore)); return *this; }
6801         LDKFilesystemStore* operator &() { return &self; }
6802         LDKFilesystemStore* operator ->() { return &self; }
6803         const LDKFilesystemStore* operator &() const { return &self; }
6804         const LDKFilesystemStore* operator ->() const { return &self; }
6805 };
6806 class TxSyncError {
6807 private:
6808         LDKTxSyncError self;
6809 public:
6810         TxSyncError(const TxSyncError&) = delete;
6811         TxSyncError(TxSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(TxSyncError)); }
6812         TxSyncError(LDKTxSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxSyncError)); }
6813         operator LDKTxSyncError() && { LDKTxSyncError res = self; memset(&self, 0, sizeof(LDKTxSyncError)); return res; }
6814         TxSyncError& operator=(TxSyncError&& o) { self = o.self; memset(&o, 0, sizeof(TxSyncError)); return *this; }
6815         LDKTxSyncError* operator &() { return &self; }
6816         LDKTxSyncError* operator ->() { return &self; }
6817         const LDKTxSyncError* operator &() const { return &self; }
6818         const LDKTxSyncError* operator ->() const { return &self; }
6819 };
6820 class NextMessageHop {
6821 private:
6822         LDKNextMessageHop self;
6823 public:
6824         NextMessageHop(const NextMessageHop&) = delete;
6825         NextMessageHop(NextMessageHop&& o) : self(o.self) { memset(&o, 0, sizeof(NextMessageHop)); }
6826         NextMessageHop(LDKNextMessageHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNextMessageHop)); }
6827         operator LDKNextMessageHop() && { LDKNextMessageHop res = self; memset(&self, 0, sizeof(LDKNextMessageHop)); return res; }
6828         ~NextMessageHop() { NextMessageHop_free(self); }
6829         NextMessageHop& operator=(NextMessageHop&& o) { NextMessageHop_free(self); self = o.self; memset(&o, 0, sizeof(NextMessageHop)); return *this; }
6830         LDKNextMessageHop* operator &() { return &self; }
6831         LDKNextMessageHop* operator ->() { return &self; }
6832         const LDKNextMessageHop* operator &() const { return &self; }
6833         const LDKNextMessageHop* operator ->() const { return &self; }
6834 };
6835 class BlindedPath {
6836 private:
6837         LDKBlindedPath self;
6838 public:
6839         BlindedPath(const BlindedPath&) = delete;
6840         BlindedPath(BlindedPath&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPath)); }
6841         BlindedPath(LDKBlindedPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPath)); }
6842         operator LDKBlindedPath() && { LDKBlindedPath res = self; memset(&self, 0, sizeof(LDKBlindedPath)); return res; }
6843         ~BlindedPath() { BlindedPath_free(self); }
6844         BlindedPath& operator=(BlindedPath&& o) { BlindedPath_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPath)); return *this; }
6845         LDKBlindedPath* operator &() { return &self; }
6846         LDKBlindedPath* operator ->() { return &self; }
6847         const LDKBlindedPath* operator &() const { return &self; }
6848         const LDKBlindedPath* operator ->() const { return &self; }
6849 };
6850 class IntroductionNode {
6851 private:
6852         LDKIntroductionNode self;
6853 public:
6854         IntroductionNode(const IntroductionNode&) = delete;
6855         IntroductionNode(IntroductionNode&& o) : self(o.self) { memset(&o, 0, sizeof(IntroductionNode)); }
6856         IntroductionNode(LDKIntroductionNode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIntroductionNode)); }
6857         operator LDKIntroductionNode() && { LDKIntroductionNode res = self; memset(&self, 0, sizeof(LDKIntroductionNode)); return res; }
6858         ~IntroductionNode() { IntroductionNode_free(self); }
6859         IntroductionNode& operator=(IntroductionNode&& o) { IntroductionNode_free(self); self = o.self; memset(&o, 0, sizeof(IntroductionNode)); return *this; }
6860         LDKIntroductionNode* operator &() { return &self; }
6861         LDKIntroductionNode* operator ->() { return &self; }
6862         const LDKIntroductionNode* operator &() const { return &self; }
6863         const LDKIntroductionNode* operator ->() const { return &self; }
6864 };
6865 class Direction {
6866 private:
6867         LDKDirection self;
6868 public:
6869         Direction(const Direction&) = delete;
6870         Direction(Direction&& o) : self(o.self) { memset(&o, 0, sizeof(Direction)); }
6871         Direction(LDKDirection&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirection)); }
6872         operator LDKDirection() && { LDKDirection res = self; memset(&self, 0, sizeof(LDKDirection)); return res; }
6873         Direction& operator=(Direction&& o) { self = o.self; memset(&o, 0, sizeof(Direction)); return *this; }
6874         LDKDirection* operator &() { return &self; }
6875         LDKDirection* operator ->() { return &self; }
6876         const LDKDirection* operator &() const { return &self; }
6877         const LDKDirection* operator ->() const { return &self; }
6878 };
6879 class NodeIdLookUp {
6880 private:
6881         LDKNodeIdLookUp self;
6882 public:
6883         NodeIdLookUp(const NodeIdLookUp&) = delete;
6884         NodeIdLookUp(NodeIdLookUp&& o) : self(o.self) { memset(&o, 0, sizeof(NodeIdLookUp)); }
6885         NodeIdLookUp(LDKNodeIdLookUp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeIdLookUp)); }
6886         operator LDKNodeIdLookUp() && { LDKNodeIdLookUp res = self; memset(&self, 0, sizeof(LDKNodeIdLookUp)); return res; }
6887         ~NodeIdLookUp() { NodeIdLookUp_free(self); }
6888         NodeIdLookUp& operator=(NodeIdLookUp&& o) { NodeIdLookUp_free(self); self = o.self; memset(&o, 0, sizeof(NodeIdLookUp)); return *this; }
6889         LDKNodeIdLookUp* operator &() { return &self; }
6890         LDKNodeIdLookUp* operator ->() { return &self; }
6891         const LDKNodeIdLookUp* operator &() const { return &self; }
6892         const LDKNodeIdLookUp* operator ->() const { return &self; }
6893         /**
6894          *  Returns the node id of the forwarding node's channel counterparty with `short_channel_id`.
6895          * 
6896          *  Here, the forwarding node is referring to the node of the [`OnionMessenger`] parameterized
6897          *  by the [`NodeIdLookUp`] and the counterparty to one of that node's peers.
6898          * 
6899          *  [`OnionMessenger`]: crate::onion_message::messenger::OnionMessenger
6900          * 
6901          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
6902          */
6903         inline LDKPublicKey next_node_id(uint64_t short_channel_id);
6904 };
6905 class EmptyNodeIdLookUp {
6906 private:
6907         LDKEmptyNodeIdLookUp self;
6908 public:
6909         EmptyNodeIdLookUp(const EmptyNodeIdLookUp&) = delete;
6910         EmptyNodeIdLookUp(EmptyNodeIdLookUp&& o) : self(o.self) { memset(&o, 0, sizeof(EmptyNodeIdLookUp)); }
6911         EmptyNodeIdLookUp(LDKEmptyNodeIdLookUp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEmptyNodeIdLookUp)); }
6912         operator LDKEmptyNodeIdLookUp() && { LDKEmptyNodeIdLookUp res = self; memset(&self, 0, sizeof(LDKEmptyNodeIdLookUp)); return res; }
6913         ~EmptyNodeIdLookUp() { EmptyNodeIdLookUp_free(self); }
6914         EmptyNodeIdLookUp& operator=(EmptyNodeIdLookUp&& o) { EmptyNodeIdLookUp_free(self); self = o.self; memset(&o, 0, sizeof(EmptyNodeIdLookUp)); return *this; }
6915         LDKEmptyNodeIdLookUp* operator &() { return &self; }
6916         LDKEmptyNodeIdLookUp* operator ->() { return &self; }
6917         const LDKEmptyNodeIdLookUp* operator &() const { return &self; }
6918         const LDKEmptyNodeIdLookUp* operator ->() const { return &self; }
6919 };
6920 class BlindedHop {
6921 private:
6922         LDKBlindedHop self;
6923 public:
6924         BlindedHop(const BlindedHop&) = delete;
6925         BlindedHop(BlindedHop&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHop)); }
6926         BlindedHop(LDKBlindedHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHop)); }
6927         operator LDKBlindedHop() && { LDKBlindedHop res = self; memset(&self, 0, sizeof(LDKBlindedHop)); return res; }
6928         ~BlindedHop() { BlindedHop_free(self); }
6929         BlindedHop& operator=(BlindedHop&& o) { BlindedHop_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHop)); return *this; }
6930         LDKBlindedHop* operator &() { return &self; }
6931         LDKBlindedHop* operator ->() { return &self; }
6932         const LDKBlindedHop* operator &() const { return &self; }
6933         const LDKBlindedHop* operator ->() const { return &self; }
6934 };
6935 class InvoiceError {
6936 private:
6937         LDKInvoiceError self;
6938 public:
6939         InvoiceError(const InvoiceError&) = delete;
6940         InvoiceError(InvoiceError&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceError)); }
6941         InvoiceError(LDKInvoiceError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceError)); }
6942         operator LDKInvoiceError() && { LDKInvoiceError res = self; memset(&self, 0, sizeof(LDKInvoiceError)); return res; }
6943         ~InvoiceError() { InvoiceError_free(self); }
6944         InvoiceError& operator=(InvoiceError&& o) { InvoiceError_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceError)); return *this; }
6945         LDKInvoiceError* operator &() { return &self; }
6946         LDKInvoiceError* operator ->() { return &self; }
6947         const LDKInvoiceError* operator &() const { return &self; }
6948         const LDKInvoiceError* operator ->() const { return &self; }
6949 };
6950 class ErroneousField {
6951 private:
6952         LDKErroneousField self;
6953 public:
6954         ErroneousField(const ErroneousField&) = delete;
6955         ErroneousField(ErroneousField&& o) : self(o.self) { memset(&o, 0, sizeof(ErroneousField)); }
6956         ErroneousField(LDKErroneousField&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroneousField)); }
6957         operator LDKErroneousField() && { LDKErroneousField res = self; memset(&self, 0, sizeof(LDKErroneousField)); return res; }
6958         ~ErroneousField() { ErroneousField_free(self); }
6959         ErroneousField& operator=(ErroneousField&& o) { ErroneousField_free(self); self = o.self; memset(&o, 0, sizeof(ErroneousField)); return *this; }
6960         LDKErroneousField* operator &() { return &self; }
6961         LDKErroneousField* operator ->() { return &self; }
6962         const LDKErroneousField* operator &() const { return &self; }
6963         const LDKErroneousField* operator ->() const { return &self; }
6964 };
6965 class TrackedSpendableOutput {
6966 private:
6967         LDKTrackedSpendableOutput self;
6968 public:
6969         TrackedSpendableOutput(const TrackedSpendableOutput&) = delete;
6970         TrackedSpendableOutput(TrackedSpendableOutput&& o) : self(o.self) { memset(&o, 0, sizeof(TrackedSpendableOutput)); }
6971         TrackedSpendableOutput(LDKTrackedSpendableOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrackedSpendableOutput)); }
6972         operator LDKTrackedSpendableOutput() && { LDKTrackedSpendableOutput res = self; memset(&self, 0, sizeof(LDKTrackedSpendableOutput)); return res; }
6973         ~TrackedSpendableOutput() { TrackedSpendableOutput_free(self); }
6974         TrackedSpendableOutput& operator=(TrackedSpendableOutput&& o) { TrackedSpendableOutput_free(self); self = o.self; memset(&o, 0, sizeof(TrackedSpendableOutput)); return *this; }
6975         LDKTrackedSpendableOutput* operator &() { return &self; }
6976         LDKTrackedSpendableOutput* operator ->() { return &self; }
6977         const LDKTrackedSpendableOutput* operator &() const { return &self; }
6978         const LDKTrackedSpendableOutput* operator ->() const { return &self; }
6979 };
6980 class OutputSpendStatus {
6981 private:
6982         LDKOutputSpendStatus self;
6983 public:
6984         OutputSpendStatus(const OutputSpendStatus&) = delete;
6985         OutputSpendStatus(OutputSpendStatus&& o) : self(o.self) { memset(&o, 0, sizeof(OutputSpendStatus)); }
6986         OutputSpendStatus(LDKOutputSpendStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutputSpendStatus)); }
6987         operator LDKOutputSpendStatus() && { LDKOutputSpendStatus res = self; memset(&self, 0, sizeof(LDKOutputSpendStatus)); return res; }
6988         ~OutputSpendStatus() { OutputSpendStatus_free(self); }
6989         OutputSpendStatus& operator=(OutputSpendStatus&& o) { OutputSpendStatus_free(self); self = o.self; memset(&o, 0, sizeof(OutputSpendStatus)); return *this; }
6990         LDKOutputSpendStatus* operator &() { return &self; }
6991         LDKOutputSpendStatus* operator ->() { return &self; }
6992         const LDKOutputSpendStatus* operator &() const { return &self; }
6993         const LDKOutputSpendStatus* operator ->() const { return &self; }
6994 };
6995 class OutputSweeper {
6996 private:
6997         LDKOutputSweeper self;
6998 public:
6999         OutputSweeper(const OutputSweeper&) = delete;
7000         OutputSweeper(OutputSweeper&& o) : self(o.self) { memset(&o, 0, sizeof(OutputSweeper)); }
7001         OutputSweeper(LDKOutputSweeper&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutputSweeper)); }
7002         operator LDKOutputSweeper() && { LDKOutputSweeper res = self; memset(&self, 0, sizeof(LDKOutputSweeper)); return res; }
7003         ~OutputSweeper() { OutputSweeper_free(self); }
7004         OutputSweeper& operator=(OutputSweeper&& o) { OutputSweeper_free(self); self = o.self; memset(&o, 0, sizeof(OutputSweeper)); return *this; }
7005         LDKOutputSweeper* operator &() { return &self; }
7006         LDKOutputSweeper* operator ->() { return &self; }
7007         const LDKOutputSweeper* operator &() const { return &self; }
7008         const LDKOutputSweeper* operator ->() const { return &self; }
7009 };
7010 class SpendingDelay {
7011 private:
7012         LDKSpendingDelay self;
7013 public:
7014         SpendingDelay(const SpendingDelay&) = delete;
7015         SpendingDelay(SpendingDelay&& o) : self(o.self) { memset(&o, 0, sizeof(SpendingDelay)); }
7016         SpendingDelay(LDKSpendingDelay&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendingDelay)); }
7017         operator LDKSpendingDelay() && { LDKSpendingDelay res = self; memset(&self, 0, sizeof(LDKSpendingDelay)); return res; }
7018         ~SpendingDelay() { SpendingDelay_free(self); }
7019         SpendingDelay& operator=(SpendingDelay&& o) { SpendingDelay_free(self); self = o.self; memset(&o, 0, sizeof(SpendingDelay)); return *this; }
7020         LDKSpendingDelay* operator &() { return &self; }
7021         LDKSpendingDelay* operator ->() { return &self; }
7022         const LDKSpendingDelay* operator &() const { return &self; }
7023         const LDKSpendingDelay* operator ->() const { return &self; }
7024 };
7025 class DelayedPaymentBasepoint {
7026 private:
7027         LDKDelayedPaymentBasepoint self;
7028 public:
7029         DelayedPaymentBasepoint(const DelayedPaymentBasepoint&) = delete;
7030         DelayedPaymentBasepoint(DelayedPaymentBasepoint&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentBasepoint)); }
7031         DelayedPaymentBasepoint(LDKDelayedPaymentBasepoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentBasepoint)); }
7032         operator LDKDelayedPaymentBasepoint() && { LDKDelayedPaymentBasepoint res = self; memset(&self, 0, sizeof(LDKDelayedPaymentBasepoint)); return res; }
7033         ~DelayedPaymentBasepoint() { DelayedPaymentBasepoint_free(self); }
7034         DelayedPaymentBasepoint& operator=(DelayedPaymentBasepoint&& o) { DelayedPaymentBasepoint_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentBasepoint)); return *this; }
7035         LDKDelayedPaymentBasepoint* operator &() { return &self; }
7036         LDKDelayedPaymentBasepoint* operator ->() { return &self; }
7037         const LDKDelayedPaymentBasepoint* operator &() const { return &self; }
7038         const LDKDelayedPaymentBasepoint* operator ->() const { return &self; }
7039 };
7040 class DelayedPaymentKey {
7041 private:
7042         LDKDelayedPaymentKey self;
7043 public:
7044         DelayedPaymentKey(const DelayedPaymentKey&) = delete;
7045         DelayedPaymentKey(DelayedPaymentKey&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentKey)); }
7046         DelayedPaymentKey(LDKDelayedPaymentKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentKey)); }
7047         operator LDKDelayedPaymentKey() && { LDKDelayedPaymentKey res = self; memset(&self, 0, sizeof(LDKDelayedPaymentKey)); return res; }
7048         ~DelayedPaymentKey() { DelayedPaymentKey_free(self); }
7049         DelayedPaymentKey& operator=(DelayedPaymentKey&& o) { DelayedPaymentKey_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentKey)); return *this; }
7050         LDKDelayedPaymentKey* operator &() { return &self; }
7051         LDKDelayedPaymentKey* operator ->() { return &self; }
7052         const LDKDelayedPaymentKey* operator &() const { return &self; }
7053         const LDKDelayedPaymentKey* operator ->() const { return &self; }
7054 };
7055 class HtlcBasepoint {
7056 private:
7057         LDKHtlcBasepoint self;
7058 public:
7059         HtlcBasepoint(const HtlcBasepoint&) = delete;
7060         HtlcBasepoint(HtlcBasepoint&& o) : self(o.self) { memset(&o, 0, sizeof(HtlcBasepoint)); }
7061         HtlcBasepoint(LDKHtlcBasepoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHtlcBasepoint)); }
7062         operator LDKHtlcBasepoint() && { LDKHtlcBasepoint res = self; memset(&self, 0, sizeof(LDKHtlcBasepoint)); return res; }
7063         ~HtlcBasepoint() { HtlcBasepoint_free(self); }
7064         HtlcBasepoint& operator=(HtlcBasepoint&& o) { HtlcBasepoint_free(self); self = o.self; memset(&o, 0, sizeof(HtlcBasepoint)); return *this; }
7065         LDKHtlcBasepoint* operator &() { return &self; }
7066         LDKHtlcBasepoint* operator ->() { return &self; }
7067         const LDKHtlcBasepoint* operator &() const { return &self; }
7068         const LDKHtlcBasepoint* operator ->() const { return &self; }
7069 };
7070 class HtlcKey {
7071 private:
7072         LDKHtlcKey self;
7073 public:
7074         HtlcKey(const HtlcKey&) = delete;
7075         HtlcKey(HtlcKey&& o) : self(o.self) { memset(&o, 0, sizeof(HtlcKey)); }
7076         HtlcKey(LDKHtlcKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHtlcKey)); }
7077         operator LDKHtlcKey() && { LDKHtlcKey res = self; memset(&self, 0, sizeof(LDKHtlcKey)); return res; }
7078         ~HtlcKey() { HtlcKey_free(self); }
7079         HtlcKey& operator=(HtlcKey&& o) { HtlcKey_free(self); self = o.self; memset(&o, 0, sizeof(HtlcKey)); return *this; }
7080         LDKHtlcKey* operator &() { return &self; }
7081         LDKHtlcKey* operator ->() { return &self; }
7082         const LDKHtlcKey* operator &() const { return &self; }
7083         const LDKHtlcKey* operator ->() const { return &self; }
7084 };
7085 class RevocationBasepoint {
7086 private:
7087         LDKRevocationBasepoint self;
7088 public:
7089         RevocationBasepoint(const RevocationBasepoint&) = delete;
7090         RevocationBasepoint(RevocationBasepoint&& o) : self(o.self) { memset(&o, 0, sizeof(RevocationBasepoint)); }
7091         RevocationBasepoint(LDKRevocationBasepoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevocationBasepoint)); }
7092         operator LDKRevocationBasepoint() && { LDKRevocationBasepoint res = self; memset(&self, 0, sizeof(LDKRevocationBasepoint)); return res; }
7093         ~RevocationBasepoint() { RevocationBasepoint_free(self); }
7094         RevocationBasepoint& operator=(RevocationBasepoint&& o) { RevocationBasepoint_free(self); self = o.self; memset(&o, 0, sizeof(RevocationBasepoint)); return *this; }
7095         LDKRevocationBasepoint* operator &() { return &self; }
7096         LDKRevocationBasepoint* operator ->() { return &self; }
7097         const LDKRevocationBasepoint* operator &() const { return &self; }
7098         const LDKRevocationBasepoint* operator ->() const { return &self; }
7099 };
7100 class RevocationKey {
7101 private:
7102         LDKRevocationKey self;
7103 public:
7104         RevocationKey(const RevocationKey&) = delete;
7105         RevocationKey(RevocationKey&& o) : self(o.self) { memset(&o, 0, sizeof(RevocationKey)); }
7106         RevocationKey(LDKRevocationKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevocationKey)); }
7107         operator LDKRevocationKey() && { LDKRevocationKey res = self; memset(&self, 0, sizeof(LDKRevocationKey)); return res; }
7108         ~RevocationKey() { RevocationKey_free(self); }
7109         RevocationKey& operator=(RevocationKey&& o) { RevocationKey_free(self); self = o.self; memset(&o, 0, sizeof(RevocationKey)); return *this; }
7110         LDKRevocationKey* operator &() { return &self; }
7111         LDKRevocationKey* operator ->() { return &self; }
7112         const LDKRevocationKey* operator &() const { return &self; }
7113         const LDKRevocationKey* operator ->() const { return &self; }
7114 };
7115 class MonitorUpdateId {
7116 private:
7117         LDKMonitorUpdateId self;
7118 public:
7119         MonitorUpdateId(const MonitorUpdateId&) = delete;
7120         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
7121         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
7122         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
7123         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
7124         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
7125         LDKMonitorUpdateId* operator &() { return &self; }
7126         LDKMonitorUpdateId* operator ->() { return &self; }
7127         const LDKMonitorUpdateId* operator &() const { return &self; }
7128         const LDKMonitorUpdateId* operator ->() const { return &self; }
7129 };
7130 class Persist {
7131 private:
7132         LDKPersist self;
7133 public:
7134         Persist(const Persist&) = delete;
7135         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
7136         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
7137         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
7138         ~Persist() { Persist_free(self); }
7139         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
7140         LDKPersist* operator &() { return &self; }
7141         LDKPersist* operator ->() { return &self; }
7142         const LDKPersist* operator &() const { return &self; }
7143         const LDKPersist* operator ->() const { return &self; }
7144         /**
7145          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
7146          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
7147          * 
7148          *  The data can be stored any way you want, but the identifier provided by LDK is the
7149          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
7150          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
7151          * 
7152          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
7153          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
7154          * 
7155          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
7156          *  and [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
7157          * 
7158          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
7159          *  [`Writeable::write`]: crate::util::ser::Writeable::write
7160          */
7161         inline LDK::ChannelMonitorUpdateStatus persist_new_channel(struct LDKOutPoint channel_funding_outpoint, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
7162         /**
7163          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
7164          *  update.
7165          * 
7166          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
7167          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
7168          *  details.
7169          * 
7170          *  During blockchain synchronization operations, and in some rare cases, this may be called with
7171          *  no [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
7172          *  Note that after the full [`ChannelMonitor`] is persisted any previous
7173          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
7174          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
7175          * 
7176          *  If an implementer chooses to persist the updates only, they need to make
7177          *  sure that all the updates are applied to the `ChannelMonitors` *before*
7178          *  the set of channel monitors is given to the `ChannelManager`
7179          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
7180          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
7181          *  persisted, then there is no need to persist individual updates.
7182          * 
7183          *  Note that there could be a performance tradeoff between persisting complete
7184          *  channel monitors on every update vs. persisting only updates and applying
7185          *  them in batches. The size of each monitor grows `O(number of state updates)`
7186          *  whereas updates are small and `O(1)`.
7187          * 
7188          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
7189          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
7190          * 
7191          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
7192          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
7193          *  [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
7194          * 
7195          *  [`Writeable::write`]: crate::util::ser::Writeable::write
7196          * 
7197          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
7198          */
7199         inline LDK::ChannelMonitorUpdateStatus update_persisted_channel(struct LDKOutPoint channel_funding_outpoint, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
7200         /**
7201          *  Prevents the channel monitor from being loaded on startup.
7202          * 
7203          *  Archiving the data in a backup location (rather than deleting it fully) is useful for
7204          *  hedging against data loss in case of unexpected failure.
7205          */
7206         inline void archive_persisted_channel(struct LDKOutPoint channel_funding_outpoint);
7207 };
7208 class LockedChannelMonitor {
7209 private:
7210         LDKLockedChannelMonitor self;
7211 public:
7212         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
7213         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
7214         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
7215         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
7216         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
7217         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
7218         LDKLockedChannelMonitor* operator &() { return &self; }
7219         LDKLockedChannelMonitor* operator ->() { return &self; }
7220         const LDKLockedChannelMonitor* operator &() const { return &self; }
7221         const LDKLockedChannelMonitor* operator ->() const { return &self; }
7222 };
7223 class ChainMonitor {
7224 private:
7225         LDKChainMonitor self;
7226 public:
7227         ChainMonitor(const ChainMonitor&) = delete;
7228         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
7229         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
7230         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
7231         ~ChainMonitor() { ChainMonitor_free(self); }
7232         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
7233         LDKChainMonitor* operator &() { return &self; }
7234         LDKChainMonitor* operator ->() { return &self; }
7235         const LDKChainMonitor* operator &() const { return &self; }
7236         const LDKChainMonitor* operator ->() const { return &self; }
7237 };
7238 class CResult_HtlcKeyDecodeErrorZ {
7239 private:
7240         LDKCResult_HtlcKeyDecodeErrorZ self;
7241 public:
7242         CResult_HtlcKeyDecodeErrorZ(const CResult_HtlcKeyDecodeErrorZ&) = delete;
7243         CResult_HtlcKeyDecodeErrorZ(CResult_HtlcKeyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HtlcKeyDecodeErrorZ)); }
7244         CResult_HtlcKeyDecodeErrorZ(LDKCResult_HtlcKeyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HtlcKeyDecodeErrorZ)); }
7245         operator LDKCResult_HtlcKeyDecodeErrorZ() && { LDKCResult_HtlcKeyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HtlcKeyDecodeErrorZ)); return res; }
7246         ~CResult_HtlcKeyDecodeErrorZ() { CResult_HtlcKeyDecodeErrorZ_free(self); }
7247         CResult_HtlcKeyDecodeErrorZ& operator=(CResult_HtlcKeyDecodeErrorZ&& o) { CResult_HtlcKeyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HtlcKeyDecodeErrorZ)); return *this; }
7248         LDKCResult_HtlcKeyDecodeErrorZ* operator &() { return &self; }
7249         LDKCResult_HtlcKeyDecodeErrorZ* operator ->() { return &self; }
7250         const LDKCResult_HtlcKeyDecodeErrorZ* operator &() const { return &self; }
7251         const LDKCResult_HtlcKeyDecodeErrorZ* operator ->() const { return &self; }
7252 };
7253 class CResult_TransactionU16LenLimitedNoneZ {
7254 private:
7255         LDKCResult_TransactionU16LenLimitedNoneZ self;
7256 public:
7257         CResult_TransactionU16LenLimitedNoneZ(const CResult_TransactionU16LenLimitedNoneZ&) = delete;
7258         CResult_TransactionU16LenLimitedNoneZ(CResult_TransactionU16LenLimitedNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedNoneZ)); }
7259         CResult_TransactionU16LenLimitedNoneZ(LDKCResult_TransactionU16LenLimitedNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionU16LenLimitedNoneZ)); }
7260         operator LDKCResult_TransactionU16LenLimitedNoneZ() && { LDKCResult_TransactionU16LenLimitedNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionU16LenLimitedNoneZ)); return res; }
7261         ~CResult_TransactionU16LenLimitedNoneZ() { CResult_TransactionU16LenLimitedNoneZ_free(self); }
7262         CResult_TransactionU16LenLimitedNoneZ& operator=(CResult_TransactionU16LenLimitedNoneZ&& o) { CResult_TransactionU16LenLimitedNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedNoneZ)); return *this; }
7263         LDKCResult_TransactionU16LenLimitedNoneZ* operator &() { return &self; }
7264         LDKCResult_TransactionU16LenLimitedNoneZ* operator ->() { return &self; }
7265         const LDKCResult_TransactionU16LenLimitedNoneZ* operator &() const { return &self; }
7266         const LDKCResult_TransactionU16LenLimitedNoneZ* operator ->() const { return &self; }
7267 };
7268 class CVec_TrackedSpendableOutputZ {
7269 private:
7270         LDKCVec_TrackedSpendableOutputZ self;
7271 public:
7272         CVec_TrackedSpendableOutputZ(const CVec_TrackedSpendableOutputZ&) = delete;
7273         CVec_TrackedSpendableOutputZ(CVec_TrackedSpendableOutputZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TrackedSpendableOutputZ)); }
7274         CVec_TrackedSpendableOutputZ(LDKCVec_TrackedSpendableOutputZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TrackedSpendableOutputZ)); }
7275         operator LDKCVec_TrackedSpendableOutputZ() && { LDKCVec_TrackedSpendableOutputZ res = self; memset(&self, 0, sizeof(LDKCVec_TrackedSpendableOutputZ)); return res; }
7276         ~CVec_TrackedSpendableOutputZ() { CVec_TrackedSpendableOutputZ_free(self); }
7277         CVec_TrackedSpendableOutputZ& operator=(CVec_TrackedSpendableOutputZ&& o) { CVec_TrackedSpendableOutputZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TrackedSpendableOutputZ)); return *this; }
7278         LDKCVec_TrackedSpendableOutputZ* operator &() { return &self; }
7279         LDKCVec_TrackedSpendableOutputZ* operator ->() { return &self; }
7280         const LDKCVec_TrackedSpendableOutputZ* operator &() const { return &self; }
7281         const LDKCVec_TrackedSpendableOutputZ* operator ->() const { return &self; }
7282 };
7283 class CResult_LockedChannelMonitorNoneZ {
7284 private:
7285         LDKCResult_LockedChannelMonitorNoneZ self;
7286 public:
7287         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
7288         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
7289         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
7290         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
7291         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
7292         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
7293         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
7294         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
7295         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
7296         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
7297 };
7298 class CVec_C2Tuple_BlindedPayInfoBlindedPathZZ {
7299 private:
7300         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ self;
7301 public:
7302         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(const CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&) = delete;
7303         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); }
7304         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); }
7305         operator LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ() && { LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); return res; }
7306         ~CVec_C2Tuple_BlindedPayInfoBlindedPathZZ() { CVec_C2Tuple_BlindedPayInfoBlindedPathZZ_free(self); }
7307         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; }
7308         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator &() { return &self; }
7309         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator ->() { return &self; }
7310         const LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator &() const { return &self; }
7311         const LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator ->() const { return &self; }
7312 };
7313 class CResult_PhantomRouteHintsDecodeErrorZ {
7314 private:
7315         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
7316 public:
7317         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
7318         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
7319         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
7320         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
7321         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
7322         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
7323         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
7324         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
7325         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
7326         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
7327 };
7328 class CResult_FundingCreatedDecodeErrorZ {
7329 private:
7330         LDKCResult_FundingCreatedDecodeErrorZ self;
7331 public:
7332         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
7333         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
7334         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
7335         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
7336         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
7337         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
7338         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
7339         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
7340         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
7341         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
7342 };
7343 class CVec_C2Tuple_u32TxOutZZ {
7344 private:
7345         LDKCVec_C2Tuple_u32TxOutZZ self;
7346 public:
7347         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
7348         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
7349         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
7350         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
7351         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
7352         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; }
7353         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
7354         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
7355         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
7356         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
7357 };
7358 class CResult_RetryDecodeErrorZ {
7359 private:
7360         LDKCResult_RetryDecodeErrorZ self;
7361 public:
7362         CResult_RetryDecodeErrorZ(const CResult_RetryDecodeErrorZ&) = delete;
7363         CResult_RetryDecodeErrorZ(CResult_RetryDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RetryDecodeErrorZ)); }
7364         CResult_RetryDecodeErrorZ(LDKCResult_RetryDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RetryDecodeErrorZ)); }
7365         operator LDKCResult_RetryDecodeErrorZ() && { LDKCResult_RetryDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RetryDecodeErrorZ)); return res; }
7366         ~CResult_RetryDecodeErrorZ() { CResult_RetryDecodeErrorZ_free(self); }
7367         CResult_RetryDecodeErrorZ& operator=(CResult_RetryDecodeErrorZ&& o) { CResult_RetryDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RetryDecodeErrorZ)); return *this; }
7368         LDKCResult_RetryDecodeErrorZ* operator &() { return &self; }
7369         LDKCResult_RetryDecodeErrorZ* operator ->() { return &self; }
7370         const LDKCResult_RetryDecodeErrorZ* operator &() const { return &self; }
7371         const LDKCResult_RetryDecodeErrorZ* operator ->() const { return &self; }
7372 };
7373 class CResult_BlindedForwardDecodeErrorZ {
7374 private:
7375         LDKCResult_BlindedForwardDecodeErrorZ self;
7376 public:
7377         CResult_BlindedForwardDecodeErrorZ(const CResult_BlindedForwardDecodeErrorZ&) = delete;
7378         CResult_BlindedForwardDecodeErrorZ(CResult_BlindedForwardDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedForwardDecodeErrorZ)); }
7379         CResult_BlindedForwardDecodeErrorZ(LDKCResult_BlindedForwardDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedForwardDecodeErrorZ)); }
7380         operator LDKCResult_BlindedForwardDecodeErrorZ() && { LDKCResult_BlindedForwardDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedForwardDecodeErrorZ)); return res; }
7381         ~CResult_BlindedForwardDecodeErrorZ() { CResult_BlindedForwardDecodeErrorZ_free(self); }
7382         CResult_BlindedForwardDecodeErrorZ& operator=(CResult_BlindedForwardDecodeErrorZ&& o) { CResult_BlindedForwardDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedForwardDecodeErrorZ)); return *this; }
7383         LDKCResult_BlindedForwardDecodeErrorZ* operator &() { return &self; }
7384         LDKCResult_BlindedForwardDecodeErrorZ* operator ->() { return &self; }
7385         const LDKCResult_BlindedForwardDecodeErrorZ* operator &() const { return &self; }
7386         const LDKCResult_BlindedForwardDecodeErrorZ* operator ->() const { return &self; }
7387 };
7388 class CResult_ChannelInfoDecodeErrorZ {
7389 private:
7390         LDKCResult_ChannelInfoDecodeErrorZ self;
7391 public:
7392         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
7393         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
7394         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
7395         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
7396         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
7397         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
7398         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
7399         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
7400         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
7401         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
7402 };
7403 class COption_PaymentContextZ {
7404 private:
7405         LDKCOption_PaymentContextZ self;
7406 public:
7407         COption_PaymentContextZ(const COption_PaymentContextZ&) = delete;
7408         COption_PaymentContextZ(COption_PaymentContextZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentContextZ)); }
7409         COption_PaymentContextZ(LDKCOption_PaymentContextZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentContextZ)); }
7410         operator LDKCOption_PaymentContextZ() && { LDKCOption_PaymentContextZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentContextZ)); return res; }
7411         ~COption_PaymentContextZ() { COption_PaymentContextZ_free(self); }
7412         COption_PaymentContextZ& operator=(COption_PaymentContextZ&& o) { COption_PaymentContextZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentContextZ)); return *this; }
7413         LDKCOption_PaymentContextZ* operator &() { return &self; }
7414         LDKCOption_PaymentContextZ* operator ->() { return &self; }
7415         const LDKCOption_PaymentContextZ* operator &() const { return &self; }
7416         const LDKCOption_PaymentContextZ* operator ->() const { return &self; }
7417 };
7418 class COption_MaxDustHTLCExposureZ {
7419 private:
7420         LDKCOption_MaxDustHTLCExposureZ self;
7421 public:
7422         COption_MaxDustHTLCExposureZ(const COption_MaxDustHTLCExposureZ&) = delete;
7423         COption_MaxDustHTLCExposureZ(COption_MaxDustHTLCExposureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MaxDustHTLCExposureZ)); }
7424         COption_MaxDustHTLCExposureZ(LDKCOption_MaxDustHTLCExposureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MaxDustHTLCExposureZ)); }
7425         operator LDKCOption_MaxDustHTLCExposureZ() && { LDKCOption_MaxDustHTLCExposureZ res = self; memset(&self, 0, sizeof(LDKCOption_MaxDustHTLCExposureZ)); return res; }
7426         ~COption_MaxDustHTLCExposureZ() { COption_MaxDustHTLCExposureZ_free(self); }
7427         COption_MaxDustHTLCExposureZ& operator=(COption_MaxDustHTLCExposureZ&& o) { COption_MaxDustHTLCExposureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MaxDustHTLCExposureZ)); return *this; }
7428         LDKCOption_MaxDustHTLCExposureZ* operator &() { return &self; }
7429         LDKCOption_MaxDustHTLCExposureZ* operator ->() { return &self; }
7430         const LDKCOption_MaxDustHTLCExposureZ* operator &() const { return &self; }
7431         const LDKCOption_MaxDustHTLCExposureZ* operator ->() const { return &self; }
7432 };
7433 class COption_OffersMessageZ {
7434 private:
7435         LDKCOption_OffersMessageZ self;
7436 public:
7437         COption_OffersMessageZ(const COption_OffersMessageZ&) = delete;
7438         COption_OffersMessageZ(COption_OffersMessageZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_OffersMessageZ)); }
7439         COption_OffersMessageZ(LDKCOption_OffersMessageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_OffersMessageZ)); }
7440         operator LDKCOption_OffersMessageZ() && { LDKCOption_OffersMessageZ res = self; memset(&self, 0, sizeof(LDKCOption_OffersMessageZ)); return res; }
7441         ~COption_OffersMessageZ() { COption_OffersMessageZ_free(self); }
7442         COption_OffersMessageZ& operator=(COption_OffersMessageZ&& o) { COption_OffersMessageZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_OffersMessageZ)); return *this; }
7443         LDKCOption_OffersMessageZ* operator &() { return &self; }
7444         LDKCOption_OffersMessageZ* operator ->() { return &self; }
7445         const LDKCOption_OffersMessageZ* operator &() const { return &self; }
7446         const LDKCOption_OffersMessageZ* operator ->() const { return &self; }
7447 };
7448 class CResult_CVec_u8ZPeerHandleErrorZ {
7449 private:
7450         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
7451 public:
7452         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
7453         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
7454         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
7455         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
7456         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
7457         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; }
7458         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
7459         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
7460         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
7461         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
7462 };
7463 class COption_NetworkUpdateZ {
7464 private:
7465         LDKCOption_NetworkUpdateZ self;
7466 public:
7467         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
7468         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
7469         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
7470         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
7471         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
7472         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
7473         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
7474         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
7475         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
7476         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
7477 };
7478 class COption_u64Z {
7479 private:
7480         LDKCOption_u64Z self;
7481 public:
7482         COption_u64Z(const COption_u64Z&) = delete;
7483         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
7484         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
7485         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
7486         ~COption_u64Z() { COption_u64Z_free(self); }
7487         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
7488         LDKCOption_u64Z* operator &() { return &self; }
7489         LDKCOption_u64Z* operator ->() { return &self; }
7490         const LDKCOption_u64Z* operator &() const { return &self; }
7491         const LDKCOption_u64Z* operator ->() const { return &self; }
7492 };
7493 class CResult_OnionPacketDecodeErrorZ {
7494 private:
7495         LDKCResult_OnionPacketDecodeErrorZ self;
7496 public:
7497         CResult_OnionPacketDecodeErrorZ(const CResult_OnionPacketDecodeErrorZ&) = delete;
7498         CResult_OnionPacketDecodeErrorZ(CResult_OnionPacketDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionPacketDecodeErrorZ)); }
7499         CResult_OnionPacketDecodeErrorZ(LDKCResult_OnionPacketDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionPacketDecodeErrorZ)); }
7500         operator LDKCResult_OnionPacketDecodeErrorZ() && { LDKCResult_OnionPacketDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionPacketDecodeErrorZ)); return res; }
7501         ~CResult_OnionPacketDecodeErrorZ() { CResult_OnionPacketDecodeErrorZ_free(self); }
7502         CResult_OnionPacketDecodeErrorZ& operator=(CResult_OnionPacketDecodeErrorZ&& o) { CResult_OnionPacketDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionPacketDecodeErrorZ)); return *this; }
7503         LDKCResult_OnionPacketDecodeErrorZ* operator &() { return &self; }
7504         LDKCResult_OnionPacketDecodeErrorZ* operator ->() { return &self; }
7505         const LDKCResult_OnionPacketDecodeErrorZ* operator &() const { return &self; }
7506         const LDKCResult_OnionPacketDecodeErrorZ* operator ->() const { return &self; }
7507 };
7508 class CResult_GossipTimestampFilterDecodeErrorZ {
7509 private:
7510         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
7511 public:
7512         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
7513         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
7514         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
7515         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
7516         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
7517         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
7518         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
7519         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
7520         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
7521         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
7522 };
7523 class CVec_ConfirmZ {
7524 private:
7525         LDKCVec_ConfirmZ self;
7526 public:
7527         CVec_ConfirmZ(const CVec_ConfirmZ&) = delete;
7528         CVec_ConfirmZ(CVec_ConfirmZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ConfirmZ)); }
7529         CVec_ConfirmZ(LDKCVec_ConfirmZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ConfirmZ)); }
7530         operator LDKCVec_ConfirmZ() && { LDKCVec_ConfirmZ res = self; memset(&self, 0, sizeof(LDKCVec_ConfirmZ)); return res; }
7531         ~CVec_ConfirmZ() { CVec_ConfirmZ_free(self); }
7532         CVec_ConfirmZ& operator=(CVec_ConfirmZ&& o) { CVec_ConfirmZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ConfirmZ)); return *this; }
7533         LDKCVec_ConfirmZ* operator &() { return &self; }
7534         LDKCVec_ConfirmZ* operator ->() { return &self; }
7535         const LDKCVec_ConfirmZ* operator &() const { return &self; }
7536         const LDKCVec_ConfirmZ* operator ->() const { return &self; }
7537 };
7538 class CResult_RouteHintDecodeErrorZ {
7539 private:
7540         LDKCResult_RouteHintDecodeErrorZ self;
7541 public:
7542         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
7543         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
7544         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
7545         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
7546         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
7547         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
7548         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
7549         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
7550         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
7551         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
7552 };
7553 class COption_FilterZ {
7554 private:
7555         LDKCOption_FilterZ self;
7556 public:
7557         COption_FilterZ(const COption_FilterZ&) = delete;
7558         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
7559         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
7560         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
7561         ~COption_FilterZ() { COption_FilterZ_free(self); }
7562         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
7563         LDKCOption_FilterZ* operator &() { return &self; }
7564         LDKCOption_FilterZ* operator ->() { return &self; }
7565         const LDKCOption_FilterZ* operator &() const { return &self; }
7566         const LDKCOption_FilterZ* operator ->() const { return &self; }
7567 };
7568 class C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ {
7569 private:
7570         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ self;
7571 public:
7572         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ(const C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ&) = delete;
7573         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ)); }
7574         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ)); }
7575         operator LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ() && { LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ)); return res; }
7576         ~C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ() { C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ_free(self); }
7577         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ& operator=(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ&& o) { C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ)); return *this; }
7578         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ* operator &() { return &self; }
7579         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ* operator ->() { return &self; }
7580         const LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ* operator &() const { return &self; }
7581         const LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ* operator ->() const { return &self; }
7582 };
7583 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
7584 private:
7585         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
7586 public:
7587         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
7588         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
7589         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
7590         operator LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
7591         ~COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
7592         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; }
7593         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
7594         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
7595         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
7596         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
7597 };
7598 class CResult_COption_APIErrorZDecodeErrorZ {
7599 private:
7600         LDKCResult_COption_APIErrorZDecodeErrorZ self;
7601 public:
7602         CResult_COption_APIErrorZDecodeErrorZ(const CResult_COption_APIErrorZDecodeErrorZ&) = delete;
7603         CResult_COption_APIErrorZDecodeErrorZ(CResult_COption_APIErrorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_APIErrorZDecodeErrorZ)); }
7604         CResult_COption_APIErrorZDecodeErrorZ(LDKCResult_COption_APIErrorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); }
7605         operator LDKCResult_COption_APIErrorZDecodeErrorZ() && { LDKCResult_COption_APIErrorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); return res; }
7606         ~CResult_COption_APIErrorZDecodeErrorZ() { CResult_COption_APIErrorZDecodeErrorZ_free(self); }
7607         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; }
7608         LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() { return &self; }
7609         LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() { return &self; }
7610         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() const { return &self; }
7611         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() const { return &self; }
7612 };
7613 class CVec_UpdateAddHTLCZ {
7614 private:
7615         LDKCVec_UpdateAddHTLCZ self;
7616 public:
7617         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
7618         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
7619         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
7620         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
7621         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
7622         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
7623         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
7624         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
7625         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
7626         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
7627 };
7628 class CResult_TxAbortDecodeErrorZ {
7629 private:
7630         LDKCResult_TxAbortDecodeErrorZ self;
7631 public:
7632         CResult_TxAbortDecodeErrorZ(const CResult_TxAbortDecodeErrorZ&) = delete;
7633         CResult_TxAbortDecodeErrorZ(CResult_TxAbortDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAbortDecodeErrorZ)); }
7634         CResult_TxAbortDecodeErrorZ(LDKCResult_TxAbortDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAbortDecodeErrorZ)); }
7635         operator LDKCResult_TxAbortDecodeErrorZ() && { LDKCResult_TxAbortDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAbortDecodeErrorZ)); return res; }
7636         ~CResult_TxAbortDecodeErrorZ() { CResult_TxAbortDecodeErrorZ_free(self); }
7637         CResult_TxAbortDecodeErrorZ& operator=(CResult_TxAbortDecodeErrorZ&& o) { CResult_TxAbortDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAbortDecodeErrorZ)); return *this; }
7638         LDKCResult_TxAbortDecodeErrorZ* operator &() { return &self; }
7639         LDKCResult_TxAbortDecodeErrorZ* operator ->() { return &self; }
7640         const LDKCResult_TxAbortDecodeErrorZ* operator &() const { return &self; }
7641         const LDKCResult_TxAbortDecodeErrorZ* operator ->() const { return &self; }
7642 };
7643 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
7644 private:
7645         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
7646 public:
7647         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
7648         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
7649         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
7650         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
7651         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
7652         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
7653         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
7654         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
7655         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
7656         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
7657 };
7658 class COption_u32Z {
7659 private:
7660         LDKCOption_u32Z self;
7661 public:
7662         COption_u32Z(const COption_u32Z&) = delete;
7663         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
7664         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
7665         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
7666         ~COption_u32Z() { COption_u32Z_free(self); }
7667         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
7668         LDKCOption_u32Z* operator &() { return &self; }
7669         LDKCOption_u32Z* operator ->() { return &self; }
7670         const LDKCOption_u32Z* operator &() const { return &self; }
7671         const LDKCOption_u32Z* operator ->() const { return &self; }
7672 };
7673 class CResult_RecipientOnionFieldsNoneZ {
7674 private:
7675         LDKCResult_RecipientOnionFieldsNoneZ self;
7676 public:
7677         CResult_RecipientOnionFieldsNoneZ(const CResult_RecipientOnionFieldsNoneZ&) = delete;
7678         CResult_RecipientOnionFieldsNoneZ(CResult_RecipientOnionFieldsNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecipientOnionFieldsNoneZ)); }
7679         CResult_RecipientOnionFieldsNoneZ(LDKCResult_RecipientOnionFieldsNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecipientOnionFieldsNoneZ)); }
7680         operator LDKCResult_RecipientOnionFieldsNoneZ() && { LDKCResult_RecipientOnionFieldsNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecipientOnionFieldsNoneZ)); return res; }
7681         ~CResult_RecipientOnionFieldsNoneZ() { CResult_RecipientOnionFieldsNoneZ_free(self); }
7682         CResult_RecipientOnionFieldsNoneZ& operator=(CResult_RecipientOnionFieldsNoneZ&& o) { CResult_RecipientOnionFieldsNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecipientOnionFieldsNoneZ)); return *this; }
7683         LDKCResult_RecipientOnionFieldsNoneZ* operator &() { return &self; }
7684         LDKCResult_RecipientOnionFieldsNoneZ* operator ->() { return &self; }
7685         const LDKCResult_RecipientOnionFieldsNoneZ* operator &() const { return &self; }
7686         const LDKCResult_RecipientOnionFieldsNoneZ* operator ->() const { return &self; }
7687 };
7688 class C2Tuple__u1632_u1632Z {
7689 private:
7690         LDKC2Tuple__u1632_u1632Z self;
7691 public:
7692         C2Tuple__u1632_u1632Z(const C2Tuple__u1632_u1632Z&) = delete;
7693         C2Tuple__u1632_u1632Z(C2Tuple__u1632_u1632Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple__u1632_u1632Z)); }
7694         C2Tuple__u1632_u1632Z(LDKC2Tuple__u1632_u1632Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple__u1632_u1632Z)); }
7695         operator LDKC2Tuple__u1632_u1632Z() && { LDKC2Tuple__u1632_u1632Z res = self; memset(&self, 0, sizeof(LDKC2Tuple__u1632_u1632Z)); return res; }
7696         ~C2Tuple__u1632_u1632Z() { C2Tuple__u1632_u1632Z_free(self); }
7697         C2Tuple__u1632_u1632Z& operator=(C2Tuple__u1632_u1632Z&& o) { C2Tuple__u1632_u1632Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple__u1632_u1632Z)); return *this; }
7698         LDKC2Tuple__u1632_u1632Z* operator &() { return &self; }
7699         LDKC2Tuple__u1632_u1632Z* operator ->() { return &self; }
7700         const LDKC2Tuple__u1632_u1632Z* operator &() const { return &self; }
7701         const LDKC2Tuple__u1632_u1632Z* operator ->() const { return &self; }
7702 };
7703 class CResult_CVec_StrZIOErrorZ {
7704 private:
7705         LDKCResult_CVec_StrZIOErrorZ self;
7706 public:
7707         CResult_CVec_StrZIOErrorZ(const CResult_CVec_StrZIOErrorZ&) = delete;
7708         CResult_CVec_StrZIOErrorZ(CResult_CVec_StrZIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_StrZIOErrorZ)); }
7709         CResult_CVec_StrZIOErrorZ(LDKCResult_CVec_StrZIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_StrZIOErrorZ)); }
7710         operator LDKCResult_CVec_StrZIOErrorZ() && { LDKCResult_CVec_StrZIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_StrZIOErrorZ)); return res; }
7711         ~CResult_CVec_StrZIOErrorZ() { CResult_CVec_StrZIOErrorZ_free(self); }
7712         CResult_CVec_StrZIOErrorZ& operator=(CResult_CVec_StrZIOErrorZ&& o) { CResult_CVec_StrZIOErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_StrZIOErrorZ)); return *this; }
7713         LDKCResult_CVec_StrZIOErrorZ* operator &() { return &self; }
7714         LDKCResult_CVec_StrZIOErrorZ* operator ->() { return &self; }
7715         const LDKCResult_CVec_StrZIOErrorZ* operator &() const { return &self; }
7716         const LDKCResult_CVec_StrZIOErrorZ* operator ->() const { return &self; }
7717 };
7718 class COption_ECDSASignatureZ {
7719 private:
7720         LDKCOption_ECDSASignatureZ self;
7721 public:
7722         COption_ECDSASignatureZ(const COption_ECDSASignatureZ&) = delete;
7723         COption_ECDSASignatureZ(COption_ECDSASignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ECDSASignatureZ)); }
7724         COption_ECDSASignatureZ(LDKCOption_ECDSASignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ECDSASignatureZ)); }
7725         operator LDKCOption_ECDSASignatureZ() && { LDKCOption_ECDSASignatureZ res = self; memset(&self, 0, sizeof(LDKCOption_ECDSASignatureZ)); return res; }
7726         ~COption_ECDSASignatureZ() { COption_ECDSASignatureZ_free(self); }
7727         COption_ECDSASignatureZ& operator=(COption_ECDSASignatureZ&& o) { COption_ECDSASignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ECDSASignatureZ)); return *this; }
7728         LDKCOption_ECDSASignatureZ* operator &() { return &self; }
7729         LDKCOption_ECDSASignatureZ* operator ->() { return &self; }
7730         const LDKCOption_ECDSASignatureZ* operator &() const { return &self; }
7731         const LDKCOption_ECDSASignatureZ* operator ->() const { return &self; }
7732 };
7733 class CResult_TransactionNoneZ {
7734 private:
7735         LDKCResult_TransactionNoneZ self;
7736 public:
7737         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
7738         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
7739         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
7740         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
7741         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
7742         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
7743         LDKCResult_TransactionNoneZ* operator &() { return &self; }
7744         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
7745         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
7746         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
7747 };
7748 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
7749 private:
7750         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
7751 public:
7752         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
7753         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
7754         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
7755         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
7756         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
7757         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
7758         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
7759         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
7760         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
7761         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
7762 };
7763 class CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ {
7764 private:
7765         LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ self;
7766 public:
7767         CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ(const CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ&) = delete;
7768         CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ(CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ)); }
7769         CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ(LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ)); }
7770         operator LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ() && { LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ)); return res; }
7771         ~CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ() { CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ_free(self); }
7772         CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ& operator=(CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ&& o) { CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ)); return *this; }
7773         LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ* operator &() { return &self; }
7774         LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
7775         const LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
7776         const LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
7777 };
7778 class CResult_CommitmentSignedDecodeErrorZ {
7779 private:
7780         LDKCResult_CommitmentSignedDecodeErrorZ self;
7781 public:
7782         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
7783         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
7784         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
7785         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
7786         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
7787         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
7788         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
7789         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
7790         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
7791         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
7792 };
7793 class CResult_CommitmentTransactionDecodeErrorZ {
7794 private:
7795         LDKCResult_CommitmentTransactionDecodeErrorZ self;
7796 public:
7797         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
7798         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
7799         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
7800         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
7801         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
7802         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
7803         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
7804         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
7805         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
7806         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
7807 };
7808 class CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ {
7809 private:
7810         LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ self;
7811 public:
7812         CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ(const CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ&) = delete;
7813         CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ(CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ)); }
7814         CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ(LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ)); }
7815         operator LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ() && { LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ)); return res; }
7816         ~CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ() { CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ_free(self); }
7817         CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ& operator=(CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ&& o) { CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ)); return *this; }
7818         LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ* operator &() { return &self; }
7819         LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ* operator ->() { return &self; }
7820         const LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ* operator &() const { return &self; }
7821         const LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ* operator ->() const { return &self; }
7822 };
7823 class CResult_StfuDecodeErrorZ {
7824 private:
7825         LDKCResult_StfuDecodeErrorZ self;
7826 public:
7827         CResult_StfuDecodeErrorZ(const CResult_StfuDecodeErrorZ&) = delete;
7828         CResult_StfuDecodeErrorZ(CResult_StfuDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StfuDecodeErrorZ)); }
7829         CResult_StfuDecodeErrorZ(LDKCResult_StfuDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StfuDecodeErrorZ)); }
7830         operator LDKCResult_StfuDecodeErrorZ() && { LDKCResult_StfuDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StfuDecodeErrorZ)); return res; }
7831         ~CResult_StfuDecodeErrorZ() { CResult_StfuDecodeErrorZ_free(self); }
7832         CResult_StfuDecodeErrorZ& operator=(CResult_StfuDecodeErrorZ&& o) { CResult_StfuDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StfuDecodeErrorZ)); return *this; }
7833         LDKCResult_StfuDecodeErrorZ* operator &() { return &self; }
7834         LDKCResult_StfuDecodeErrorZ* operator ->() { return &self; }
7835         const LDKCResult_StfuDecodeErrorZ* operator &() const { return &self; }
7836         const LDKCResult_StfuDecodeErrorZ* operator ->() const { return &self; }
7837 };
7838 class CResult_OpenChannelDecodeErrorZ {
7839 private:
7840         LDKCResult_OpenChannelDecodeErrorZ self;
7841 public:
7842         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
7843         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
7844         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
7845         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
7846         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
7847         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
7848         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
7849         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
7850         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
7851         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
7852 };
7853 class CResult_ErrorMessageDecodeErrorZ {
7854 private:
7855         LDKCResult_ErrorMessageDecodeErrorZ self;
7856 public:
7857         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
7858         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
7859         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
7860         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
7861         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
7862         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
7863         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
7864         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
7865         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
7866         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
7867 };
7868 class COption_APIErrorZ {
7869 private:
7870         LDKCOption_APIErrorZ self;
7871 public:
7872         COption_APIErrorZ(const COption_APIErrorZ&) = delete;
7873         COption_APIErrorZ(COption_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_APIErrorZ)); }
7874         COption_APIErrorZ(LDKCOption_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_APIErrorZ)); }
7875         operator LDKCOption_APIErrorZ() && { LDKCOption_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCOption_APIErrorZ)); return res; }
7876         ~COption_APIErrorZ() { COption_APIErrorZ_free(self); }
7877         COption_APIErrorZ& operator=(COption_APIErrorZ&& o) { COption_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_APIErrorZ)); return *this; }
7878         LDKCOption_APIErrorZ* operator &() { return &self; }
7879         LDKCOption_APIErrorZ* operator ->() { return &self; }
7880         const LDKCOption_APIErrorZ* operator &() const { return &self; }
7881         const LDKCOption_APIErrorZ* operator ->() const { return &self; }
7882 };
7883 class CVec_PeerDetailsZ {
7884 private:
7885         LDKCVec_PeerDetailsZ self;
7886 public:
7887         CVec_PeerDetailsZ(const CVec_PeerDetailsZ&) = delete;
7888         CVec_PeerDetailsZ(CVec_PeerDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PeerDetailsZ)); }
7889         CVec_PeerDetailsZ(LDKCVec_PeerDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PeerDetailsZ)); }
7890         operator LDKCVec_PeerDetailsZ() && { LDKCVec_PeerDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_PeerDetailsZ)); return res; }
7891         ~CVec_PeerDetailsZ() { CVec_PeerDetailsZ_free(self); }
7892         CVec_PeerDetailsZ& operator=(CVec_PeerDetailsZ&& o) { CVec_PeerDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PeerDetailsZ)); return *this; }
7893         LDKCVec_PeerDetailsZ* operator &() { return &self; }
7894         LDKCVec_PeerDetailsZ* operator ->() { return &self; }
7895         const LDKCVec_PeerDetailsZ* operator &() const { return &self; }
7896         const LDKCVec_PeerDetailsZ* operator ->() const { return &self; }
7897 };
7898 class CResult_u64ShortChannelIdErrorZ {
7899 private:
7900         LDKCResult_u64ShortChannelIdErrorZ self;
7901 public:
7902         CResult_u64ShortChannelIdErrorZ(const CResult_u64ShortChannelIdErrorZ&) = delete;
7903         CResult_u64ShortChannelIdErrorZ(CResult_u64ShortChannelIdErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u64ShortChannelIdErrorZ)); }
7904         CResult_u64ShortChannelIdErrorZ(LDKCResult_u64ShortChannelIdErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u64ShortChannelIdErrorZ)); }
7905         operator LDKCResult_u64ShortChannelIdErrorZ() && { LDKCResult_u64ShortChannelIdErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u64ShortChannelIdErrorZ)); return res; }
7906         ~CResult_u64ShortChannelIdErrorZ() { CResult_u64ShortChannelIdErrorZ_free(self); }
7907         CResult_u64ShortChannelIdErrorZ& operator=(CResult_u64ShortChannelIdErrorZ&& o) { CResult_u64ShortChannelIdErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u64ShortChannelIdErrorZ)); return *this; }
7908         LDKCResult_u64ShortChannelIdErrorZ* operator &() { return &self; }
7909         LDKCResult_u64ShortChannelIdErrorZ* operator ->() { return &self; }
7910         const LDKCResult_u64ShortChannelIdErrorZ* operator &() const { return &self; }
7911         const LDKCResult_u64ShortChannelIdErrorZ* operator ->() const { return &self; }
7912 };
7913 class CResult_QueryChannelRangeDecodeErrorZ {
7914 private:
7915         LDKCResult_QueryChannelRangeDecodeErrorZ self;
7916 public:
7917         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
7918         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
7919         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
7920         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
7921         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
7922         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
7923         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
7924         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
7925         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
7926         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
7927 };
7928 class CVec_InputZ {
7929 private:
7930         LDKCVec_InputZ self;
7931 public:
7932         CVec_InputZ(const CVec_InputZ&) = delete;
7933         CVec_InputZ(CVec_InputZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_InputZ)); }
7934         CVec_InputZ(LDKCVec_InputZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_InputZ)); }
7935         operator LDKCVec_InputZ() && { LDKCVec_InputZ res = self; memset(&self, 0, sizeof(LDKCVec_InputZ)); return res; }
7936         ~CVec_InputZ() { CVec_InputZ_free(self); }
7937         CVec_InputZ& operator=(CVec_InputZ&& o) { CVec_InputZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_InputZ)); return *this; }
7938         LDKCVec_InputZ* operator &() { return &self; }
7939         LDKCVec_InputZ* operator ->() { return &self; }
7940         const LDKCVec_InputZ* operator &() const { return &self; }
7941         const LDKCVec_InputZ* operator ->() const { return &self; }
7942 };
7943 class CResult_ChannelFeaturesDecodeErrorZ {
7944 private:
7945         LDKCResult_ChannelFeaturesDecodeErrorZ self;
7946 public:
7947         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
7948         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
7949         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
7950         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
7951         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
7952         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
7953         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
7954         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
7955         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
7956         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
7957 };
7958 class CResult_ChannelReadyDecodeErrorZ {
7959 private:
7960         LDKCResult_ChannelReadyDecodeErrorZ self;
7961 public:
7962         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
7963         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
7964         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
7965         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
7966         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
7967         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
7968         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
7969         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
7970         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
7971         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
7972 };
7973 class CVec_TransactionZ {
7974 private:
7975         LDKCVec_TransactionZ self;
7976 public:
7977         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
7978         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
7979         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
7980         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
7981         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
7982         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
7983         LDKCVec_TransactionZ* operator &() { return &self; }
7984         LDKCVec_TransactionZ* operator ->() { return &self; }
7985         const LDKCVec_TransactionZ* operator &() const { return &self; }
7986         const LDKCVec_TransactionZ* operator ->() const { return &self; }
7987 };
7988 class CResult_UpdateFeeDecodeErrorZ {
7989 private:
7990         LDKCResult_UpdateFeeDecodeErrorZ self;
7991 public:
7992         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
7993         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
7994         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
7995         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
7996         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
7997         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
7998         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
7999         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
8000         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
8001         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
8002 };
8003 class CResult_NoneBolt11SemanticErrorZ {
8004 private:
8005         LDKCResult_NoneBolt11SemanticErrorZ self;
8006 public:
8007         CResult_NoneBolt11SemanticErrorZ(const CResult_NoneBolt11SemanticErrorZ&) = delete;
8008         CResult_NoneBolt11SemanticErrorZ(CResult_NoneBolt11SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneBolt11SemanticErrorZ)); }
8009         CResult_NoneBolt11SemanticErrorZ(LDKCResult_NoneBolt11SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneBolt11SemanticErrorZ)); }
8010         operator LDKCResult_NoneBolt11SemanticErrorZ() && { LDKCResult_NoneBolt11SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneBolt11SemanticErrorZ)); return res; }
8011         ~CResult_NoneBolt11SemanticErrorZ() { CResult_NoneBolt11SemanticErrorZ_free(self); }
8012         CResult_NoneBolt11SemanticErrorZ& operator=(CResult_NoneBolt11SemanticErrorZ&& o) { CResult_NoneBolt11SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneBolt11SemanticErrorZ)); return *this; }
8013         LDKCResult_NoneBolt11SemanticErrorZ* operator &() { return &self; }
8014         LDKCResult_NoneBolt11SemanticErrorZ* operator ->() { return &self; }
8015         const LDKCResult_NoneBolt11SemanticErrorZ* operator &() const { return &self; }
8016         const LDKCResult_NoneBolt11SemanticErrorZ* operator ->() const { return &self; }
8017 };
8018 class CResult_RevocationBasepointDecodeErrorZ {
8019 private:
8020         LDKCResult_RevocationBasepointDecodeErrorZ self;
8021 public:
8022         CResult_RevocationBasepointDecodeErrorZ(const CResult_RevocationBasepointDecodeErrorZ&) = delete;
8023         CResult_RevocationBasepointDecodeErrorZ(CResult_RevocationBasepointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevocationBasepointDecodeErrorZ)); }
8024         CResult_RevocationBasepointDecodeErrorZ(LDKCResult_RevocationBasepointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevocationBasepointDecodeErrorZ)); }
8025         operator LDKCResult_RevocationBasepointDecodeErrorZ() && { LDKCResult_RevocationBasepointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevocationBasepointDecodeErrorZ)); return res; }
8026         ~CResult_RevocationBasepointDecodeErrorZ() { CResult_RevocationBasepointDecodeErrorZ_free(self); }
8027         CResult_RevocationBasepointDecodeErrorZ& operator=(CResult_RevocationBasepointDecodeErrorZ&& o) { CResult_RevocationBasepointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevocationBasepointDecodeErrorZ)); return *this; }
8028         LDKCResult_RevocationBasepointDecodeErrorZ* operator &() { return &self; }
8029         LDKCResult_RevocationBasepointDecodeErrorZ* operator ->() { return &self; }
8030         const LDKCResult_RevocationBasepointDecodeErrorZ* operator &() const { return &self; }
8031         const LDKCResult_RevocationBasepointDecodeErrorZ* operator ->() const { return &self; }
8032 };
8033 class COption_OnionMessageContentsZ {
8034 private:
8035         LDKCOption_OnionMessageContentsZ self;
8036 public:
8037         COption_OnionMessageContentsZ(const COption_OnionMessageContentsZ&) = delete;
8038         COption_OnionMessageContentsZ(COption_OnionMessageContentsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_OnionMessageContentsZ)); }
8039         COption_OnionMessageContentsZ(LDKCOption_OnionMessageContentsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_OnionMessageContentsZ)); }
8040         operator LDKCOption_OnionMessageContentsZ() && { LDKCOption_OnionMessageContentsZ res = self; memset(&self, 0, sizeof(LDKCOption_OnionMessageContentsZ)); return res; }
8041         ~COption_OnionMessageContentsZ() { COption_OnionMessageContentsZ_free(self); }
8042         COption_OnionMessageContentsZ& operator=(COption_OnionMessageContentsZ&& o) { COption_OnionMessageContentsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_OnionMessageContentsZ)); return *this; }
8043         LDKCOption_OnionMessageContentsZ* operator &() { return &self; }
8044         LDKCOption_OnionMessageContentsZ* operator ->() { return &self; }
8045         const LDKCOption_OnionMessageContentsZ* operator &() const { return &self; }
8046         const LDKCOption_OnionMessageContentsZ* operator ->() const { return &self; }
8047 };
8048 class CResult_NoneRetryableSendFailureZ {
8049 private:
8050         LDKCResult_NoneRetryableSendFailureZ self;
8051 public:
8052         CResult_NoneRetryableSendFailureZ(const CResult_NoneRetryableSendFailureZ&) = delete;
8053         CResult_NoneRetryableSendFailureZ(CResult_NoneRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); }
8054         CResult_NoneRetryableSendFailureZ(LDKCResult_NoneRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); }
8055         operator LDKCResult_NoneRetryableSendFailureZ() && { LDKCResult_NoneRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); return res; }
8056         ~CResult_NoneRetryableSendFailureZ() { CResult_NoneRetryableSendFailureZ_free(self); }
8057         CResult_NoneRetryableSendFailureZ& operator=(CResult_NoneRetryableSendFailureZ&& o) { CResult_NoneRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); return *this; }
8058         LDKCResult_NoneRetryableSendFailureZ* operator &() { return &self; }
8059         LDKCResult_NoneRetryableSendFailureZ* operator ->() { return &self; }
8060         const LDKCResult_NoneRetryableSendFailureZ* operator &() const { return &self; }
8061         const LDKCResult_NoneRetryableSendFailureZ* operator ->() const { return &self; }
8062 };
8063 class CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ {
8064 private:
8065         LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ self;
8066 public:
8067         CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ(const CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ&) = delete;
8068         CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ(CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ)); }
8069         CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ(LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ)); }
8070         operator LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ() && { LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ)); return res; }
8071         ~CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ() { CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ_free(self); }
8072         CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ& operator=(CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ&& o) { CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ)); return *this; }
8073         LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator &() { return &self; }
8074         LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
8075         const LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
8076         const LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
8077 };
8078 class CResult_NodeIdDecodeErrorZ {
8079 private:
8080         LDKCResult_NodeIdDecodeErrorZ self;
8081 public:
8082         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
8083         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
8084         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
8085         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
8086         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
8087         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
8088         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
8089         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
8090         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
8091         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
8092 };
8093 class CResult_boolLightningErrorZ {
8094 private:
8095         LDKCResult_boolLightningErrorZ self;
8096 public:
8097         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
8098         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
8099         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
8100         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
8101         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
8102         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
8103         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
8104         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
8105         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
8106         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
8107 };
8108 class CResult_ChannelShutdownStateDecodeErrorZ {
8109 private:
8110         LDKCResult_ChannelShutdownStateDecodeErrorZ self;
8111 public:
8112         CResult_ChannelShutdownStateDecodeErrorZ(const CResult_ChannelShutdownStateDecodeErrorZ&) = delete;
8113         CResult_ChannelShutdownStateDecodeErrorZ(CResult_ChannelShutdownStateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelShutdownStateDecodeErrorZ)); }
8114         CResult_ChannelShutdownStateDecodeErrorZ(LDKCResult_ChannelShutdownStateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelShutdownStateDecodeErrorZ)); }
8115         operator LDKCResult_ChannelShutdownStateDecodeErrorZ() && { LDKCResult_ChannelShutdownStateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelShutdownStateDecodeErrorZ)); return res; }
8116         ~CResult_ChannelShutdownStateDecodeErrorZ() { CResult_ChannelShutdownStateDecodeErrorZ_free(self); }
8117         CResult_ChannelShutdownStateDecodeErrorZ& operator=(CResult_ChannelShutdownStateDecodeErrorZ&& o) { CResult_ChannelShutdownStateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelShutdownStateDecodeErrorZ)); return *this; }
8118         LDKCResult_ChannelShutdownStateDecodeErrorZ* operator &() { return &self; }
8119         LDKCResult_ChannelShutdownStateDecodeErrorZ* operator ->() { return &self; }
8120         const LDKCResult_ChannelShutdownStateDecodeErrorZ* operator &() const { return &self; }
8121         const LDKCResult_ChannelShutdownStateDecodeErrorZ* operator ->() const { return &self; }
8122 };
8123 class CResult_NodeAnnouncementInfoDecodeErrorZ {
8124 private:
8125         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
8126 public:
8127         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
8128         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
8129         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
8130         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
8131         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
8132         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
8133         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
8134         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
8135         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
8136         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
8137 };
8138 class CResult_InvoiceRequestBolt12SemanticErrorZ {
8139 private:
8140         LDKCResult_InvoiceRequestBolt12SemanticErrorZ self;
8141 public:
8142         CResult_InvoiceRequestBolt12SemanticErrorZ(const CResult_InvoiceRequestBolt12SemanticErrorZ&) = delete;
8143         CResult_InvoiceRequestBolt12SemanticErrorZ(CResult_InvoiceRequestBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestBolt12SemanticErrorZ)); }
8144         CResult_InvoiceRequestBolt12SemanticErrorZ(LDKCResult_InvoiceRequestBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestBolt12SemanticErrorZ)); }
8145         operator LDKCResult_InvoiceRequestBolt12SemanticErrorZ() && { LDKCResult_InvoiceRequestBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestBolt12SemanticErrorZ)); return res; }
8146         ~CResult_InvoiceRequestBolt12SemanticErrorZ() { CResult_InvoiceRequestBolt12SemanticErrorZ_free(self); }
8147         CResult_InvoiceRequestBolt12SemanticErrorZ& operator=(CResult_InvoiceRequestBolt12SemanticErrorZ&& o) { CResult_InvoiceRequestBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestBolt12SemanticErrorZ)); return *this; }
8148         LDKCResult_InvoiceRequestBolt12SemanticErrorZ* operator &() { return &self; }
8149         LDKCResult_InvoiceRequestBolt12SemanticErrorZ* operator ->() { return &self; }
8150         const LDKCResult_InvoiceRequestBolt12SemanticErrorZ* operator &() const { return &self; }
8151         const LDKCResult_InvoiceRequestBolt12SemanticErrorZ* operator ->() const { return &self; }
8152 };
8153 class CResult_COption_NetworkUpdateZDecodeErrorZ {
8154 private:
8155         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
8156 public:
8157         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
8158         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
8159         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
8160         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
8161         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
8162         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; }
8163         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
8164         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
8165         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
8166         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
8167 };
8168 class CVec_UpdateFailMalformedHTLCZ {
8169 private:
8170         LDKCVec_UpdateFailMalformedHTLCZ self;
8171 public:
8172         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
8173         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
8174         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
8175         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
8176         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
8177         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
8178         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
8179         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
8180         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
8181         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
8182 };
8183 class CResult_ShutdownScriptNoneZ {
8184 private:
8185         LDKCResult_ShutdownScriptNoneZ self;
8186 public:
8187         CResult_ShutdownScriptNoneZ(const CResult_ShutdownScriptNoneZ&) = delete;
8188         CResult_ShutdownScriptNoneZ(CResult_ShutdownScriptNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptNoneZ)); }
8189         CResult_ShutdownScriptNoneZ(LDKCResult_ShutdownScriptNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptNoneZ)); }
8190         operator LDKCResult_ShutdownScriptNoneZ() && { LDKCResult_ShutdownScriptNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptNoneZ)); return res; }
8191         ~CResult_ShutdownScriptNoneZ() { CResult_ShutdownScriptNoneZ_free(self); }
8192         CResult_ShutdownScriptNoneZ& operator=(CResult_ShutdownScriptNoneZ&& o) { CResult_ShutdownScriptNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptNoneZ)); return *this; }
8193         LDKCResult_ShutdownScriptNoneZ* operator &() { return &self; }
8194         LDKCResult_ShutdownScriptNoneZ* operator ->() { return &self; }
8195         const LDKCResult_ShutdownScriptNoneZ* operator &() const { return &self; }
8196         const LDKCResult_ShutdownScriptNoneZ* operator ->() const { return &self; }
8197 };
8198 class CResult_PendingHTLCInfoInboundHTLCErrZ {
8199 private:
8200         LDKCResult_PendingHTLCInfoInboundHTLCErrZ self;
8201 public:
8202         CResult_PendingHTLCInfoInboundHTLCErrZ(const CResult_PendingHTLCInfoInboundHTLCErrZ&) = delete;
8203         CResult_PendingHTLCInfoInboundHTLCErrZ(CResult_PendingHTLCInfoInboundHTLCErrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PendingHTLCInfoInboundHTLCErrZ)); }
8204         CResult_PendingHTLCInfoInboundHTLCErrZ(LDKCResult_PendingHTLCInfoInboundHTLCErrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PendingHTLCInfoInboundHTLCErrZ)); }
8205         operator LDKCResult_PendingHTLCInfoInboundHTLCErrZ() && { LDKCResult_PendingHTLCInfoInboundHTLCErrZ res = self; memset(&self, 0, sizeof(LDKCResult_PendingHTLCInfoInboundHTLCErrZ)); return res; }
8206         ~CResult_PendingHTLCInfoInboundHTLCErrZ() { CResult_PendingHTLCInfoInboundHTLCErrZ_free(self); }
8207         CResult_PendingHTLCInfoInboundHTLCErrZ& operator=(CResult_PendingHTLCInfoInboundHTLCErrZ&& o) { CResult_PendingHTLCInfoInboundHTLCErrZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PendingHTLCInfoInboundHTLCErrZ)); return *this; }
8208         LDKCResult_PendingHTLCInfoInboundHTLCErrZ* operator &() { return &self; }
8209         LDKCResult_PendingHTLCInfoInboundHTLCErrZ* operator ->() { return &self; }
8210         const LDKCResult_PendingHTLCInfoInboundHTLCErrZ* operator &() const { return &self; }
8211         const LDKCResult_PendingHTLCInfoInboundHTLCErrZ* operator ->() const { return &self; }
8212 };
8213 class CResult_PendingHTLCInfoDecodeErrorZ {
8214 private:
8215         LDKCResult_PendingHTLCInfoDecodeErrorZ self;
8216 public:
8217         CResult_PendingHTLCInfoDecodeErrorZ(const CResult_PendingHTLCInfoDecodeErrorZ&) = delete;
8218         CResult_PendingHTLCInfoDecodeErrorZ(CResult_PendingHTLCInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PendingHTLCInfoDecodeErrorZ)); }
8219         CResult_PendingHTLCInfoDecodeErrorZ(LDKCResult_PendingHTLCInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PendingHTLCInfoDecodeErrorZ)); }
8220         operator LDKCResult_PendingHTLCInfoDecodeErrorZ() && { LDKCResult_PendingHTLCInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PendingHTLCInfoDecodeErrorZ)); return res; }
8221         ~CResult_PendingHTLCInfoDecodeErrorZ() { CResult_PendingHTLCInfoDecodeErrorZ_free(self); }
8222         CResult_PendingHTLCInfoDecodeErrorZ& operator=(CResult_PendingHTLCInfoDecodeErrorZ&& o) { CResult_PendingHTLCInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PendingHTLCInfoDecodeErrorZ)); return *this; }
8223         LDKCResult_PendingHTLCInfoDecodeErrorZ* operator &() { return &self; }
8224         LDKCResult_PendingHTLCInfoDecodeErrorZ* operator ->() { return &self; }
8225         const LDKCResult_PendingHTLCInfoDecodeErrorZ* operator &() const { return &self; }
8226         const LDKCResult_PendingHTLCInfoDecodeErrorZ* operator ->() const { return &self; }
8227 };
8228 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
8229 private:
8230         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
8231 public:
8232         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
8233         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
8234         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
8235         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
8236         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
8237         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
8238         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
8239         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
8240         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
8241         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
8242 };
8243 class CResult_ShutdownScriptInvalidShutdownScriptZ {
8244 private:
8245         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
8246 public:
8247         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
8248         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
8249         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
8250         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
8251         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
8252         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
8253         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
8254         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
8255         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
8256         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
8257 };
8258 class COption_HTLCDestinationZ {
8259 private:
8260         LDKCOption_HTLCDestinationZ self;
8261 public:
8262         COption_HTLCDestinationZ(const COption_HTLCDestinationZ&) = delete;
8263         COption_HTLCDestinationZ(COption_HTLCDestinationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCDestinationZ)); }
8264         COption_HTLCDestinationZ(LDKCOption_HTLCDestinationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCDestinationZ)); }
8265         operator LDKCOption_HTLCDestinationZ() && { LDKCOption_HTLCDestinationZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCDestinationZ)); return res; }
8266         ~COption_HTLCDestinationZ() { COption_HTLCDestinationZ_free(self); }
8267         COption_HTLCDestinationZ& operator=(COption_HTLCDestinationZ&& o) { COption_HTLCDestinationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCDestinationZ)); return *this; }
8268         LDKCOption_HTLCDestinationZ* operator &() { return &self; }
8269         LDKCOption_HTLCDestinationZ* operator ->() { return &self; }
8270         const LDKCOption_HTLCDestinationZ* operator &() const { return &self; }
8271         const LDKCOption_HTLCDestinationZ* operator ->() const { return &self; }
8272 };
8273 class CVec_RouteHopZ {
8274 private:
8275         LDKCVec_RouteHopZ self;
8276 public:
8277         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
8278         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
8279         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
8280         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
8281         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
8282         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
8283         LDKCVec_RouteHopZ* operator &() { return &self; }
8284         LDKCVec_RouteHopZ* operator ->() { return &self; }
8285         const LDKCVec_RouteHopZ* operator &() const { return &self; }
8286         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
8287 };
8288 class C2Tuple_PublicKeyCVec_SocketAddressZZ {
8289 private:
8290         LDKC2Tuple_PublicKeyCVec_SocketAddressZZ self;
8291 public:
8292         C2Tuple_PublicKeyCVec_SocketAddressZZ(const C2Tuple_PublicKeyCVec_SocketAddressZZ&) = delete;
8293         C2Tuple_PublicKeyCVec_SocketAddressZZ(C2Tuple_PublicKeyCVec_SocketAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyCVec_SocketAddressZZ)); }
8294         C2Tuple_PublicKeyCVec_SocketAddressZZ(LDKC2Tuple_PublicKeyCVec_SocketAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyCVec_SocketAddressZZ)); }
8295         operator LDKC2Tuple_PublicKeyCVec_SocketAddressZZ() && { LDKC2Tuple_PublicKeyCVec_SocketAddressZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyCVec_SocketAddressZZ)); return res; }
8296         ~C2Tuple_PublicKeyCVec_SocketAddressZZ() { C2Tuple_PublicKeyCVec_SocketAddressZZ_free(self); }
8297         C2Tuple_PublicKeyCVec_SocketAddressZZ& operator=(C2Tuple_PublicKeyCVec_SocketAddressZZ&& o) { C2Tuple_PublicKeyCVec_SocketAddressZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyCVec_SocketAddressZZ)); return *this; }
8298         LDKC2Tuple_PublicKeyCVec_SocketAddressZZ* operator &() { return &self; }
8299         LDKC2Tuple_PublicKeyCVec_SocketAddressZZ* operator ->() { return &self; }
8300         const LDKC2Tuple_PublicKeyCVec_SocketAddressZZ* operator &() const { return &self; }
8301         const LDKC2Tuple_PublicKeyCVec_SocketAddressZZ* operator ->() const { return &self; }
8302 };
8303 class CResult_CVec_UtxoZNoneZ {
8304 private:
8305         LDKCResult_CVec_UtxoZNoneZ self;
8306 public:
8307         CResult_CVec_UtxoZNoneZ(const CResult_CVec_UtxoZNoneZ&) = delete;
8308         CResult_CVec_UtxoZNoneZ(CResult_CVec_UtxoZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_UtxoZNoneZ)); }
8309         CResult_CVec_UtxoZNoneZ(LDKCResult_CVec_UtxoZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_UtxoZNoneZ)); }
8310         operator LDKCResult_CVec_UtxoZNoneZ() && { LDKCResult_CVec_UtxoZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_UtxoZNoneZ)); return res; }
8311         ~CResult_CVec_UtxoZNoneZ() { CResult_CVec_UtxoZNoneZ_free(self); }
8312         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; }
8313         LDKCResult_CVec_UtxoZNoneZ* operator &() { return &self; }
8314         LDKCResult_CVec_UtxoZNoneZ* operator ->() { return &self; }
8315         const LDKCResult_CVec_UtxoZNoneZ* operator &() const { return &self; }
8316         const LDKCResult_CVec_UtxoZNoneZ* operator ->() const { return &self; }
8317 };
8318 class CResult_CVec_u8ZIOErrorZ {
8319 private:
8320         LDKCResult_CVec_u8ZIOErrorZ self;
8321 public:
8322         CResult_CVec_u8ZIOErrorZ(const CResult_CVec_u8ZIOErrorZ&) = delete;
8323         CResult_CVec_u8ZIOErrorZ(CResult_CVec_u8ZIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZIOErrorZ)); }
8324         CResult_CVec_u8ZIOErrorZ(LDKCResult_CVec_u8ZIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZIOErrorZ)); }
8325         operator LDKCResult_CVec_u8ZIOErrorZ() && { LDKCResult_CVec_u8ZIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZIOErrorZ)); return res; }
8326         ~CResult_CVec_u8ZIOErrorZ() { CResult_CVec_u8ZIOErrorZ_free(self); }
8327         CResult_CVec_u8ZIOErrorZ& operator=(CResult_CVec_u8ZIOErrorZ&& o) { CResult_CVec_u8ZIOErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_u8ZIOErrorZ)); return *this; }
8328         LDKCResult_CVec_u8ZIOErrorZ* operator &() { return &self; }
8329         LDKCResult_CVec_u8ZIOErrorZ* operator ->() { return &self; }
8330         const LDKCResult_CVec_u8ZIOErrorZ* operator &() const { return &self; }
8331         const LDKCResult_CVec_u8ZIOErrorZ* operator ->() const { return &self; }
8332 };
8333 class CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ {
8334 private:
8335         LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ self;
8336 public:
8337         CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ(const CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ&) = delete;
8338         CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ(CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ)); }
8339         CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ(LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ)); }
8340         operator LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ() && { LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ)); return res; }
8341         ~CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ() { CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ_free(self); }
8342         CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ& operator=(CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ&& o) { CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ)); return *this; }
8343         LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ* operator &() { return &self; }
8344         LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ* operator ->() { return &self; }
8345         const LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ* operator &() const { return &self; }
8346         const LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ* operator ->() const { return &self; }
8347 };
8348 class CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ {
8349 private:
8350         LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ self;
8351 public:
8352         CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ(const CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ&) = delete;
8353         CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ(CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ)); }
8354         CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ(LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ)); }
8355         operator LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ() && { LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ)); return res; }
8356         ~CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ() { CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ_free(self); }
8357         CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ& operator=(CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ&& o) { CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ)); return *this; }
8358         LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ* operator &() { return &self; }
8359         LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ* operator ->() { return &self; }
8360         const LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ* operator &() const { return &self; }
8361         const LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ* operator ->() const { return &self; }
8362 };
8363 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ {
8364 private:
8365         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ self;
8366 public:
8367         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(const CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&) = delete;
8368         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
8369         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
8370         operator LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() && { LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); return res; }
8371         ~CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() { CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ_free(self); }
8372         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; }
8373         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() { return &self; }
8374         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() { return &self; }
8375         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() const { return &self; }
8376         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() const { return &self; }
8377 };
8378 class C3Tuple_OffersMessageDestinationBlindedPathZ {
8379 private:
8380         LDKC3Tuple_OffersMessageDestinationBlindedPathZ self;
8381 public:
8382         C3Tuple_OffersMessageDestinationBlindedPathZ(const C3Tuple_OffersMessageDestinationBlindedPathZ&) = delete;
8383         C3Tuple_OffersMessageDestinationBlindedPathZ(C3Tuple_OffersMessageDestinationBlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OffersMessageDestinationBlindedPathZ)); }
8384         C3Tuple_OffersMessageDestinationBlindedPathZ(LDKC3Tuple_OffersMessageDestinationBlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OffersMessageDestinationBlindedPathZ)); }
8385         operator LDKC3Tuple_OffersMessageDestinationBlindedPathZ() && { LDKC3Tuple_OffersMessageDestinationBlindedPathZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OffersMessageDestinationBlindedPathZ)); return res; }
8386         ~C3Tuple_OffersMessageDestinationBlindedPathZ() { C3Tuple_OffersMessageDestinationBlindedPathZ_free(self); }
8387         C3Tuple_OffersMessageDestinationBlindedPathZ& operator=(C3Tuple_OffersMessageDestinationBlindedPathZ&& o) { C3Tuple_OffersMessageDestinationBlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_OffersMessageDestinationBlindedPathZ)); return *this; }
8388         LDKC3Tuple_OffersMessageDestinationBlindedPathZ* operator &() { return &self; }
8389         LDKC3Tuple_OffersMessageDestinationBlindedPathZ* operator ->() { return &self; }
8390         const LDKC3Tuple_OffersMessageDestinationBlindedPathZ* operator &() const { return &self; }
8391         const LDKC3Tuple_OffersMessageDestinationBlindedPathZ* operator ->() const { return &self; }
8392 };
8393 class CVec_ThirtyTwoBytesZ {
8394 private:
8395         LDKCVec_ThirtyTwoBytesZ self;
8396 public:
8397         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
8398         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
8399         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
8400         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
8401         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
8402         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
8403         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
8404         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
8405         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
8406         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
8407 };
8408 class CResult_ChannelMonitorUpdateStatusNoneZ {
8409 private:
8410         LDKCResult_ChannelMonitorUpdateStatusNoneZ self;
8411 public:
8412         CResult_ChannelMonitorUpdateStatusNoneZ(const CResult_ChannelMonitorUpdateStatusNoneZ&) = delete;
8413         CResult_ChannelMonitorUpdateStatusNoneZ(CResult_ChannelMonitorUpdateStatusNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateStatusNoneZ)); }
8414         CResult_ChannelMonitorUpdateStatusNoneZ(LDKCResult_ChannelMonitorUpdateStatusNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateStatusNoneZ)); }
8415         operator LDKCResult_ChannelMonitorUpdateStatusNoneZ() && { LDKCResult_ChannelMonitorUpdateStatusNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateStatusNoneZ)); return res; }
8416         ~CResult_ChannelMonitorUpdateStatusNoneZ() { CResult_ChannelMonitorUpdateStatusNoneZ_free(self); }
8417         CResult_ChannelMonitorUpdateStatusNoneZ& operator=(CResult_ChannelMonitorUpdateStatusNoneZ&& o) { CResult_ChannelMonitorUpdateStatusNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateStatusNoneZ)); return *this; }
8418         LDKCResult_ChannelMonitorUpdateStatusNoneZ* operator &() { return &self; }
8419         LDKCResult_ChannelMonitorUpdateStatusNoneZ* operator ->() { return &self; }
8420         const LDKCResult_ChannelMonitorUpdateStatusNoneZ* operator &() const { return &self; }
8421         const LDKCResult_ChannelMonitorUpdateStatusNoneZ* operator ->() const { return &self; }
8422 };
8423 class CResult_ClosingSignedDecodeErrorZ {
8424 private:
8425         LDKCResult_ClosingSignedDecodeErrorZ self;
8426 public:
8427         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
8428         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
8429         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
8430         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
8431         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
8432         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
8433         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
8434         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
8435         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
8436         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
8437 };
8438 class CVec_CResult_NoneAPIErrorZZ {
8439 private:
8440         LDKCVec_CResult_NoneAPIErrorZZ self;
8441 public:
8442         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
8443         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
8444         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
8445         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
8446         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
8447         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; }
8448         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
8449         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
8450         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
8451         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
8452 };
8453 class CResult_SchnorrSignatureNoneZ {
8454 private:
8455         LDKCResult_SchnorrSignatureNoneZ self;
8456 public:
8457         CResult_SchnorrSignatureNoneZ(const CResult_SchnorrSignatureNoneZ&) = delete;
8458         CResult_SchnorrSignatureNoneZ(CResult_SchnorrSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SchnorrSignatureNoneZ)); }
8459         CResult_SchnorrSignatureNoneZ(LDKCResult_SchnorrSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SchnorrSignatureNoneZ)); }
8460         operator LDKCResult_SchnorrSignatureNoneZ() && { LDKCResult_SchnorrSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SchnorrSignatureNoneZ)); return res; }
8461         ~CResult_SchnorrSignatureNoneZ() { CResult_SchnorrSignatureNoneZ_free(self); }
8462         CResult_SchnorrSignatureNoneZ& operator=(CResult_SchnorrSignatureNoneZ&& o) { CResult_SchnorrSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SchnorrSignatureNoneZ)); return *this; }
8463         LDKCResult_SchnorrSignatureNoneZ* operator &() { return &self; }
8464         LDKCResult_SchnorrSignatureNoneZ* operator ->() { return &self; }
8465         const LDKCResult_SchnorrSignatureNoneZ* operator &() const { return &self; }
8466         const LDKCResult_SchnorrSignatureNoneZ* operator ->() const { return &self; }
8467 };
8468 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
8469 private:
8470         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
8471 public:
8472         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
8473         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
8474         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
8475         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
8476         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
8477         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
8478         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
8479         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
8480         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
8481         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
8482 };
8483 class CResult_HTLCDescriptorDecodeErrorZ {
8484 private:
8485         LDKCResult_HTLCDescriptorDecodeErrorZ self;
8486 public:
8487         CResult_HTLCDescriptorDecodeErrorZ(const CResult_HTLCDescriptorDecodeErrorZ&) = delete;
8488         CResult_HTLCDescriptorDecodeErrorZ(CResult_HTLCDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCDescriptorDecodeErrorZ)); }
8489         CResult_HTLCDescriptorDecodeErrorZ(LDKCResult_HTLCDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCDescriptorDecodeErrorZ)); }
8490         operator LDKCResult_HTLCDescriptorDecodeErrorZ() && { LDKCResult_HTLCDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCDescriptorDecodeErrorZ)); return res; }
8491         ~CResult_HTLCDescriptorDecodeErrorZ() { CResult_HTLCDescriptorDecodeErrorZ_free(self); }
8492         CResult_HTLCDescriptorDecodeErrorZ& operator=(CResult_HTLCDescriptorDecodeErrorZ&& o) { CResult_HTLCDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCDescriptorDecodeErrorZ)); return *this; }
8493         LDKCResult_HTLCDescriptorDecodeErrorZ* operator &() { return &self; }
8494         LDKCResult_HTLCDescriptorDecodeErrorZ* operator ->() { return &self; }
8495         const LDKCResult_HTLCDescriptorDecodeErrorZ* operator &() const { return &self; }
8496         const LDKCResult_HTLCDescriptorDecodeErrorZ* operator ->() const { return &self; }
8497 };
8498 class CVec_RecentPaymentDetailsZ {
8499 private:
8500         LDKCVec_RecentPaymentDetailsZ self;
8501 public:
8502         CVec_RecentPaymentDetailsZ(const CVec_RecentPaymentDetailsZ&) = delete;
8503         CVec_RecentPaymentDetailsZ(CVec_RecentPaymentDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); }
8504         CVec_RecentPaymentDetailsZ(LDKCVec_RecentPaymentDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); }
8505         operator LDKCVec_RecentPaymentDetailsZ() && { LDKCVec_RecentPaymentDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); return res; }
8506         ~CVec_RecentPaymentDetailsZ() { CVec_RecentPaymentDetailsZ_free(self); }
8507         CVec_RecentPaymentDetailsZ& operator=(CVec_RecentPaymentDetailsZ&& o) { CVec_RecentPaymentDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); return *this; }
8508         LDKCVec_RecentPaymentDetailsZ* operator &() { return &self; }
8509         LDKCVec_RecentPaymentDetailsZ* operator ->() { return &self; }
8510         const LDKCVec_RecentPaymentDetailsZ* operator &() const { return &self; }
8511         const LDKCVec_RecentPaymentDetailsZ* operator ->() const { return &self; }
8512 };
8513 class CVec_RouteHintHopZ {
8514 private:
8515         LDKCVec_RouteHintHopZ self;
8516 public:
8517         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
8518         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
8519         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
8520         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
8521         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
8522         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
8523         LDKCVec_RouteHintHopZ* operator &() { return &self; }
8524         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
8525         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
8526         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
8527 };
8528 class CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ {
8529 private:
8530         LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ self;
8531 public:
8532         CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ(const CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ&) = delete;
8533         CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ(CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ)); }
8534         CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ(LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ)); }
8535         operator LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ() && { LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ)); return res; }
8536         ~CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ() { CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ_free(self); }
8537         CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ& operator=(CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ&& o) { CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ)); return *this; }
8538         LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ* operator &() { return &self; }
8539         LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ* operator ->() { return &self; }
8540         const LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ* operator &() const { return &self; }
8541         const LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ* operator ->() const { return &self; }
8542 };
8543 class CResult_UntrustedStringDecodeErrorZ {
8544 private:
8545         LDKCResult_UntrustedStringDecodeErrorZ self;
8546 public:
8547         CResult_UntrustedStringDecodeErrorZ(const CResult_UntrustedStringDecodeErrorZ&) = delete;
8548         CResult_UntrustedStringDecodeErrorZ(CResult_UntrustedStringDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UntrustedStringDecodeErrorZ)); }
8549         CResult_UntrustedStringDecodeErrorZ(LDKCResult_UntrustedStringDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UntrustedStringDecodeErrorZ)); }
8550         operator LDKCResult_UntrustedStringDecodeErrorZ() && { LDKCResult_UntrustedStringDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UntrustedStringDecodeErrorZ)); return res; }
8551         ~CResult_UntrustedStringDecodeErrorZ() { CResult_UntrustedStringDecodeErrorZ_free(self); }
8552         CResult_UntrustedStringDecodeErrorZ& operator=(CResult_UntrustedStringDecodeErrorZ&& o) { CResult_UntrustedStringDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UntrustedStringDecodeErrorZ)); return *this; }
8553         LDKCResult_UntrustedStringDecodeErrorZ* operator &() { return &self; }
8554         LDKCResult_UntrustedStringDecodeErrorZ* operator ->() { return &self; }
8555         const LDKCResult_UntrustedStringDecodeErrorZ* operator &() const { return &self; }
8556         const LDKCResult_UntrustedStringDecodeErrorZ* operator ->() const { return &self; }
8557 };
8558 class CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ {
8559 private:
8560         LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ self;
8561 public:
8562         CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ(const CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ&) = delete;
8563         CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ(CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ)); }
8564         CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ(LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ)); }
8565         operator LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ() && { LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ)); return res; }
8566         ~CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ() { CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ_free(self); }
8567         CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ& operator=(CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ&& o) { CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ)); return *this; }
8568         LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ* operator &() { return &self; }
8569         LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ* operator ->() { return &self; }
8570         const LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ* operator &() const { return &self; }
8571         const LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ* operator ->() const { return &self; }
8572 };
8573 class CVec_U5Z {
8574 private:
8575         LDKCVec_U5Z self;
8576 public:
8577         CVec_U5Z(const CVec_U5Z&) = delete;
8578         CVec_U5Z(CVec_U5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_U5Z)); }
8579         CVec_U5Z(LDKCVec_U5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_U5Z)); }
8580         operator LDKCVec_U5Z() && { LDKCVec_U5Z res = self; memset(&self, 0, sizeof(LDKCVec_U5Z)); return res; }
8581         ~CVec_U5Z() { CVec_U5Z_free(self); }
8582         CVec_U5Z& operator=(CVec_U5Z&& o) { CVec_U5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_U5Z)); return *this; }
8583         LDKCVec_U5Z* operator &() { return &self; }
8584         LDKCVec_U5Z* operator ->() { return &self; }
8585         const LDKCVec_U5Z* operator &() const { return &self; }
8586         const LDKCVec_U5Z* operator ->() const { return &self; }
8587 };
8588 class CResult_PaymentParametersDecodeErrorZ {
8589 private:
8590         LDKCResult_PaymentParametersDecodeErrorZ self;
8591 public:
8592         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
8593         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
8594         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
8595         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
8596         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
8597         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
8598         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
8599         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
8600         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
8601         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
8602 };
8603 class C2Tuple_ThirtyTwoBytesChannelMonitorZ {
8604 private:
8605         LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ self;
8606 public:
8607         C2Tuple_ThirtyTwoBytesChannelMonitorZ(const C2Tuple_ThirtyTwoBytesChannelMonitorZ&) = delete;
8608         C2Tuple_ThirtyTwoBytesChannelMonitorZ(C2Tuple_ThirtyTwoBytesChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesChannelMonitorZ)); }
8609         C2Tuple_ThirtyTwoBytesChannelMonitorZ(LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ)); }
8610         operator LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ() && { LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ)); return res; }
8611         ~C2Tuple_ThirtyTwoBytesChannelMonitorZ() { C2Tuple_ThirtyTwoBytesChannelMonitorZ_free(self); }
8612         C2Tuple_ThirtyTwoBytesChannelMonitorZ& operator=(C2Tuple_ThirtyTwoBytesChannelMonitorZ&& o) { C2Tuple_ThirtyTwoBytesChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesChannelMonitorZ)); return *this; }
8613         LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ* operator &() { return &self; }
8614         LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ* operator ->() { return &self; }
8615         const LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ* operator &() const { return &self; }
8616         const LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ* operator ->() const { return &self; }
8617 };
8618 class COption_U128Z {
8619 private:
8620         LDKCOption_U128Z self;
8621 public:
8622         COption_U128Z(const COption_U128Z&) = delete;
8623         COption_U128Z(COption_U128Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_U128Z)); }
8624         COption_U128Z(LDKCOption_U128Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_U128Z)); }
8625         operator LDKCOption_U128Z() && { LDKCOption_U128Z res = self; memset(&self, 0, sizeof(LDKCOption_U128Z)); return res; }
8626         ~COption_U128Z() { COption_U128Z_free(self); }
8627         COption_U128Z& operator=(COption_U128Z&& o) { COption_U128Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_U128Z)); return *this; }
8628         LDKCOption_U128Z* operator &() { return &self; }
8629         LDKCOption_U128Z* operator ->() { return &self; }
8630         const LDKCOption_U128Z* operator &() const { return &self; }
8631         const LDKCOption_U128Z* operator ->() const { return &self; }
8632 };
8633 class CResult_DelayedPaymentBasepointDecodeErrorZ {
8634 private:
8635         LDKCResult_DelayedPaymentBasepointDecodeErrorZ self;
8636 public:
8637         CResult_DelayedPaymentBasepointDecodeErrorZ(const CResult_DelayedPaymentBasepointDecodeErrorZ&) = delete;
8638         CResult_DelayedPaymentBasepointDecodeErrorZ(CResult_DelayedPaymentBasepointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentBasepointDecodeErrorZ)); }
8639         CResult_DelayedPaymentBasepointDecodeErrorZ(LDKCResult_DelayedPaymentBasepointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentBasepointDecodeErrorZ)); }
8640         operator LDKCResult_DelayedPaymentBasepointDecodeErrorZ() && { LDKCResult_DelayedPaymentBasepointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentBasepointDecodeErrorZ)); return res; }
8641         ~CResult_DelayedPaymentBasepointDecodeErrorZ() { CResult_DelayedPaymentBasepointDecodeErrorZ_free(self); }
8642         CResult_DelayedPaymentBasepointDecodeErrorZ& operator=(CResult_DelayedPaymentBasepointDecodeErrorZ&& o) { CResult_DelayedPaymentBasepointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentBasepointDecodeErrorZ)); return *this; }
8643         LDKCResult_DelayedPaymentBasepointDecodeErrorZ* operator &() { return &self; }
8644         LDKCResult_DelayedPaymentBasepointDecodeErrorZ* operator ->() { return &self; }
8645         const LDKCResult_DelayedPaymentBasepointDecodeErrorZ* operator &() const { return &self; }
8646         const LDKCResult_DelayedPaymentBasepointDecodeErrorZ* operator ->() const { return &self; }
8647 };
8648 class C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ {
8649 private:
8650         LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ self;
8651 public:
8652         C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ(const C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ&) = delete;
8653         C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ(C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ)); }
8654         C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ(LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ)); }
8655         operator LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ() && { LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ)); return res; }
8656         ~C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ() { C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ_free(self); }
8657         C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ& operator=(C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ&& o) { C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ)); return *this; }
8658         LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ* operator &() { return &self; }
8659         LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ* operator ->() { return &self; }
8660         const LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ* operator &() const { return &self; }
8661         const LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ* operator ->() const { return &self; }
8662 };
8663 class CResult_TxAckRbfDecodeErrorZ {
8664 private:
8665         LDKCResult_TxAckRbfDecodeErrorZ self;
8666 public:
8667         CResult_TxAckRbfDecodeErrorZ(const CResult_TxAckRbfDecodeErrorZ&) = delete;
8668         CResult_TxAckRbfDecodeErrorZ(CResult_TxAckRbfDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAckRbfDecodeErrorZ)); }
8669         CResult_TxAckRbfDecodeErrorZ(LDKCResult_TxAckRbfDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAckRbfDecodeErrorZ)); }
8670         operator LDKCResult_TxAckRbfDecodeErrorZ() && { LDKCResult_TxAckRbfDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAckRbfDecodeErrorZ)); return res; }
8671         ~CResult_TxAckRbfDecodeErrorZ() { CResult_TxAckRbfDecodeErrorZ_free(self); }
8672         CResult_TxAckRbfDecodeErrorZ& operator=(CResult_TxAckRbfDecodeErrorZ&& o) { CResult_TxAckRbfDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAckRbfDecodeErrorZ)); return *this; }
8673         LDKCResult_TxAckRbfDecodeErrorZ* operator &() { return &self; }
8674         LDKCResult_TxAckRbfDecodeErrorZ* operator ->() { return &self; }
8675         const LDKCResult_TxAckRbfDecodeErrorZ* operator &() const { return &self; }
8676         const LDKCResult_TxAckRbfDecodeErrorZ* operator ->() const { return &self; }
8677 };
8678 class CResult_Bolt11InvoiceBolt11SemanticErrorZ {
8679 private:
8680         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ self;
8681 public:
8682         CResult_Bolt11InvoiceBolt11SemanticErrorZ(const CResult_Bolt11InvoiceBolt11SemanticErrorZ&) = delete;
8683         CResult_Bolt11InvoiceBolt11SemanticErrorZ(CResult_Bolt11InvoiceBolt11SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceBolt11SemanticErrorZ)); }
8684         CResult_Bolt11InvoiceBolt11SemanticErrorZ(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ)); }
8685         operator LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ() && { LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ)); return res; }
8686         ~CResult_Bolt11InvoiceBolt11SemanticErrorZ() { CResult_Bolt11InvoiceBolt11SemanticErrorZ_free(self); }
8687         CResult_Bolt11InvoiceBolt11SemanticErrorZ& operator=(CResult_Bolt11InvoiceBolt11SemanticErrorZ&& o) { CResult_Bolt11InvoiceBolt11SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceBolt11SemanticErrorZ)); return *this; }
8688         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator &() { return &self; }
8689         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator ->() { return &self; }
8690         const LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator &() const { return &self; }
8691         const LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator ->() const { return &self; }
8692 };
8693 class COption_UtxoLookupZ {
8694 private:
8695         LDKCOption_UtxoLookupZ self;
8696 public:
8697         COption_UtxoLookupZ(const COption_UtxoLookupZ&) = delete;
8698         COption_UtxoLookupZ(COption_UtxoLookupZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_UtxoLookupZ)); }
8699         COption_UtxoLookupZ(LDKCOption_UtxoLookupZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_UtxoLookupZ)); }
8700         operator LDKCOption_UtxoLookupZ() && { LDKCOption_UtxoLookupZ res = self; memset(&self, 0, sizeof(LDKCOption_UtxoLookupZ)); return res; }
8701         ~COption_UtxoLookupZ() { COption_UtxoLookupZ_free(self); }
8702         COption_UtxoLookupZ& operator=(COption_UtxoLookupZ&& o) { COption_UtxoLookupZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_UtxoLookupZ)); return *this; }
8703         LDKCOption_UtxoLookupZ* operator &() { return &self; }
8704         LDKCOption_UtxoLookupZ* operator ->() { return &self; }
8705         const LDKCOption_UtxoLookupZ* operator &() const { return &self; }
8706         const LDKCOption_UtxoLookupZ* operator ->() const { return &self; }
8707 };
8708 class CResult_PongDecodeErrorZ {
8709 private:
8710         LDKCResult_PongDecodeErrorZ self;
8711 public:
8712         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
8713         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
8714         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
8715         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
8716         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
8717         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
8718         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
8719         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
8720         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
8721         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
8722 };
8723 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
8724 private:
8725         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
8726 public:
8727         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
8728         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
8729         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
8730         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
8731         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
8732         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
8733         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
8734         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
8735         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
8736         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
8737 };
8738 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ {
8739 private:
8740         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ self;
8741 public:
8742         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(const C2Tuple_OutPointCVec_MonitorUpdateIdZZ&) = delete;
8743         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(C2Tuple_OutPointCVec_MonitorUpdateIdZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
8744         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
8745         operator LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ() && { LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); return res; }
8746         ~C2Tuple_OutPointCVec_MonitorUpdateIdZZ() { C2Tuple_OutPointCVec_MonitorUpdateIdZZ_free(self); }
8747         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; }
8748         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() { return &self; }
8749         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() { return &self; }
8750         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() const { return &self; }
8751         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() const { return &self; }
8752 };
8753 class CResult_ChannelIdAPIErrorZ {
8754 private:
8755         LDKCResult_ChannelIdAPIErrorZ self;
8756 public:
8757         CResult_ChannelIdAPIErrorZ(const CResult_ChannelIdAPIErrorZ&) = delete;
8758         CResult_ChannelIdAPIErrorZ(CResult_ChannelIdAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelIdAPIErrorZ)); }
8759         CResult_ChannelIdAPIErrorZ(LDKCResult_ChannelIdAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelIdAPIErrorZ)); }
8760         operator LDKCResult_ChannelIdAPIErrorZ() && { LDKCResult_ChannelIdAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelIdAPIErrorZ)); return res; }
8761         ~CResult_ChannelIdAPIErrorZ() { CResult_ChannelIdAPIErrorZ_free(self); }
8762         CResult_ChannelIdAPIErrorZ& operator=(CResult_ChannelIdAPIErrorZ&& o) { CResult_ChannelIdAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelIdAPIErrorZ)); return *this; }
8763         LDKCResult_ChannelIdAPIErrorZ* operator &() { return &self; }
8764         LDKCResult_ChannelIdAPIErrorZ* operator ->() { return &self; }
8765         const LDKCResult_ChannelIdAPIErrorZ* operator &() const { return &self; }
8766         const LDKCResult_ChannelIdAPIErrorZ* operator ->() const { return &self; }
8767 };
8768 class CResult_CVec_u8ZNoneZ {
8769 private:
8770         LDKCResult_CVec_u8ZNoneZ self;
8771 public:
8772         CResult_CVec_u8ZNoneZ(const CResult_CVec_u8ZNoneZ&) = delete;
8773         CResult_CVec_u8ZNoneZ(CResult_CVec_u8ZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZNoneZ)); }
8774         CResult_CVec_u8ZNoneZ(LDKCResult_CVec_u8ZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZNoneZ)); }
8775         operator LDKCResult_CVec_u8ZNoneZ() && { LDKCResult_CVec_u8ZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZNoneZ)); return res; }
8776         ~CResult_CVec_u8ZNoneZ() { CResult_CVec_u8ZNoneZ_free(self); }
8777         CResult_CVec_u8ZNoneZ& operator=(CResult_CVec_u8ZNoneZ&& o) { CResult_CVec_u8ZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_u8ZNoneZ)); return *this; }
8778         LDKCResult_CVec_u8ZNoneZ* operator &() { return &self; }
8779         LDKCResult_CVec_u8ZNoneZ* operator ->() { return &self; }
8780         const LDKCResult_CVec_u8ZNoneZ* operator &() const { return &self; }
8781         const LDKCResult_CVec_u8ZNoneZ* operator ->() const { return &self; }
8782 };
8783 class CVec_C2Tuple_ChannelIdPublicKeyZZ {
8784 private:
8785         LDKCVec_C2Tuple_ChannelIdPublicKeyZZ self;
8786 public:
8787         CVec_C2Tuple_ChannelIdPublicKeyZZ(const CVec_C2Tuple_ChannelIdPublicKeyZZ&) = delete;
8788         CVec_C2Tuple_ChannelIdPublicKeyZZ(CVec_C2Tuple_ChannelIdPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_ChannelIdPublicKeyZZ)); }
8789         CVec_C2Tuple_ChannelIdPublicKeyZZ(LDKCVec_C2Tuple_ChannelIdPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_ChannelIdPublicKeyZZ)); }
8790         operator LDKCVec_C2Tuple_ChannelIdPublicKeyZZ() && { LDKCVec_C2Tuple_ChannelIdPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_ChannelIdPublicKeyZZ)); return res; }
8791         ~CVec_C2Tuple_ChannelIdPublicKeyZZ() { CVec_C2Tuple_ChannelIdPublicKeyZZ_free(self); }
8792         CVec_C2Tuple_ChannelIdPublicKeyZZ& operator=(CVec_C2Tuple_ChannelIdPublicKeyZZ&& o) { CVec_C2Tuple_ChannelIdPublicKeyZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_ChannelIdPublicKeyZZ)); return *this; }
8793         LDKCVec_C2Tuple_ChannelIdPublicKeyZZ* operator &() { return &self; }
8794         LDKCVec_C2Tuple_ChannelIdPublicKeyZZ* operator ->() { return &self; }
8795         const LDKCVec_C2Tuple_ChannelIdPublicKeyZZ* operator &() const { return &self; }
8796         const LDKCVec_C2Tuple_ChannelIdPublicKeyZZ* operator ->() const { return &self; }
8797 };
8798 class C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ {
8799 private:
8800         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ self;
8801 public:
8802         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ&) = delete;
8803         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ)); }
8804         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ)); }
8805         operator LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ)); return res; }
8806         ~C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ_free(self); }
8807         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ& operator=(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ&& o) { C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ)); return *this; }
8808         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
8809         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
8810         const LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
8811         const LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
8812 };
8813 class CResult_ChannelTransactionParametersDecodeErrorZ {
8814 private:
8815         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
8816 public:
8817         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
8818         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
8819         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
8820         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
8821         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
8822         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
8823         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
8824         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
8825         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
8826         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
8827 };
8828 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ {
8829 private:
8830         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ self;
8831 public:
8832         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(const CResult_WriteableEcdsaChannelSignerDecodeErrorZ&) = delete;
8833         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
8834         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
8835         operator LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ() && { LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return res; }
8836         ~CResult_WriteableEcdsaChannelSignerDecodeErrorZ() { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); }
8837         CResult_WriteableEcdsaChannelSignerDecodeErrorZ& operator=(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return *this; }
8838         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() { return &self; }
8839         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() { return &self; }
8840         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() const { return &self; }
8841         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() const { return &self; }
8842 };
8843 class CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ {
8844 private:
8845         LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ self;
8846 public:
8847         CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ(const CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ&) = delete;
8848         CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ(CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ)); }
8849         CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ(LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ)); }
8850         operator LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ() && { LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ)); return res; }
8851         ~CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ() { CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ_free(self); }
8852         CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ& operator=(CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ&& o) { CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ)); return *this; }
8853         LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ* operator &() { return &self; }
8854         LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
8855         const LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
8856         const LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
8857 };
8858 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
8859 private:
8860         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
8861 public:
8862         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
8863         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
8864         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
8865         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
8866         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
8867         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
8868         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
8869         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
8870         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
8871         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
8872 };
8873 class CResult_InFlightHtlcsDecodeErrorZ {
8874 private:
8875         LDKCResult_InFlightHtlcsDecodeErrorZ self;
8876 public:
8877         CResult_InFlightHtlcsDecodeErrorZ(const CResult_InFlightHtlcsDecodeErrorZ&) = delete;
8878         CResult_InFlightHtlcsDecodeErrorZ(CResult_InFlightHtlcsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); }
8879         CResult_InFlightHtlcsDecodeErrorZ(LDKCResult_InFlightHtlcsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); }
8880         operator LDKCResult_InFlightHtlcsDecodeErrorZ() && { LDKCResult_InFlightHtlcsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); return res; }
8881         ~CResult_InFlightHtlcsDecodeErrorZ() { CResult_InFlightHtlcsDecodeErrorZ_free(self); }
8882         CResult_InFlightHtlcsDecodeErrorZ& operator=(CResult_InFlightHtlcsDecodeErrorZ&& o) { CResult_InFlightHtlcsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); return *this; }
8883         LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() { return &self; }
8884         LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() { return &self; }
8885         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() const { return &self; }
8886         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() const { return &self; }
8887 };
8888 class CResult_COption_HTLCDestinationZDecodeErrorZ {
8889 private:
8890         LDKCResult_COption_HTLCDestinationZDecodeErrorZ self;
8891 public:
8892         CResult_COption_HTLCDestinationZDecodeErrorZ(const CResult_COption_HTLCDestinationZDecodeErrorZ&) = delete;
8893         CResult_COption_HTLCDestinationZDecodeErrorZ(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); }
8894         CResult_COption_HTLCDestinationZDecodeErrorZ(LDKCResult_COption_HTLCDestinationZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); }
8895         operator LDKCResult_COption_HTLCDestinationZDecodeErrorZ() && { LDKCResult_COption_HTLCDestinationZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); return res; }
8896         ~CResult_COption_HTLCDestinationZDecodeErrorZ() { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); }
8897         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; }
8898         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() { return &self; }
8899         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() { return &self; }
8900         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() const { return &self; }
8901         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() const { return &self; }
8902 };
8903 class CResult_Bolt12OfferContextDecodeErrorZ {
8904 private:
8905         LDKCResult_Bolt12OfferContextDecodeErrorZ self;
8906 public:
8907         CResult_Bolt12OfferContextDecodeErrorZ(const CResult_Bolt12OfferContextDecodeErrorZ&) = delete;
8908         CResult_Bolt12OfferContextDecodeErrorZ(CResult_Bolt12OfferContextDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12OfferContextDecodeErrorZ)); }
8909         CResult_Bolt12OfferContextDecodeErrorZ(LDKCResult_Bolt12OfferContextDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12OfferContextDecodeErrorZ)); }
8910         operator LDKCResult_Bolt12OfferContextDecodeErrorZ() && { LDKCResult_Bolt12OfferContextDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12OfferContextDecodeErrorZ)); return res; }
8911         ~CResult_Bolt12OfferContextDecodeErrorZ() { CResult_Bolt12OfferContextDecodeErrorZ_free(self); }
8912         CResult_Bolt12OfferContextDecodeErrorZ& operator=(CResult_Bolt12OfferContextDecodeErrorZ&& o) { CResult_Bolt12OfferContextDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12OfferContextDecodeErrorZ)); return *this; }
8913         LDKCResult_Bolt12OfferContextDecodeErrorZ* operator &() { return &self; }
8914         LDKCResult_Bolt12OfferContextDecodeErrorZ* operator ->() { return &self; }
8915         const LDKCResult_Bolt12OfferContextDecodeErrorZ* operator &() const { return &self; }
8916         const LDKCResult_Bolt12OfferContextDecodeErrorZ* operator ->() const { return &self; }
8917 };
8918 class CResult_ThirtyTwoBytesNoneZ {
8919 private:
8920         LDKCResult_ThirtyTwoBytesNoneZ self;
8921 public:
8922         CResult_ThirtyTwoBytesNoneZ(const CResult_ThirtyTwoBytesNoneZ&) = delete;
8923         CResult_ThirtyTwoBytesNoneZ(CResult_ThirtyTwoBytesNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ThirtyTwoBytesNoneZ)); }
8924         CResult_ThirtyTwoBytesNoneZ(LDKCResult_ThirtyTwoBytesNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ThirtyTwoBytesNoneZ)); }
8925         operator LDKCResult_ThirtyTwoBytesNoneZ() && { LDKCResult_ThirtyTwoBytesNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ThirtyTwoBytesNoneZ)); return res; }
8926         ~CResult_ThirtyTwoBytesNoneZ() { CResult_ThirtyTwoBytesNoneZ_free(self); }
8927         CResult_ThirtyTwoBytesNoneZ& operator=(CResult_ThirtyTwoBytesNoneZ&& o) { CResult_ThirtyTwoBytesNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ThirtyTwoBytesNoneZ)); return *this; }
8928         LDKCResult_ThirtyTwoBytesNoneZ* operator &() { return &self; }
8929         LDKCResult_ThirtyTwoBytesNoneZ* operator ->() { return &self; }
8930         const LDKCResult_ThirtyTwoBytesNoneZ* operator &() const { return &self; }
8931         const LDKCResult_ThirtyTwoBytesNoneZ* operator ->() const { return &self; }
8932 };
8933 class C3Tuple_OnionMessageContentsDestinationBlindedPathZ {
8934 private:
8935         LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ self;
8936 public:
8937         C3Tuple_OnionMessageContentsDestinationBlindedPathZ(const C3Tuple_OnionMessageContentsDestinationBlindedPathZ&) = delete;
8938         C3Tuple_OnionMessageContentsDestinationBlindedPathZ(C3Tuple_OnionMessageContentsDestinationBlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OnionMessageContentsDestinationBlindedPathZ)); }
8939         C3Tuple_OnionMessageContentsDestinationBlindedPathZ(LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ)); }
8940         operator LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ() && { LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ)); return res; }
8941         ~C3Tuple_OnionMessageContentsDestinationBlindedPathZ() { C3Tuple_OnionMessageContentsDestinationBlindedPathZ_free(self); }
8942         C3Tuple_OnionMessageContentsDestinationBlindedPathZ& operator=(C3Tuple_OnionMessageContentsDestinationBlindedPathZ&& o) { C3Tuple_OnionMessageContentsDestinationBlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_OnionMessageContentsDestinationBlindedPathZ)); return *this; }
8943         LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ* operator &() { return &self; }
8944         LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ* operator ->() { return &self; }
8945         const LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ* operator &() const { return &self; }
8946         const LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ* operator ->() const { return &self; }
8947 };
8948 class C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ {
8949 private:
8950         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ self;
8951 public:
8952         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(const C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&) = delete;
8953         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); }
8954         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); }
8955         operator LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ() && { LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); return res; }
8956         ~C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ() { C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ_free(self); }
8957         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; }
8958         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator &() { return &self; }
8959         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator ->() { return &self; }
8960         const LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator &() const { return &self; }
8961         const LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator ->() const { return &self; }
8962 };
8963 class CResult_SendSuccessSendErrorZ {
8964 private:
8965         LDKCResult_SendSuccessSendErrorZ self;
8966 public:
8967         CResult_SendSuccessSendErrorZ(const CResult_SendSuccessSendErrorZ&) = delete;
8968         CResult_SendSuccessSendErrorZ(CResult_SendSuccessSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SendSuccessSendErrorZ)); }
8969         CResult_SendSuccessSendErrorZ(LDKCResult_SendSuccessSendErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SendSuccessSendErrorZ)); }
8970         operator LDKCResult_SendSuccessSendErrorZ() && { LDKCResult_SendSuccessSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SendSuccessSendErrorZ)); return res; }
8971         ~CResult_SendSuccessSendErrorZ() { CResult_SendSuccessSendErrorZ_free(self); }
8972         CResult_SendSuccessSendErrorZ& operator=(CResult_SendSuccessSendErrorZ&& o) { CResult_SendSuccessSendErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SendSuccessSendErrorZ)); return *this; }
8973         LDKCResult_SendSuccessSendErrorZ* operator &() { return &self; }
8974         LDKCResult_SendSuccessSendErrorZ* operator ->() { return &self; }
8975         const LDKCResult_SendSuccessSendErrorZ* operator &() const { return &self; }
8976         const LDKCResult_SendSuccessSendErrorZ* operator ->() const { return &self; }
8977 };
8978 class CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ {
8979 private:
8980         LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ self;
8981 public:
8982         CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ(const CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ&) = delete;
8983         CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ(CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ)); }
8984         CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ(LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ)); }
8985         operator LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ() && { LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ)); return res; }
8986         ~CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ() { CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ_free(self); }
8987         CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ& operator=(CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ&& o) { CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ)); return *this; }
8988         LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ* operator &() { return &self; }
8989         LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ* operator ->() { return &self; }
8990         const LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ* operator &() const { return &self; }
8991         const LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ* operator ->() const { return &self; }
8992 };
8993 class C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ {
8994 private:
8995         LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ self;
8996 public:
8997         C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ(const C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ&) = delete;
8998         C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ(C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ)); }
8999         C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ(LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ)); }
9000         operator LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ() && { LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ)); return res; }
9001         ~C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ() { C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ_free(self); }
9002         C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ& operator=(C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ&& o) { C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ)); return *this; }
9003         LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ* operator &() { return &self; }
9004         LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ* operator ->() { return &self; }
9005         const LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ* operator &() const { return &self; }
9006         const LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ* operator ->() const { return &self; }
9007 };
9008 class CResult_BlindedHopDecodeErrorZ {
9009 private:
9010         LDKCResult_BlindedHopDecodeErrorZ self;
9011 public:
9012         CResult_BlindedHopDecodeErrorZ(const CResult_BlindedHopDecodeErrorZ&) = delete;
9013         CResult_BlindedHopDecodeErrorZ(CResult_BlindedHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); }
9014         CResult_BlindedHopDecodeErrorZ(LDKCResult_BlindedHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); }
9015         operator LDKCResult_BlindedHopDecodeErrorZ() && { LDKCResult_BlindedHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); return res; }
9016         ~CResult_BlindedHopDecodeErrorZ() { CResult_BlindedHopDecodeErrorZ_free(self); }
9017         CResult_BlindedHopDecodeErrorZ& operator=(CResult_BlindedHopDecodeErrorZ&& o) { CResult_BlindedHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); return *this; }
9018         LDKCResult_BlindedHopDecodeErrorZ* operator &() { return &self; }
9019         LDKCResult_BlindedHopDecodeErrorZ* operator ->() { return &self; }
9020         const LDKCResult_BlindedHopDecodeErrorZ* operator &() const { return &self; }
9021         const LDKCResult_BlindedHopDecodeErrorZ* operator ->() const { return &self; }
9022 };
9023 class CResult_NoneLightningErrorZ {
9024 private:
9025         LDKCResult_NoneLightningErrorZ self;
9026 public:
9027         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
9028         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
9029         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
9030         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
9031         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
9032         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
9033         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
9034         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
9035         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
9036         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
9037 };
9038 class CResult_FixedPenaltyScorerDecodeErrorZ {
9039 private:
9040         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
9041 public:
9042         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
9043         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
9044         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
9045         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
9046         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
9047         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
9048         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
9049         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
9050         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
9051         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
9052 };
9053 class CVec_BlindedPathZ {
9054 private:
9055         LDKCVec_BlindedPathZ self;
9056 public:
9057         CVec_BlindedPathZ(const CVec_BlindedPathZ&) = delete;
9058         CVec_BlindedPathZ(CVec_BlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BlindedPathZ)); }
9059         CVec_BlindedPathZ(LDKCVec_BlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BlindedPathZ)); }
9060         operator LDKCVec_BlindedPathZ() && { LDKCVec_BlindedPathZ res = self; memset(&self, 0, sizeof(LDKCVec_BlindedPathZ)); return res; }
9061         ~CVec_BlindedPathZ() { CVec_BlindedPathZ_free(self); }
9062         CVec_BlindedPathZ& operator=(CVec_BlindedPathZ&& o) { CVec_BlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BlindedPathZ)); return *this; }
9063         LDKCVec_BlindedPathZ* operator &() { return &self; }
9064         LDKCVec_BlindedPathZ* operator ->() { return &self; }
9065         const LDKCVec_BlindedPathZ* operator &() const { return &self; }
9066         const LDKCVec_BlindedPathZ* operator ->() const { return &self; }
9067 };
9068 class CResult_NonePeerHandleErrorZ {
9069 private:
9070         LDKCResult_NonePeerHandleErrorZ self;
9071 public:
9072         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
9073         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
9074         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
9075         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
9076         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
9077         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
9078         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
9079         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
9080         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
9081         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
9082 };
9083 class CResult_FinalOnionHopDataDecodeErrorZ {
9084 private:
9085         LDKCResult_FinalOnionHopDataDecodeErrorZ self;
9086 public:
9087         CResult_FinalOnionHopDataDecodeErrorZ(const CResult_FinalOnionHopDataDecodeErrorZ&) = delete;
9088         CResult_FinalOnionHopDataDecodeErrorZ(CResult_FinalOnionHopDataDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FinalOnionHopDataDecodeErrorZ)); }
9089         CResult_FinalOnionHopDataDecodeErrorZ(LDKCResult_FinalOnionHopDataDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FinalOnionHopDataDecodeErrorZ)); }
9090         operator LDKCResult_FinalOnionHopDataDecodeErrorZ() && { LDKCResult_FinalOnionHopDataDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FinalOnionHopDataDecodeErrorZ)); return res; }
9091         ~CResult_FinalOnionHopDataDecodeErrorZ() { CResult_FinalOnionHopDataDecodeErrorZ_free(self); }
9092         CResult_FinalOnionHopDataDecodeErrorZ& operator=(CResult_FinalOnionHopDataDecodeErrorZ&& o) { CResult_FinalOnionHopDataDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FinalOnionHopDataDecodeErrorZ)); return *this; }
9093         LDKCResult_FinalOnionHopDataDecodeErrorZ* operator &() { return &self; }
9094         LDKCResult_FinalOnionHopDataDecodeErrorZ* operator ->() { return &self; }
9095         const LDKCResult_FinalOnionHopDataDecodeErrorZ* operator &() const { return &self; }
9096         const LDKCResult_FinalOnionHopDataDecodeErrorZ* operator ->() const { return &self; }
9097 };
9098 class CResult_TrustedCommitmentTransactionNoneZ {
9099 private:
9100         LDKCResult_TrustedCommitmentTransactionNoneZ self;
9101 public:
9102         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
9103         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
9104         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
9105         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
9106         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
9107         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
9108         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
9109         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
9110         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
9111         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
9112 };
9113 class CResult_COption_EventZDecodeErrorZ {
9114 private:
9115         LDKCResult_COption_EventZDecodeErrorZ self;
9116 public:
9117         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
9118         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
9119         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
9120         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
9121         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
9122         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; }
9123         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
9124         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
9125         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
9126         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
9127 };
9128 class CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ {
9129 private:
9130         LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ self;
9131 public:
9132         CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ(const CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ&) = delete;
9133         CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ(CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ)); }
9134         CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ(LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ)); }
9135         operator LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ() && { LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ)); return res; }
9136         ~CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ() { CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ_free(self); }
9137         CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ& operator=(CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ&& o) { CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ)); return *this; }
9138         LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ* operator &() { return &self; }
9139         LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ* operator ->() { return &self; }
9140         const LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ* operator &() const { return &self; }
9141         const LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ* operator ->() const { return &self; }
9142 };
9143 class CResult_PaymentFailureReasonDecodeErrorZ {
9144 private:
9145         LDKCResult_PaymentFailureReasonDecodeErrorZ self;
9146 public:
9147         CResult_PaymentFailureReasonDecodeErrorZ(const CResult_PaymentFailureReasonDecodeErrorZ&) = delete;
9148         CResult_PaymentFailureReasonDecodeErrorZ(CResult_PaymentFailureReasonDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentFailureReasonDecodeErrorZ)); }
9149         CResult_PaymentFailureReasonDecodeErrorZ(LDKCResult_PaymentFailureReasonDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentFailureReasonDecodeErrorZ)); }
9150         operator LDKCResult_PaymentFailureReasonDecodeErrorZ() && { LDKCResult_PaymentFailureReasonDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentFailureReasonDecodeErrorZ)); return res; }
9151         ~CResult_PaymentFailureReasonDecodeErrorZ() { CResult_PaymentFailureReasonDecodeErrorZ_free(self); }
9152         CResult_PaymentFailureReasonDecodeErrorZ& operator=(CResult_PaymentFailureReasonDecodeErrorZ&& o) { CResult_PaymentFailureReasonDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentFailureReasonDecodeErrorZ)); return *this; }
9153         LDKCResult_PaymentFailureReasonDecodeErrorZ* operator &() { return &self; }
9154         LDKCResult_PaymentFailureReasonDecodeErrorZ* operator ->() { return &self; }
9155         const LDKCResult_PaymentFailureReasonDecodeErrorZ* operator &() const { return &self; }
9156         const LDKCResult_PaymentFailureReasonDecodeErrorZ* operator ->() const { return &self; }
9157 };
9158 class COption_SocketAddressZ {
9159 private:
9160         LDKCOption_SocketAddressZ self;
9161 public:
9162         COption_SocketAddressZ(const COption_SocketAddressZ&) = delete;
9163         COption_SocketAddressZ(COption_SocketAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_SocketAddressZ)); }
9164         COption_SocketAddressZ(LDKCOption_SocketAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_SocketAddressZ)); }
9165         operator LDKCOption_SocketAddressZ() && { LDKCOption_SocketAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_SocketAddressZ)); return res; }
9166         ~COption_SocketAddressZ() { COption_SocketAddressZ_free(self); }
9167         COption_SocketAddressZ& operator=(COption_SocketAddressZ&& o) { COption_SocketAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_SocketAddressZ)); return *this; }
9168         LDKCOption_SocketAddressZ* operator &() { return &self; }
9169         LDKCOption_SocketAddressZ* operator ->() { return &self; }
9170         const LDKCOption_SocketAddressZ* operator &() const { return &self; }
9171         const LDKCOption_SocketAddressZ* operator ->() const { return &self; }
9172 };
9173 class CResult_COption_MonitorEventZDecodeErrorZ {
9174 private:
9175         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
9176 public:
9177         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
9178         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
9179         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
9180         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
9181         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
9182         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; }
9183         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
9184         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
9185         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
9186         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
9187 };
9188 class COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ {
9189 private:
9190         LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ self;
9191 public:
9192         COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ(const COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ&) = delete;
9193         COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ(COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ)); }
9194         COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ(LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ)); }
9195         operator LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ() && { LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ)); return res; }
9196         ~COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ() { COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ_free(self); }
9197         COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ& operator=(COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ&& o) { COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ)); return *this; }
9198         LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ* operator &() { return &self; }
9199         LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ* operator ->() { return &self; }
9200         const LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ* operator &() const { return &self; }
9201         const LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ* operator ->() const { return &self; }
9202 };
9203 class CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ {
9204 private:
9205         LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ self;
9206 public:
9207         CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ(const CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ&) = delete;
9208         CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ(CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ)); }
9209         CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ(LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ)); }
9210         operator LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ() && { LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ)); return res; }
9211         ~CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ() { CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ_free(self); }
9212         CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ& operator=(CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ&& o) { CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ)); return *this; }
9213         LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ* operator &() { return &self; }
9214         LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ* operator ->() { return &self; }
9215         const LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ* operator &() const { return &self; }
9216         const LDKCResult_COption_OutboundHTLCStateDetailsZDecodeErrorZ* operator ->() const { return &self; }
9217 };
9218 class CResult_RoutingFeesDecodeErrorZ {
9219 private:
9220         LDKCResult_RoutingFeesDecodeErrorZ self;
9221 public:
9222         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
9223         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
9224         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
9225         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
9226         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
9227         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
9228         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
9229         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
9230         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
9231         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
9232 };
9233 class CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ {
9234 private:
9235         LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ self;
9236 public:
9237         CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ(const CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ&) = delete;
9238         CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ(CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ)); }
9239         CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ(LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ)); }
9240         operator LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ() && { LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ)); return res; }
9241         ~CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ() { CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ_free(self); }
9242         CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ& operator=(CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ&& o) { CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ)); return *this; }
9243         LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ* operator &() { return &self; }
9244         LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ* operator ->() { return &self; }
9245         const LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ* operator &() const { return &self; }
9246         const LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ* operator ->() const { return &self; }
9247 };
9248 class CResult_NoneTxSyncErrorZ {
9249 private:
9250         LDKCResult_NoneTxSyncErrorZ self;
9251 public:
9252         CResult_NoneTxSyncErrorZ(const CResult_NoneTxSyncErrorZ&) = delete;
9253         CResult_NoneTxSyncErrorZ(CResult_NoneTxSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneTxSyncErrorZ)); }
9254         CResult_NoneTxSyncErrorZ(LDKCResult_NoneTxSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneTxSyncErrorZ)); }
9255         operator LDKCResult_NoneTxSyncErrorZ() && { LDKCResult_NoneTxSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneTxSyncErrorZ)); return res; }
9256         ~CResult_NoneTxSyncErrorZ() { CResult_NoneTxSyncErrorZ_free(self); }
9257         CResult_NoneTxSyncErrorZ& operator=(CResult_NoneTxSyncErrorZ&& o) { CResult_NoneTxSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneTxSyncErrorZ)); return *this; }
9258         LDKCResult_NoneTxSyncErrorZ* operator &() { return &self; }
9259         LDKCResult_NoneTxSyncErrorZ* operator ->() { return &self; }
9260         const LDKCResult_NoneTxSyncErrorZ* operator &() const { return &self; }
9261         const LDKCResult_NoneTxSyncErrorZ* operator ->() const { return &self; }
9262 };
9263 class CResult_DescriptionCreationErrorZ {
9264 private:
9265         LDKCResult_DescriptionCreationErrorZ self;
9266 public:
9267         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
9268         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
9269         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
9270         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
9271         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
9272         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
9273         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
9274         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
9275         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
9276         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
9277 };
9278 class CResult_QueryShortChannelIdsDecodeErrorZ {
9279 private:
9280         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
9281 public:
9282         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
9283         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
9284         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
9285         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
9286         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
9287         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
9288         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
9289         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
9290         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
9291         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
9292 };
9293 class CResult_VerifiedInvoiceRequestNoneZ {
9294 private:
9295         LDKCResult_VerifiedInvoiceRequestNoneZ self;
9296 public:
9297         CResult_VerifiedInvoiceRequestNoneZ(const CResult_VerifiedInvoiceRequestNoneZ&) = delete;
9298         CResult_VerifiedInvoiceRequestNoneZ(CResult_VerifiedInvoiceRequestNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_VerifiedInvoiceRequestNoneZ)); }
9299         CResult_VerifiedInvoiceRequestNoneZ(LDKCResult_VerifiedInvoiceRequestNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_VerifiedInvoiceRequestNoneZ)); }
9300         operator LDKCResult_VerifiedInvoiceRequestNoneZ() && { LDKCResult_VerifiedInvoiceRequestNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_VerifiedInvoiceRequestNoneZ)); return res; }
9301         ~CResult_VerifiedInvoiceRequestNoneZ() { CResult_VerifiedInvoiceRequestNoneZ_free(self); }
9302         CResult_VerifiedInvoiceRequestNoneZ& operator=(CResult_VerifiedInvoiceRequestNoneZ&& o) { CResult_VerifiedInvoiceRequestNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_VerifiedInvoiceRequestNoneZ)); return *this; }
9303         LDKCResult_VerifiedInvoiceRequestNoneZ* operator &() { return &self; }
9304         LDKCResult_VerifiedInvoiceRequestNoneZ* operator ->() { return &self; }
9305         const LDKCResult_VerifiedInvoiceRequestNoneZ* operator &() const { return &self; }
9306         const LDKCResult_VerifiedInvoiceRequestNoneZ* operator ->() const { return &self; }
9307 };
9308 class CResult_UpdateAddHTLCDecodeErrorZ {
9309 private:
9310         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
9311 public:
9312         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
9313         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
9314         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
9315         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
9316         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
9317         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
9318         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
9319         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
9320         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
9321         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
9322 };
9323 class CResult_PaymentRelayDecodeErrorZ {
9324 private:
9325         LDKCResult_PaymentRelayDecodeErrorZ self;
9326 public:
9327         CResult_PaymentRelayDecodeErrorZ(const CResult_PaymentRelayDecodeErrorZ&) = delete;
9328         CResult_PaymentRelayDecodeErrorZ(CResult_PaymentRelayDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentRelayDecodeErrorZ)); }
9329         CResult_PaymentRelayDecodeErrorZ(LDKCResult_PaymentRelayDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentRelayDecodeErrorZ)); }
9330         operator LDKCResult_PaymentRelayDecodeErrorZ() && { LDKCResult_PaymentRelayDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentRelayDecodeErrorZ)); return res; }
9331         ~CResult_PaymentRelayDecodeErrorZ() { CResult_PaymentRelayDecodeErrorZ_free(self); }
9332         CResult_PaymentRelayDecodeErrorZ& operator=(CResult_PaymentRelayDecodeErrorZ&& o) { CResult_PaymentRelayDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentRelayDecodeErrorZ)); return *this; }
9333         LDKCResult_PaymentRelayDecodeErrorZ* operator &() { return &self; }
9334         LDKCResult_PaymentRelayDecodeErrorZ* operator ->() { return &self; }
9335         const LDKCResult_PaymentRelayDecodeErrorZ* operator &() const { return &self; }
9336         const LDKCResult_PaymentRelayDecodeErrorZ* operator ->() const { return &self; }
9337 };
9338 class COption_OutboundHTLCStateDetailsZ {
9339 private:
9340         LDKCOption_OutboundHTLCStateDetailsZ self;
9341 public:
9342         COption_OutboundHTLCStateDetailsZ(const COption_OutboundHTLCStateDetailsZ&) = delete;
9343         COption_OutboundHTLCStateDetailsZ(COption_OutboundHTLCStateDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_OutboundHTLCStateDetailsZ)); }
9344         COption_OutboundHTLCStateDetailsZ(LDKCOption_OutboundHTLCStateDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_OutboundHTLCStateDetailsZ)); }
9345         operator LDKCOption_OutboundHTLCStateDetailsZ() && { LDKCOption_OutboundHTLCStateDetailsZ res = self; memset(&self, 0, sizeof(LDKCOption_OutboundHTLCStateDetailsZ)); return res; }
9346         ~COption_OutboundHTLCStateDetailsZ() { COption_OutboundHTLCStateDetailsZ_free(self); }
9347         COption_OutboundHTLCStateDetailsZ& operator=(COption_OutboundHTLCStateDetailsZ&& o) { COption_OutboundHTLCStateDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_OutboundHTLCStateDetailsZ)); return *this; }
9348         LDKCOption_OutboundHTLCStateDetailsZ* operator &() { return &self; }
9349         LDKCOption_OutboundHTLCStateDetailsZ* operator ->() { return &self; }
9350         const LDKCOption_OutboundHTLCStateDetailsZ* operator &() const { return &self; }
9351         const LDKCOption_OutboundHTLCStateDetailsZ* operator ->() const { return &self; }
9352 };
9353 class COption_MonitorEventZ {
9354 private:
9355         LDKCOption_MonitorEventZ self;
9356 public:
9357         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
9358         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
9359         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
9360         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
9361         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
9362         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
9363         LDKCOption_MonitorEventZ* operator &() { return &self; }
9364         LDKCOption_MonitorEventZ* operator ->() { return &self; }
9365         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
9366         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
9367 };
9368 class COption_TypeZ {
9369 private:
9370         LDKCOption_TypeZ self;
9371 public:
9372         COption_TypeZ(const COption_TypeZ&) = delete;
9373         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
9374         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
9375         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
9376         ~COption_TypeZ() { COption_TypeZ_free(self); }
9377         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
9378         LDKCOption_TypeZ* operator &() { return &self; }
9379         LDKCOption_TypeZ* operator ->() { return &self; }
9380         const LDKCOption_TypeZ* operator &() const { return &self; }
9381         const LDKCOption_TypeZ* operator ->() const { return &self; }
9382 };
9383 class CResult_COption_TypeZDecodeErrorZ {
9384 private:
9385         LDKCResult_COption_TypeZDecodeErrorZ self;
9386 public:
9387         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
9388         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
9389         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
9390         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
9391         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
9392         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; }
9393         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
9394         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
9395         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
9396         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
9397 };
9398 class CResult_COption_PathFailureZDecodeErrorZ {
9399 private:
9400         LDKCResult_COption_PathFailureZDecodeErrorZ self;
9401 public:
9402         CResult_COption_PathFailureZDecodeErrorZ(const CResult_COption_PathFailureZDecodeErrorZ&) = delete;
9403         CResult_COption_PathFailureZDecodeErrorZ(CResult_COption_PathFailureZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_PathFailureZDecodeErrorZ)); }
9404         CResult_COption_PathFailureZDecodeErrorZ(LDKCResult_COption_PathFailureZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); }
9405         operator LDKCResult_COption_PathFailureZDecodeErrorZ() && { LDKCResult_COption_PathFailureZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); return res; }
9406         ~CResult_COption_PathFailureZDecodeErrorZ() { CResult_COption_PathFailureZDecodeErrorZ_free(self); }
9407         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; }
9408         LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() { return &self; }
9409         LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() { return &self; }
9410         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() const { return &self; }
9411         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() const { return &self; }
9412 };
9413 class CResult_Bolt11InvoiceSignOrCreationErrorZ {
9414 private:
9415         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ self;
9416 public:
9417         CResult_Bolt11InvoiceSignOrCreationErrorZ(const CResult_Bolt11InvoiceSignOrCreationErrorZ&) = delete;
9418         CResult_Bolt11InvoiceSignOrCreationErrorZ(CResult_Bolt11InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceSignOrCreationErrorZ)); }
9419         CResult_Bolt11InvoiceSignOrCreationErrorZ(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ)); }
9420         operator LDKCResult_Bolt11InvoiceSignOrCreationErrorZ() && { LDKCResult_Bolt11InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ)); return res; }
9421         ~CResult_Bolt11InvoiceSignOrCreationErrorZ() { CResult_Bolt11InvoiceSignOrCreationErrorZ_free(self); }
9422         CResult_Bolt11InvoiceSignOrCreationErrorZ& operator=(CResult_Bolt11InvoiceSignOrCreationErrorZ&& o) { CResult_Bolt11InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceSignOrCreationErrorZ)); return *this; }
9423         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator &() { return &self; }
9424         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
9425         const LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
9426         const LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
9427 };
9428 class CResult_UpdateFailHTLCDecodeErrorZ {
9429 private:
9430         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
9431 public:
9432         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
9433         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
9434         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
9435         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
9436         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
9437         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
9438         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
9439         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
9440         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
9441         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
9442 };
9443 class CResult_CVec_BlindedPathZNoneZ {
9444 private:
9445         LDKCResult_CVec_BlindedPathZNoneZ self;
9446 public:
9447         CResult_CVec_BlindedPathZNoneZ(const CResult_CVec_BlindedPathZNoneZ&) = delete;
9448         CResult_CVec_BlindedPathZNoneZ(CResult_CVec_BlindedPathZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_BlindedPathZNoneZ)); }
9449         CResult_CVec_BlindedPathZNoneZ(LDKCResult_CVec_BlindedPathZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_BlindedPathZNoneZ)); }
9450         operator LDKCResult_CVec_BlindedPathZNoneZ() && { LDKCResult_CVec_BlindedPathZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_BlindedPathZNoneZ)); return res; }
9451         ~CResult_CVec_BlindedPathZNoneZ() { CResult_CVec_BlindedPathZNoneZ_free(self); }
9452         CResult_CVec_BlindedPathZNoneZ& operator=(CResult_CVec_BlindedPathZNoneZ&& o) { CResult_CVec_BlindedPathZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_BlindedPathZNoneZ)); return *this; }
9453         LDKCResult_CVec_BlindedPathZNoneZ* operator &() { return &self; }
9454         LDKCResult_CVec_BlindedPathZNoneZ* operator ->() { return &self; }
9455         const LDKCResult_CVec_BlindedPathZNoneZ* operator &() const { return &self; }
9456         const LDKCResult_CVec_BlindedPathZNoneZ* operator ->() const { return &self; }
9457 };
9458 class CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ {
9459 private:
9460         LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ self;
9461 public:
9462         CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ(const CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ&) = delete;
9463         CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ(CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ)); }
9464         CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ(LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ)); }
9465         operator LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ() && { LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ)); return res; }
9466         ~CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ() { CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ_free(self); }
9467         CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ& operator=(CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ&& o) { CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ)); return *this; }
9468         LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator &() { return &self; }
9469         LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
9470         const LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
9471         const LDKCResult_OfferWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
9472 };
9473 class CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ {
9474 private:
9475         LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ self;
9476 public:
9477         CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ(const CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ&) = delete;
9478         CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ(CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ)); }
9479         CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ(LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ)); }
9480         operator LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ() && { LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ)); return res; }
9481         ~CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ() { CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ_free(self); }
9482         CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ& operator=(CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ&& o) { CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ)); return *this; }
9483         LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ* operator &() { return &self; }
9484         LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ* operator ->() { return &self; }
9485         const LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ* operator &() const { return &self; }
9486         const LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ* operator ->() const { return &self; }
9487 };
9488 class CResult_SpendableOutputDescriptorDecodeErrorZ {
9489 private:
9490         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
9491 public:
9492         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
9493         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
9494         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
9495         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
9496         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
9497         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
9498         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
9499         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
9500         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
9501         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
9502 };
9503 class CResult_RevokeAndACKDecodeErrorZ {
9504 private:
9505         LDKCResult_RevokeAndACKDecodeErrorZ self;
9506 public:
9507         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
9508         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
9509         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
9510         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
9511         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
9512         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
9513         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
9514         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
9515         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
9516         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
9517 };
9518 class CResult_UnsignedChannelUpdateDecodeErrorZ {
9519 private:
9520         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
9521 public:
9522         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
9523         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
9524         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
9525         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
9526         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
9527         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
9528         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
9529         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
9530         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
9531         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
9532 };
9533 class CResult_PayeePubKeySecp256k1ErrorZ {
9534 private:
9535         LDKCResult_PayeePubKeySecp256k1ErrorZ self;
9536 public:
9537         CResult_PayeePubKeySecp256k1ErrorZ(const CResult_PayeePubKeySecp256k1ErrorZ&) = delete;
9538         CResult_PayeePubKeySecp256k1ErrorZ(CResult_PayeePubKeySecp256k1ErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeySecp256k1ErrorZ)); }
9539         CResult_PayeePubKeySecp256k1ErrorZ(LDKCResult_PayeePubKeySecp256k1ErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeySecp256k1ErrorZ)); }
9540         operator LDKCResult_PayeePubKeySecp256k1ErrorZ() && { LDKCResult_PayeePubKeySecp256k1ErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeySecp256k1ErrorZ)); return res; }
9541         ~CResult_PayeePubKeySecp256k1ErrorZ() { CResult_PayeePubKeySecp256k1ErrorZ_free(self); }
9542         CResult_PayeePubKeySecp256k1ErrorZ& operator=(CResult_PayeePubKeySecp256k1ErrorZ&& o) { CResult_PayeePubKeySecp256k1ErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeySecp256k1ErrorZ)); return *this; }
9543         LDKCResult_PayeePubKeySecp256k1ErrorZ* operator &() { return &self; }
9544         LDKCResult_PayeePubKeySecp256k1ErrorZ* operator ->() { return &self; }
9545         const LDKCResult_PayeePubKeySecp256k1ErrorZ* operator &() const { return &self; }
9546         const LDKCResult_PayeePubKeySecp256k1ErrorZ* operator ->() const { return &self; }
9547 };
9548 class C2Tuple__u832u16Z {
9549 private:
9550         LDKC2Tuple__u832u16Z self;
9551 public:
9552         C2Tuple__u832u16Z(const C2Tuple__u832u16Z&) = delete;
9553         C2Tuple__u832u16Z(C2Tuple__u832u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple__u832u16Z)); }
9554         C2Tuple__u832u16Z(LDKC2Tuple__u832u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple__u832u16Z)); }
9555         operator LDKC2Tuple__u832u16Z() && { LDKC2Tuple__u832u16Z res = self; memset(&self, 0, sizeof(LDKC2Tuple__u832u16Z)); return res; }
9556         ~C2Tuple__u832u16Z() { C2Tuple__u832u16Z_free(self); }
9557         C2Tuple__u832u16Z& operator=(C2Tuple__u832u16Z&& o) { C2Tuple__u832u16Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple__u832u16Z)); return *this; }
9558         LDKC2Tuple__u832u16Z* operator &() { return &self; }
9559         LDKC2Tuple__u832u16Z* operator ->() { return &self; }
9560         const LDKC2Tuple__u832u16Z* operator &() const { return &self; }
9561         const LDKC2Tuple__u832u16Z* operator ->() const { return &self; }
9562 };
9563 class COption_BigEndianScalarZ {
9564 private:
9565         LDKCOption_BigEndianScalarZ self;
9566 public:
9567         COption_BigEndianScalarZ(const COption_BigEndianScalarZ&) = delete;
9568         COption_BigEndianScalarZ(COption_BigEndianScalarZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_BigEndianScalarZ)); }
9569         COption_BigEndianScalarZ(LDKCOption_BigEndianScalarZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_BigEndianScalarZ)); }
9570         operator LDKCOption_BigEndianScalarZ() && { LDKCOption_BigEndianScalarZ res = self; memset(&self, 0, sizeof(LDKCOption_BigEndianScalarZ)); return res; }
9571         ~COption_BigEndianScalarZ() { COption_BigEndianScalarZ_free(self); }
9572         COption_BigEndianScalarZ& operator=(COption_BigEndianScalarZ&& o) { COption_BigEndianScalarZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_BigEndianScalarZ)); return *this; }
9573         LDKCOption_BigEndianScalarZ* operator &() { return &self; }
9574         LDKCOption_BigEndianScalarZ* operator ->() { return &self; }
9575         const LDKCOption_BigEndianScalarZ* operator &() const { return &self; }
9576         const LDKCOption_BigEndianScalarZ* operator ->() const { return &self; }
9577 };
9578 class CVec_ChannelIdZ {
9579 private:
9580         LDKCVec_ChannelIdZ self;
9581 public:
9582         CVec_ChannelIdZ(const CVec_ChannelIdZ&) = delete;
9583         CVec_ChannelIdZ(CVec_ChannelIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelIdZ)); }
9584         CVec_ChannelIdZ(LDKCVec_ChannelIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelIdZ)); }
9585         operator LDKCVec_ChannelIdZ() && { LDKCVec_ChannelIdZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelIdZ)); return res; }
9586         ~CVec_ChannelIdZ() { CVec_ChannelIdZ_free(self); }
9587         CVec_ChannelIdZ& operator=(CVec_ChannelIdZ&& o) { CVec_ChannelIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelIdZ)); return *this; }
9588         LDKCVec_ChannelIdZ* operator &() { return &self; }
9589         LDKCVec_ChannelIdZ* operator ->() { return &self; }
9590         const LDKCVec_ChannelIdZ* operator &() const { return &self; }
9591         const LDKCVec_ChannelIdZ* operator ->() const { return &self; }
9592 };
9593 class CResult_PublicKeySecp256k1ErrorZ {
9594 private:
9595         LDKCResult_PublicKeySecp256k1ErrorZ self;
9596 public:
9597         CResult_PublicKeySecp256k1ErrorZ(const CResult_PublicKeySecp256k1ErrorZ&) = delete;
9598         CResult_PublicKeySecp256k1ErrorZ(CResult_PublicKeySecp256k1ErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeySecp256k1ErrorZ)); }
9599         CResult_PublicKeySecp256k1ErrorZ(LDKCResult_PublicKeySecp256k1ErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeySecp256k1ErrorZ)); }
9600         operator LDKCResult_PublicKeySecp256k1ErrorZ() && { LDKCResult_PublicKeySecp256k1ErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeySecp256k1ErrorZ)); return res; }
9601         ~CResult_PublicKeySecp256k1ErrorZ() { CResult_PublicKeySecp256k1ErrorZ_free(self); }
9602         CResult_PublicKeySecp256k1ErrorZ& operator=(CResult_PublicKeySecp256k1ErrorZ&& o) { CResult_PublicKeySecp256k1ErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeySecp256k1ErrorZ)); return *this; }
9603         LDKCResult_PublicKeySecp256k1ErrorZ* operator &() { return &self; }
9604         LDKCResult_PublicKeySecp256k1ErrorZ* operator ->() { return &self; }
9605         const LDKCResult_PublicKeySecp256k1ErrorZ* operator &() const { return &self; }
9606         const LDKCResult_PublicKeySecp256k1ErrorZ* operator ->() const { return &self; }
9607 };
9608 class CResult_CVec_ECDSASignatureZNoneZ {
9609 private:
9610         LDKCResult_CVec_ECDSASignatureZNoneZ self;
9611 public:
9612         CResult_CVec_ECDSASignatureZNoneZ(const CResult_CVec_ECDSASignatureZNoneZ&) = delete;
9613         CResult_CVec_ECDSASignatureZNoneZ(CResult_CVec_ECDSASignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_ECDSASignatureZNoneZ)); }
9614         CResult_CVec_ECDSASignatureZNoneZ(LDKCResult_CVec_ECDSASignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_ECDSASignatureZNoneZ)); }
9615         operator LDKCResult_CVec_ECDSASignatureZNoneZ() && { LDKCResult_CVec_ECDSASignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_ECDSASignatureZNoneZ)); return res; }
9616         ~CResult_CVec_ECDSASignatureZNoneZ() { CResult_CVec_ECDSASignatureZNoneZ_free(self); }
9617         CResult_CVec_ECDSASignatureZNoneZ& operator=(CResult_CVec_ECDSASignatureZNoneZ&& o) { CResult_CVec_ECDSASignatureZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_ECDSASignatureZNoneZ)); return *this; }
9618         LDKCResult_CVec_ECDSASignatureZNoneZ* operator &() { return &self; }
9619         LDKCResult_CVec_ECDSASignatureZNoneZ* operator ->() { return &self; }
9620         const LDKCResult_CVec_ECDSASignatureZNoneZ* operator &() const { return &self; }
9621         const LDKCResult_CVec_ECDSASignatureZNoneZ* operator ->() const { return &self; }
9622 };
9623 class CVec_BlindedHopZ {
9624 private:
9625         LDKCVec_BlindedHopZ self;
9626 public:
9627         CVec_BlindedHopZ(const CVec_BlindedHopZ&) = delete;
9628         CVec_BlindedHopZ(CVec_BlindedHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BlindedHopZ)); }
9629         CVec_BlindedHopZ(LDKCVec_BlindedHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BlindedHopZ)); }
9630         operator LDKCVec_BlindedHopZ() && { LDKCVec_BlindedHopZ res = self; memset(&self, 0, sizeof(LDKCVec_BlindedHopZ)); return res; }
9631         ~CVec_BlindedHopZ() { CVec_BlindedHopZ_free(self); }
9632         CVec_BlindedHopZ& operator=(CVec_BlindedHopZ&& o) { CVec_BlindedHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BlindedHopZ)); return *this; }
9633         LDKCVec_BlindedHopZ* operator &() { return &self; }
9634         LDKCVec_BlindedHopZ* operator ->() { return &self; }
9635         const LDKCVec_BlindedHopZ* operator &() const { return &self; }
9636         const LDKCVec_BlindedHopZ* operator ->() const { return &self; }
9637 };
9638 class CResult_COption_ClosureReasonZDecodeErrorZ {
9639 private:
9640         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
9641 public:
9642         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
9643         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
9644         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
9645         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
9646         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
9647         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; }
9648         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
9649         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
9650         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
9651         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
9652 };
9653 class CResult_InvoiceErrorDecodeErrorZ {
9654 private:
9655         LDKCResult_InvoiceErrorDecodeErrorZ self;
9656 public:
9657         CResult_InvoiceErrorDecodeErrorZ(const CResult_InvoiceErrorDecodeErrorZ&) = delete;
9658         CResult_InvoiceErrorDecodeErrorZ(CResult_InvoiceErrorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceErrorDecodeErrorZ)); }
9659         CResult_InvoiceErrorDecodeErrorZ(LDKCResult_InvoiceErrorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceErrorDecodeErrorZ)); }
9660         operator LDKCResult_InvoiceErrorDecodeErrorZ() && { LDKCResult_InvoiceErrorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceErrorDecodeErrorZ)); return res; }
9661         ~CResult_InvoiceErrorDecodeErrorZ() { CResult_InvoiceErrorDecodeErrorZ_free(self); }
9662         CResult_InvoiceErrorDecodeErrorZ& operator=(CResult_InvoiceErrorDecodeErrorZ&& o) { CResult_InvoiceErrorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceErrorDecodeErrorZ)); return *this; }
9663         LDKCResult_InvoiceErrorDecodeErrorZ* operator &() { return &self; }
9664         LDKCResult_InvoiceErrorDecodeErrorZ* operator ->() { return &self; }
9665         const LDKCResult_InvoiceErrorDecodeErrorZ* operator &() const { return &self; }
9666         const LDKCResult_InvoiceErrorDecodeErrorZ* operator ->() const { return &self; }
9667 };
9668 class C2Tuple_BestBlockOutputSweeperZ {
9669 private:
9670         LDKC2Tuple_BestBlockOutputSweeperZ self;
9671 public:
9672         C2Tuple_BestBlockOutputSweeperZ(const C2Tuple_BestBlockOutputSweeperZ&) = delete;
9673         C2Tuple_BestBlockOutputSweeperZ(C2Tuple_BestBlockOutputSweeperZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BestBlockOutputSweeperZ)); }
9674         C2Tuple_BestBlockOutputSweeperZ(LDKC2Tuple_BestBlockOutputSweeperZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BestBlockOutputSweeperZ)); }
9675         operator LDKC2Tuple_BestBlockOutputSweeperZ() && { LDKC2Tuple_BestBlockOutputSweeperZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BestBlockOutputSweeperZ)); return res; }
9676         ~C2Tuple_BestBlockOutputSweeperZ() { C2Tuple_BestBlockOutputSweeperZ_free(self); }
9677         C2Tuple_BestBlockOutputSweeperZ& operator=(C2Tuple_BestBlockOutputSweeperZ&& o) { C2Tuple_BestBlockOutputSweeperZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BestBlockOutputSweeperZ)); return *this; }
9678         LDKC2Tuple_BestBlockOutputSweeperZ* operator &() { return &self; }
9679         LDKC2Tuple_BestBlockOutputSweeperZ* operator ->() { return &self; }
9680         const LDKC2Tuple_BestBlockOutputSweeperZ* operator &() const { return &self; }
9681         const LDKC2Tuple_BestBlockOutputSweeperZ* operator ->() const { return &self; }
9682 };
9683 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
9684 private:
9685         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
9686 public:
9687         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
9688         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
9689         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
9690         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
9691         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
9692         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
9693         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
9694         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
9695         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
9696         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
9697 };
9698 class CResult_RouteParametersDecodeErrorZ {
9699 private:
9700         LDKCResult_RouteParametersDecodeErrorZ self;
9701 public:
9702         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
9703         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
9704         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
9705         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
9706         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
9707         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
9708         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
9709         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
9710         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
9711         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
9712 };
9713 class CResult_PrivateRouteCreationErrorZ {
9714 private:
9715         LDKCResult_PrivateRouteCreationErrorZ self;
9716 public:
9717         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
9718         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
9719         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
9720         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
9721         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
9722         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
9723         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
9724         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
9725         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
9726         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
9727 };
9728 class CResult_NodeAliasDecodeErrorZ {
9729 private:
9730         LDKCResult_NodeAliasDecodeErrorZ self;
9731 public:
9732         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
9733         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
9734         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
9735         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
9736         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
9737         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
9738         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
9739         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
9740         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
9741         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
9742 };
9743 class CVec_UpdateFulfillHTLCZ {
9744 private:
9745         LDKCVec_UpdateFulfillHTLCZ self;
9746 public:
9747         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
9748         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
9749         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
9750         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
9751         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
9752         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
9753         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
9754         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
9755         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
9756         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
9757 };
9758 class CVec_C2Tuple_u32CVec_u8ZZZ {
9759 private:
9760         LDKCVec_C2Tuple_u32CVec_u8ZZZ self;
9761 public:
9762         CVec_C2Tuple_u32CVec_u8ZZZ(const CVec_C2Tuple_u32CVec_u8ZZZ&) = delete;
9763         CVec_C2Tuple_u32CVec_u8ZZZ(CVec_C2Tuple_u32CVec_u8ZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32CVec_u8ZZZ)); }
9764         CVec_C2Tuple_u32CVec_u8ZZZ(LDKCVec_C2Tuple_u32CVec_u8ZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32CVec_u8ZZZ)); }
9765         operator LDKCVec_C2Tuple_u32CVec_u8ZZZ() && { LDKCVec_C2Tuple_u32CVec_u8ZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32CVec_u8ZZZ)); return res; }
9766         ~CVec_C2Tuple_u32CVec_u8ZZZ() { CVec_C2Tuple_u32CVec_u8ZZZ_free(self); }
9767         CVec_C2Tuple_u32CVec_u8ZZZ& operator=(CVec_C2Tuple_u32CVec_u8ZZZ&& o) { CVec_C2Tuple_u32CVec_u8ZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_u32CVec_u8ZZZ)); return *this; }
9768         LDKCVec_C2Tuple_u32CVec_u8ZZZ* operator &() { return &self; }
9769         LDKCVec_C2Tuple_u32CVec_u8ZZZ* operator ->() { return &self; }
9770         const LDKCVec_C2Tuple_u32CVec_u8ZZZ* operator &() const { return &self; }
9771         const LDKCVec_C2Tuple_u32CVec_u8ZZZ* operator ->() const { return &self; }
9772 };
9773 class C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ {
9774 private:
9775         LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ self;
9776 public:
9777         C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ(const C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ&) = delete;
9778         C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ(C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ)); }
9779         C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ(LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ)); }
9780         operator LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ() && { LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ)); return res; }
9781         ~C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ() { C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ_free(self); }
9782         C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ& operator=(C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ&& o) { C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ)); return *this; }
9783         LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ* operator &() { return &self; }
9784         LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ* operator ->() { return &self; }
9785         const LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ* operator &() const { return &self; }
9786         const LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ* operator ->() const { return &self; }
9787 };
9788 class CResult_AnnouncementSignaturesDecodeErrorZ {
9789 private:
9790         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
9791 public:
9792         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
9793         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
9794         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
9795         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
9796         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
9797         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
9798         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
9799         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
9800         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
9801         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
9802 };
9803 class CResult_TxCompleteDecodeErrorZ {
9804 private:
9805         LDKCResult_TxCompleteDecodeErrorZ self;
9806 public:
9807         CResult_TxCompleteDecodeErrorZ(const CResult_TxCompleteDecodeErrorZ&) = delete;
9808         CResult_TxCompleteDecodeErrorZ(CResult_TxCompleteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCompleteDecodeErrorZ)); }
9809         CResult_TxCompleteDecodeErrorZ(LDKCResult_TxCompleteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCompleteDecodeErrorZ)); }
9810         operator LDKCResult_TxCompleteDecodeErrorZ() && { LDKCResult_TxCompleteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCompleteDecodeErrorZ)); return res; }
9811         ~CResult_TxCompleteDecodeErrorZ() { CResult_TxCompleteDecodeErrorZ_free(self); }
9812         CResult_TxCompleteDecodeErrorZ& operator=(CResult_TxCompleteDecodeErrorZ&& o) { CResult_TxCompleteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCompleteDecodeErrorZ)); return *this; }
9813         LDKCResult_TxCompleteDecodeErrorZ* operator &() { return &self; }
9814         LDKCResult_TxCompleteDecodeErrorZ* operator ->() { return &self; }
9815         const LDKCResult_TxCompleteDecodeErrorZ* operator &() const { return &self; }
9816         const LDKCResult_TxCompleteDecodeErrorZ* operator ->() const { return &self; }
9817 };
9818 class CResult_UpdateFulfillHTLCDecodeErrorZ {
9819 private:
9820         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
9821 public:
9822         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
9823         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
9824         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
9825         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
9826         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
9827         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
9828         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
9829         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
9830         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
9831         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
9832 };
9833 class CResult_NodeFeaturesDecodeErrorZ {
9834 private:
9835         LDKCResult_NodeFeaturesDecodeErrorZ self;
9836 public:
9837         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
9838         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
9839         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
9840         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
9841         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
9842         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
9843         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
9844         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
9845         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
9846         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
9847 };
9848 class CResult_InMemorySignerDecodeErrorZ {
9849 private:
9850         LDKCResult_InMemorySignerDecodeErrorZ self;
9851 public:
9852         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
9853         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
9854         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
9855         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
9856         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
9857         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
9858         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
9859         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
9860         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
9861         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
9862 };
9863 class CResult_TxSignaturesDecodeErrorZ {
9864 private:
9865         LDKCResult_TxSignaturesDecodeErrorZ self;
9866 public:
9867         CResult_TxSignaturesDecodeErrorZ(const CResult_TxSignaturesDecodeErrorZ&) = delete;
9868         CResult_TxSignaturesDecodeErrorZ(CResult_TxSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxSignaturesDecodeErrorZ)); }
9869         CResult_TxSignaturesDecodeErrorZ(LDKCResult_TxSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxSignaturesDecodeErrorZ)); }
9870         operator LDKCResult_TxSignaturesDecodeErrorZ() && { LDKCResult_TxSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxSignaturesDecodeErrorZ)); return res; }
9871         ~CResult_TxSignaturesDecodeErrorZ() { CResult_TxSignaturesDecodeErrorZ_free(self); }
9872         CResult_TxSignaturesDecodeErrorZ& operator=(CResult_TxSignaturesDecodeErrorZ&& o) { CResult_TxSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxSignaturesDecodeErrorZ)); return *this; }
9873         LDKCResult_TxSignaturesDecodeErrorZ* operator &() { return &self; }
9874         LDKCResult_TxSignaturesDecodeErrorZ* operator ->() { return &self; }
9875         const LDKCResult_TxSignaturesDecodeErrorZ* operator &() const { return &self; }
9876         const LDKCResult_TxSignaturesDecodeErrorZ* operator ->() const { return &self; }
9877 };
9878 class CVec_HTLCDescriptorZ {
9879 private:
9880         LDKCVec_HTLCDescriptorZ self;
9881 public:
9882         CVec_HTLCDescriptorZ(const CVec_HTLCDescriptorZ&) = delete;
9883         CVec_HTLCDescriptorZ(CVec_HTLCDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_HTLCDescriptorZ)); }
9884         CVec_HTLCDescriptorZ(LDKCVec_HTLCDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_HTLCDescriptorZ)); }
9885         operator LDKCVec_HTLCDescriptorZ() && { LDKCVec_HTLCDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_HTLCDescriptorZ)); return res; }
9886         ~CVec_HTLCDescriptorZ() { CVec_HTLCDescriptorZ_free(self); }
9887         CVec_HTLCDescriptorZ& operator=(CVec_HTLCDescriptorZ&& o) { CVec_HTLCDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_HTLCDescriptorZ)); return *this; }
9888         LDKCVec_HTLCDescriptorZ* operator &() { return &self; }
9889         LDKCVec_HTLCDescriptorZ* operator ->() { return &self; }
9890         const LDKCVec_HTLCDescriptorZ* operator &() const { return &self; }
9891         const LDKCVec_HTLCDescriptorZ* operator ->() const { return &self; }
9892 };
9893 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
9894 private:
9895         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
9896 public:
9897         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
9898         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
9899         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
9900         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
9901         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
9902         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
9903         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
9904         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
9905         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
9906         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
9907 };
9908 class COption_PathFailureZ {
9909 private:
9910         LDKCOption_PathFailureZ self;
9911 public:
9912         COption_PathFailureZ(const COption_PathFailureZ&) = delete;
9913         COption_PathFailureZ(COption_PathFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PathFailureZ)); }
9914         COption_PathFailureZ(LDKCOption_PathFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PathFailureZ)); }
9915         operator LDKCOption_PathFailureZ() && { LDKCOption_PathFailureZ res = self; memset(&self, 0, sizeof(LDKCOption_PathFailureZ)); return res; }
9916         ~COption_PathFailureZ() { COption_PathFailureZ_free(self); }
9917         COption_PathFailureZ& operator=(COption_PathFailureZ&& o) { COption_PathFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PathFailureZ)); return *this; }
9918         LDKCOption_PathFailureZ* operator &() { return &self; }
9919         LDKCOption_PathFailureZ* operator ->() { return &self; }
9920         const LDKCOption_PathFailureZ* operator &() const { return &self; }
9921         const LDKCOption_PathFailureZ* operator ->() const { return &self; }
9922 };
9923 class CResult_StrSecp256k1ErrorZ {
9924 private:
9925         LDKCResult_StrSecp256k1ErrorZ self;
9926 public:
9927         CResult_StrSecp256k1ErrorZ(const CResult_StrSecp256k1ErrorZ&) = delete;
9928         CResult_StrSecp256k1ErrorZ(CResult_StrSecp256k1ErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StrSecp256k1ErrorZ)); }
9929         CResult_StrSecp256k1ErrorZ(LDKCResult_StrSecp256k1ErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StrSecp256k1ErrorZ)); }
9930         operator LDKCResult_StrSecp256k1ErrorZ() && { LDKCResult_StrSecp256k1ErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StrSecp256k1ErrorZ)); return res; }
9931         ~CResult_StrSecp256k1ErrorZ() { CResult_StrSecp256k1ErrorZ_free(self); }
9932         CResult_StrSecp256k1ErrorZ& operator=(CResult_StrSecp256k1ErrorZ&& o) { CResult_StrSecp256k1ErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StrSecp256k1ErrorZ)); return *this; }
9933         LDKCResult_StrSecp256k1ErrorZ* operator &() { return &self; }
9934         LDKCResult_StrSecp256k1ErrorZ* operator ->() { return &self; }
9935         const LDKCResult_StrSecp256k1ErrorZ* operator &() const { return &self; }
9936         const LDKCResult_StrSecp256k1ErrorZ* operator ->() const { return &self; }
9937 };
9938 class CVec_ECDSASignatureZ {
9939 private:
9940         LDKCVec_ECDSASignatureZ self;
9941 public:
9942         CVec_ECDSASignatureZ(const CVec_ECDSASignatureZ&) = delete;
9943         CVec_ECDSASignatureZ(CVec_ECDSASignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ECDSASignatureZ)); }
9944         CVec_ECDSASignatureZ(LDKCVec_ECDSASignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ECDSASignatureZ)); }
9945         operator LDKCVec_ECDSASignatureZ() && { LDKCVec_ECDSASignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_ECDSASignatureZ)); return res; }
9946         ~CVec_ECDSASignatureZ() { CVec_ECDSASignatureZ_free(self); }
9947         CVec_ECDSASignatureZ& operator=(CVec_ECDSASignatureZ&& o) { CVec_ECDSASignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ECDSASignatureZ)); return *this; }
9948         LDKCVec_ECDSASignatureZ* operator &() { return &self; }
9949         LDKCVec_ECDSASignatureZ* operator ->() { return &self; }
9950         const LDKCVec_ECDSASignatureZ* operator &() const { return &self; }
9951         const LDKCVec_ECDSASignatureZ* operator ->() const { return &self; }
9952 };
9953 class CResult_ChannelUpdateInfoDecodeErrorZ {
9954 private:
9955         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
9956 public:
9957         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
9958         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
9959         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
9960         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
9961         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
9962         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
9963         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
9964         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
9965         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
9966         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
9967 };
9968 class CVec_UpdateFailHTLCZ {
9969 private:
9970         LDKCVec_UpdateFailHTLCZ self;
9971 public:
9972         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
9973         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
9974         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
9975         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
9976         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
9977         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
9978         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
9979         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
9980         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
9981         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
9982 };
9983 class CVec_TxOutZ {
9984 private:
9985         LDKCVec_TxOutZ self;
9986 public:
9987         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
9988         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
9989         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
9990         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
9991         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
9992         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
9993         LDKCVec_TxOutZ* operator &() { return &self; }
9994         LDKCVec_TxOutZ* operator ->() { return &self; }
9995         const LDKCVec_TxOutZ* operator &() const { return &self; }
9996         const LDKCVec_TxOutZ* operator ->() const { return &self; }
9997 };
9998 class CVec_InboundHTLCDetailsZ {
9999 private:
10000         LDKCVec_InboundHTLCDetailsZ self;
10001 public:
10002         CVec_InboundHTLCDetailsZ(const CVec_InboundHTLCDetailsZ&) = delete;
10003         CVec_InboundHTLCDetailsZ(CVec_InboundHTLCDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_InboundHTLCDetailsZ)); }
10004         CVec_InboundHTLCDetailsZ(LDKCVec_InboundHTLCDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_InboundHTLCDetailsZ)); }
10005         operator LDKCVec_InboundHTLCDetailsZ() && { LDKCVec_InboundHTLCDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_InboundHTLCDetailsZ)); return res; }
10006         ~CVec_InboundHTLCDetailsZ() { CVec_InboundHTLCDetailsZ_free(self); }
10007         CVec_InboundHTLCDetailsZ& operator=(CVec_InboundHTLCDetailsZ&& o) { CVec_InboundHTLCDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_InboundHTLCDetailsZ)); return *this; }
10008         LDKCVec_InboundHTLCDetailsZ* operator &() { return &self; }
10009         LDKCVec_InboundHTLCDetailsZ* operator ->() { return &self; }
10010         const LDKCVec_InboundHTLCDetailsZ* operator &() const { return &self; }
10011         const LDKCVec_InboundHTLCDetailsZ* operator ->() const { return &self; }
10012 };
10013 class CVec_OutboundHTLCDetailsZ {
10014 private:
10015         LDKCVec_OutboundHTLCDetailsZ self;
10016 public:
10017         CVec_OutboundHTLCDetailsZ(const CVec_OutboundHTLCDetailsZ&) = delete;
10018         CVec_OutboundHTLCDetailsZ(CVec_OutboundHTLCDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutboundHTLCDetailsZ)); }
10019         CVec_OutboundHTLCDetailsZ(LDKCVec_OutboundHTLCDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutboundHTLCDetailsZ)); }
10020         operator LDKCVec_OutboundHTLCDetailsZ() && { LDKCVec_OutboundHTLCDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_OutboundHTLCDetailsZ)); return res; }
10021         ~CVec_OutboundHTLCDetailsZ() { CVec_OutboundHTLCDetailsZ_free(self); }
10022         CVec_OutboundHTLCDetailsZ& operator=(CVec_OutboundHTLCDetailsZ&& o) { CVec_OutboundHTLCDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutboundHTLCDetailsZ)); return *this; }
10023         LDKCVec_OutboundHTLCDetailsZ* operator &() { return &self; }
10024         LDKCVec_OutboundHTLCDetailsZ* operator ->() { return &self; }
10025         const LDKCVec_OutboundHTLCDetailsZ* operator &() const { return &self; }
10026         const LDKCVec_OutboundHTLCDetailsZ* operator ->() const { return &self; }
10027 };
10028 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
10029 private:
10030         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
10031 public:
10032         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
10033         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
10034         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
10035         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
10036         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
10037         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
10038         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
10039         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
10040         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
10041         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
10042 };
10043 class CResult_TrackedSpendableOutputDecodeErrorZ {
10044 private:
10045         LDKCResult_TrackedSpendableOutputDecodeErrorZ self;
10046 public:
10047         CResult_TrackedSpendableOutputDecodeErrorZ(const CResult_TrackedSpendableOutputDecodeErrorZ&) = delete;
10048         CResult_TrackedSpendableOutputDecodeErrorZ(CResult_TrackedSpendableOutputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrackedSpendableOutputDecodeErrorZ)); }
10049         CResult_TrackedSpendableOutputDecodeErrorZ(LDKCResult_TrackedSpendableOutputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrackedSpendableOutputDecodeErrorZ)); }
10050         operator LDKCResult_TrackedSpendableOutputDecodeErrorZ() && { LDKCResult_TrackedSpendableOutputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TrackedSpendableOutputDecodeErrorZ)); return res; }
10051         ~CResult_TrackedSpendableOutputDecodeErrorZ() { CResult_TrackedSpendableOutputDecodeErrorZ_free(self); }
10052         CResult_TrackedSpendableOutputDecodeErrorZ& operator=(CResult_TrackedSpendableOutputDecodeErrorZ&& o) { CResult_TrackedSpendableOutputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrackedSpendableOutputDecodeErrorZ)); return *this; }
10053         LDKCResult_TrackedSpendableOutputDecodeErrorZ* operator &() { return &self; }
10054         LDKCResult_TrackedSpendableOutputDecodeErrorZ* operator ->() { return &self; }
10055         const LDKCResult_TrackedSpendableOutputDecodeErrorZ* operator &() const { return &self; }
10056         const LDKCResult_TrackedSpendableOutputDecodeErrorZ* operator ->() const { return &self; }
10057 };
10058 class CVec_SpendableOutputDescriptorZ {
10059 private:
10060         LDKCVec_SpendableOutputDescriptorZ self;
10061 public:
10062         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
10063         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
10064         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
10065         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
10066         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
10067         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
10068         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
10069         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
10070         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
10071         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
10072 };
10073 class C2Tuple_OutPointCVec_u8ZZ {
10074 private:
10075         LDKC2Tuple_OutPointCVec_u8ZZ self;
10076 public:
10077         C2Tuple_OutPointCVec_u8ZZ(const C2Tuple_OutPointCVec_u8ZZ&) = delete;
10078         C2Tuple_OutPointCVec_u8ZZ(C2Tuple_OutPointCVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_u8ZZ)); }
10079         C2Tuple_OutPointCVec_u8ZZ(LDKC2Tuple_OutPointCVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_u8ZZ)); }
10080         operator LDKC2Tuple_OutPointCVec_u8ZZ() && { LDKC2Tuple_OutPointCVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_u8ZZ)); return res; }
10081         ~C2Tuple_OutPointCVec_u8ZZ() { C2Tuple_OutPointCVec_u8ZZ_free(self); }
10082         C2Tuple_OutPointCVec_u8ZZ& operator=(C2Tuple_OutPointCVec_u8ZZ&& o) { C2Tuple_OutPointCVec_u8ZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointCVec_u8ZZ)); return *this; }
10083         LDKC2Tuple_OutPointCVec_u8ZZ* operator &() { return &self; }
10084         LDKC2Tuple_OutPointCVec_u8ZZ* operator ->() { return &self; }
10085         const LDKC2Tuple_OutPointCVec_u8ZZ* operator &() const { return &self; }
10086         const LDKC2Tuple_OutPointCVec_u8ZZ* operator ->() const { return &self; }
10087 };
10088 class CResult_WitnessNoneZ {
10089 private:
10090         LDKCResult_WitnessNoneZ self;
10091 public:
10092         CResult_WitnessNoneZ(const CResult_WitnessNoneZ&) = delete;
10093         CResult_WitnessNoneZ(CResult_WitnessNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WitnessNoneZ)); }
10094         CResult_WitnessNoneZ(LDKCResult_WitnessNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WitnessNoneZ)); }
10095         operator LDKCResult_WitnessNoneZ() && { LDKCResult_WitnessNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_WitnessNoneZ)); return res; }
10096         ~CResult_WitnessNoneZ() { CResult_WitnessNoneZ_free(self); }
10097         CResult_WitnessNoneZ& operator=(CResult_WitnessNoneZ&& o) { CResult_WitnessNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WitnessNoneZ)); return *this; }
10098         LDKCResult_WitnessNoneZ* operator &() { return &self; }
10099         LDKCResult_WitnessNoneZ* operator ->() { return &self; }
10100         const LDKCResult_WitnessNoneZ* operator &() const { return &self; }
10101         const LDKCResult_WitnessNoneZ* operator ->() const { return &self; }
10102 };
10103 class COption_C2Tuple_u64u64ZZ {
10104 private:
10105         LDKCOption_C2Tuple_u64u64ZZ self;
10106 public:
10107         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
10108         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
10109         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
10110         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
10111         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
10112         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; }
10113         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
10114         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
10115         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
10116         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
10117 };
10118 class CResult_ChannelAnnouncementDecodeErrorZ {
10119 private:
10120         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
10121 public:
10122         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
10123         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
10124         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
10125         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
10126         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
10127         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
10128         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
10129         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
10130         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
10131         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
10132 };
10133 class CResult_HTLCUpdateDecodeErrorZ {
10134 private:
10135         LDKCResult_HTLCUpdateDecodeErrorZ self;
10136 public:
10137         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
10138         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
10139         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
10140         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
10141         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
10142         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
10143         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
10144         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
10145         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
10146         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
10147 };
10148 class CResult_TxAddInputDecodeErrorZ {
10149 private:
10150         LDKCResult_TxAddInputDecodeErrorZ self;
10151 public:
10152         CResult_TxAddInputDecodeErrorZ(const CResult_TxAddInputDecodeErrorZ&) = delete;
10153         CResult_TxAddInputDecodeErrorZ(CResult_TxAddInputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAddInputDecodeErrorZ)); }
10154         CResult_TxAddInputDecodeErrorZ(LDKCResult_TxAddInputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAddInputDecodeErrorZ)); }
10155         operator LDKCResult_TxAddInputDecodeErrorZ() && { LDKCResult_TxAddInputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAddInputDecodeErrorZ)); return res; }
10156         ~CResult_TxAddInputDecodeErrorZ() { CResult_TxAddInputDecodeErrorZ_free(self); }
10157         CResult_TxAddInputDecodeErrorZ& operator=(CResult_TxAddInputDecodeErrorZ&& o) { CResult_TxAddInputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAddInputDecodeErrorZ)); return *this; }
10158         LDKCResult_TxAddInputDecodeErrorZ* operator &() { return &self; }
10159         LDKCResult_TxAddInputDecodeErrorZ* operator ->() { return &self; }
10160         const LDKCResult_TxAddInputDecodeErrorZ* operator &() const { return &self; }
10161         const LDKCResult_TxAddInputDecodeErrorZ* operator ->() const { return &self; }
10162 };
10163 class CResult_PeeledOnionNoneZ {
10164 private:
10165         LDKCResult_PeeledOnionNoneZ self;
10166 public:
10167         CResult_PeeledOnionNoneZ(const CResult_PeeledOnionNoneZ&) = delete;
10168         CResult_PeeledOnionNoneZ(CResult_PeeledOnionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PeeledOnionNoneZ)); }
10169         CResult_PeeledOnionNoneZ(LDKCResult_PeeledOnionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PeeledOnionNoneZ)); }
10170         operator LDKCResult_PeeledOnionNoneZ() && { LDKCResult_PeeledOnionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PeeledOnionNoneZ)); return res; }
10171         ~CResult_PeeledOnionNoneZ() { CResult_PeeledOnionNoneZ_free(self); }
10172         CResult_PeeledOnionNoneZ& operator=(CResult_PeeledOnionNoneZ&& o) { CResult_PeeledOnionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PeeledOnionNoneZ)); return *this; }
10173         LDKCResult_PeeledOnionNoneZ* operator &() { return &self; }
10174         LDKCResult_PeeledOnionNoneZ* operator ->() { return &self; }
10175         const LDKCResult_PeeledOnionNoneZ* operator &() const { return &self; }
10176         const LDKCResult_PeeledOnionNoneZ* operator ->() const { return &self; }
10177 };
10178 class CResult_TxInitRbfDecodeErrorZ {
10179 private:
10180         LDKCResult_TxInitRbfDecodeErrorZ self;
10181 public:
10182         CResult_TxInitRbfDecodeErrorZ(const CResult_TxInitRbfDecodeErrorZ&) = delete;
10183         CResult_TxInitRbfDecodeErrorZ(CResult_TxInitRbfDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxInitRbfDecodeErrorZ)); }
10184         CResult_TxInitRbfDecodeErrorZ(LDKCResult_TxInitRbfDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxInitRbfDecodeErrorZ)); }
10185         operator LDKCResult_TxInitRbfDecodeErrorZ() && { LDKCResult_TxInitRbfDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxInitRbfDecodeErrorZ)); return res; }
10186         ~CResult_TxInitRbfDecodeErrorZ() { CResult_TxInitRbfDecodeErrorZ_free(self); }
10187         CResult_TxInitRbfDecodeErrorZ& operator=(CResult_TxInitRbfDecodeErrorZ&& o) { CResult_TxInitRbfDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxInitRbfDecodeErrorZ)); return *this; }
10188         LDKCResult_TxInitRbfDecodeErrorZ* operator &() { return &self; }
10189         LDKCResult_TxInitRbfDecodeErrorZ* operator ->() { return &self; }
10190         const LDKCResult_TxInitRbfDecodeErrorZ* operator &() const { return &self; }
10191         const LDKCResult_TxInitRbfDecodeErrorZ* operator ->() const { return &self; }
10192 };
10193 class COption_WriteableScoreZ {
10194 private:
10195         LDKCOption_WriteableScoreZ self;
10196 public:
10197         COption_WriteableScoreZ(const COption_WriteableScoreZ&) = delete;
10198         COption_WriteableScoreZ(COption_WriteableScoreZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_WriteableScoreZ)); }
10199         COption_WriteableScoreZ(LDKCOption_WriteableScoreZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_WriteableScoreZ)); }
10200         operator LDKCOption_WriteableScoreZ() && { LDKCOption_WriteableScoreZ res = self; memset(&self, 0, sizeof(LDKCOption_WriteableScoreZ)); return res; }
10201         ~COption_WriteableScoreZ() { COption_WriteableScoreZ_free(self); }
10202         COption_WriteableScoreZ& operator=(COption_WriteableScoreZ&& o) { COption_WriteableScoreZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_WriteableScoreZ)); return *this; }
10203         LDKCOption_WriteableScoreZ* operator &() { return &self; }
10204         LDKCOption_WriteableScoreZ* operator ->() { return &self; }
10205         const LDKCOption_WriteableScoreZ* operator &() const { return &self; }
10206         const LDKCOption_WriteableScoreZ* operator ->() const { return &self; }
10207 };
10208 class CVec_StrZ {
10209 private:
10210         LDKCVec_StrZ self;
10211 public:
10212         CVec_StrZ(const CVec_StrZ&) = delete;
10213         CVec_StrZ(CVec_StrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_StrZ)); }
10214         CVec_StrZ(LDKCVec_StrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_StrZ)); }
10215         operator LDKCVec_StrZ() && { LDKCVec_StrZ res = self; memset(&self, 0, sizeof(LDKCVec_StrZ)); return res; }
10216         ~CVec_StrZ() { CVec_StrZ_free(self); }
10217         CVec_StrZ& operator=(CVec_StrZ&& o) { CVec_StrZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_StrZ)); return *this; }
10218         LDKCVec_StrZ* operator &() { return &self; }
10219         LDKCVec_StrZ* operator ->() { return &self; }
10220         const LDKCVec_StrZ* operator &() const { return &self; }
10221         const LDKCVec_StrZ* operator ->() const { return &self; }
10222 };
10223 class CResult_SpliceAckDecodeErrorZ {
10224 private:
10225         LDKCResult_SpliceAckDecodeErrorZ self;
10226 public:
10227         CResult_SpliceAckDecodeErrorZ(const CResult_SpliceAckDecodeErrorZ&) = delete;
10228         CResult_SpliceAckDecodeErrorZ(CResult_SpliceAckDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpliceAckDecodeErrorZ)); }
10229         CResult_SpliceAckDecodeErrorZ(LDKCResult_SpliceAckDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpliceAckDecodeErrorZ)); }
10230         operator LDKCResult_SpliceAckDecodeErrorZ() && { LDKCResult_SpliceAckDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpliceAckDecodeErrorZ)); return res; }
10231         ~CResult_SpliceAckDecodeErrorZ() { CResult_SpliceAckDecodeErrorZ_free(self); }
10232         CResult_SpliceAckDecodeErrorZ& operator=(CResult_SpliceAckDecodeErrorZ&& o) { CResult_SpliceAckDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpliceAckDecodeErrorZ)); return *this; }
10233         LDKCResult_SpliceAckDecodeErrorZ* operator &() { return &self; }
10234         LDKCResult_SpliceAckDecodeErrorZ* operator ->() { return &self; }
10235         const LDKCResult_SpliceAckDecodeErrorZ* operator &() const { return &self; }
10236         const LDKCResult_SpliceAckDecodeErrorZ* operator ->() const { return &self; }
10237 };
10238 class CResult_PositiveTimestampCreationErrorZ {
10239 private:
10240         LDKCResult_PositiveTimestampCreationErrorZ self;
10241 public:
10242         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
10243         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
10244         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
10245         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
10246         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
10247         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
10248         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
10249         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
10250         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
10251         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
10252 };
10253 class CVec_C2Tuple_OutPointChannelIdZZ {
10254 private:
10255         LDKCVec_C2Tuple_OutPointChannelIdZZ self;
10256 public:
10257         CVec_C2Tuple_OutPointChannelIdZZ(const CVec_C2Tuple_OutPointChannelIdZZ&) = delete;
10258         CVec_C2Tuple_OutPointChannelIdZZ(CVec_C2Tuple_OutPointChannelIdZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointChannelIdZZ)); }
10259         CVec_C2Tuple_OutPointChannelIdZZ(LDKCVec_C2Tuple_OutPointChannelIdZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointChannelIdZZ)); }
10260         operator LDKCVec_C2Tuple_OutPointChannelIdZZ() && { LDKCVec_C2Tuple_OutPointChannelIdZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointChannelIdZZ)); return res; }
10261         ~CVec_C2Tuple_OutPointChannelIdZZ() { CVec_C2Tuple_OutPointChannelIdZZ_free(self); }
10262         CVec_C2Tuple_OutPointChannelIdZZ& operator=(CVec_C2Tuple_OutPointChannelIdZZ&& o) { CVec_C2Tuple_OutPointChannelIdZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_OutPointChannelIdZZ)); return *this; }
10263         LDKCVec_C2Tuple_OutPointChannelIdZZ* operator &() { return &self; }
10264         LDKCVec_C2Tuple_OutPointChannelIdZZ* operator ->() { return &self; }
10265         const LDKCVec_C2Tuple_OutPointChannelIdZZ* operator &() const { return &self; }
10266         const LDKCVec_C2Tuple_OutPointChannelIdZZ* operator ->() const { return &self; }
10267 };
10268 class CResult_ChannelMonitorUpdateDecodeErrorZ {
10269 private:
10270         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
10271 public:
10272         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
10273         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
10274         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
10275         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
10276         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
10277         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
10278         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
10279         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
10280         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
10281         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
10282 };
10283 class C2Tuple_BlindedPayInfoBlindedPathZ {
10284 private:
10285         LDKC2Tuple_BlindedPayInfoBlindedPathZ self;
10286 public:
10287         C2Tuple_BlindedPayInfoBlindedPathZ(const C2Tuple_BlindedPayInfoBlindedPathZ&) = delete;
10288         C2Tuple_BlindedPayInfoBlindedPathZ(C2Tuple_BlindedPayInfoBlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlindedPayInfoBlindedPathZ)); }
10289         C2Tuple_BlindedPayInfoBlindedPathZ(LDKC2Tuple_BlindedPayInfoBlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlindedPayInfoBlindedPathZ)); }
10290         operator LDKC2Tuple_BlindedPayInfoBlindedPathZ() && { LDKC2Tuple_BlindedPayInfoBlindedPathZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlindedPayInfoBlindedPathZ)); return res; }
10291         ~C2Tuple_BlindedPayInfoBlindedPathZ() { C2Tuple_BlindedPayInfoBlindedPathZ_free(self); }
10292         C2Tuple_BlindedPayInfoBlindedPathZ& operator=(C2Tuple_BlindedPayInfoBlindedPathZ&& o) { C2Tuple_BlindedPayInfoBlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlindedPayInfoBlindedPathZ)); return *this; }
10293         LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator &() { return &self; }
10294         LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator ->() { return &self; }
10295         const LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator &() const { return &self; }
10296         const LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator ->() const { return &self; }
10297 };
10298 class CResult_ReplyChannelRangeDecodeErrorZ {
10299 private:
10300         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
10301 public:
10302         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
10303         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
10304         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
10305         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
10306         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
10307         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
10308         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
10309         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
10310         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
10311         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
10312 };
10313 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
10314 private:
10315         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
10316 public:
10317         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
10318         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
10319         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
10320         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
10321         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
10322         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
10323         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
10324         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
10325         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
10326         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
10327 };
10328 class CResult_TrustedClosingTransactionNoneZ {
10329 private:
10330         LDKCResult_TrustedClosingTransactionNoneZ self;
10331 public:
10332         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
10333         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
10334         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
10335         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
10336         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
10337         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
10338         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
10339         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
10340         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
10341         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
10342 };
10343 class CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ {
10344 private:
10345         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ self;
10346 public:
10347         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ(const CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ&) = delete;
10348         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ)); }
10349         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ)); }
10350         operator LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ)); return res; }
10351         ~CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ() { CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ_free(self); }
10352         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ& operator=(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ&& o) { CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ)); return *this; }
10353         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ* operator &() { return &self; }
10354         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ* operator ->() { return &self; }
10355         const LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ* operator &() const { return &self; }
10356         const LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ* operator ->() const { return &self; }
10357 };
10358 class C2Tuple_PublicKeyTypeZ {
10359 private:
10360         LDKC2Tuple_PublicKeyTypeZ self;
10361 public:
10362         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
10363         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
10364         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
10365         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
10366         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
10367         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
10368         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
10369         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
10370         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
10371         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
10372 };
10373 class CResult_TxRemoveOutputDecodeErrorZ {
10374 private:
10375         LDKCResult_TxRemoveOutputDecodeErrorZ self;
10376 public:
10377         CResult_TxRemoveOutputDecodeErrorZ(const CResult_TxRemoveOutputDecodeErrorZ&) = delete;
10378         CResult_TxRemoveOutputDecodeErrorZ(CResult_TxRemoveOutputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxRemoveOutputDecodeErrorZ)); }
10379         CResult_TxRemoveOutputDecodeErrorZ(LDKCResult_TxRemoveOutputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxRemoveOutputDecodeErrorZ)); }
10380         operator LDKCResult_TxRemoveOutputDecodeErrorZ() && { LDKCResult_TxRemoveOutputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxRemoveOutputDecodeErrorZ)); return res; }
10381         ~CResult_TxRemoveOutputDecodeErrorZ() { CResult_TxRemoveOutputDecodeErrorZ_free(self); }
10382         CResult_TxRemoveOutputDecodeErrorZ& operator=(CResult_TxRemoveOutputDecodeErrorZ&& o) { CResult_TxRemoveOutputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxRemoveOutputDecodeErrorZ)); return *this; }
10383         LDKCResult_TxRemoveOutputDecodeErrorZ* operator &() { return &self; }
10384         LDKCResult_TxRemoveOutputDecodeErrorZ* operator ->() { return &self; }
10385         const LDKCResult_TxRemoveOutputDecodeErrorZ* operator &() const { return &self; }
10386         const LDKCResult_TxRemoveOutputDecodeErrorZ* operator ->() const { return &self; }
10387 };
10388 class CResult_ChannelReestablishDecodeErrorZ {
10389 private:
10390         LDKCResult_ChannelReestablishDecodeErrorZ self;
10391 public:
10392         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
10393         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
10394         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
10395         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
10396         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
10397         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
10398         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
10399         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
10400         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
10401         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
10402 };
10403 class CResult_OnionMessageDecodeErrorZ {
10404 private:
10405         LDKCResult_OnionMessageDecodeErrorZ self;
10406 public:
10407         CResult_OnionMessageDecodeErrorZ(const CResult_OnionMessageDecodeErrorZ&) = delete;
10408         CResult_OnionMessageDecodeErrorZ(CResult_OnionMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); }
10409         CResult_OnionMessageDecodeErrorZ(LDKCResult_OnionMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); }
10410         operator LDKCResult_OnionMessageDecodeErrorZ() && { LDKCResult_OnionMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); return res; }
10411         ~CResult_OnionMessageDecodeErrorZ() { CResult_OnionMessageDecodeErrorZ_free(self); }
10412         CResult_OnionMessageDecodeErrorZ& operator=(CResult_OnionMessageDecodeErrorZ&& o) { CResult_OnionMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); return *this; }
10413         LDKCResult_OnionMessageDecodeErrorZ* operator &() { return &self; }
10414         LDKCResult_OnionMessageDecodeErrorZ* operator ->() { return &self; }
10415         const LDKCResult_OnionMessageDecodeErrorZ* operator &() const { return &self; }
10416         const LDKCResult_OnionMessageDecodeErrorZ* operator ->() const { return &self; }
10417 };
10418 class CResult_Bolt11InvoiceParseOrSemanticErrorZ {
10419 private:
10420         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ self;
10421 public:
10422         CResult_Bolt11InvoiceParseOrSemanticErrorZ(const CResult_Bolt11InvoiceParseOrSemanticErrorZ&) = delete;
10423         CResult_Bolt11InvoiceParseOrSemanticErrorZ(CResult_Bolt11InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceParseOrSemanticErrorZ)); }
10424         CResult_Bolt11InvoiceParseOrSemanticErrorZ(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ)); }
10425         operator LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ() && { LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ)); return res; }
10426         ~CResult_Bolt11InvoiceParseOrSemanticErrorZ() { CResult_Bolt11InvoiceParseOrSemanticErrorZ_free(self); }
10427         CResult_Bolt11InvoiceParseOrSemanticErrorZ& operator=(CResult_Bolt11InvoiceParseOrSemanticErrorZ&& o) { CResult_Bolt11InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceParseOrSemanticErrorZ)); return *this; }
10428         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
10429         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
10430         const LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
10431         const LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
10432 };
10433 class CResult_InitFeaturesDecodeErrorZ {
10434 private:
10435         LDKCResult_InitFeaturesDecodeErrorZ self;
10436 public:
10437         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
10438         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
10439         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
10440         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
10441         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
10442         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
10443         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
10444         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
10445         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
10446         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
10447 };
10448 class CResult_PublicKeyNoneZ {
10449 private:
10450         LDKCResult_PublicKeyNoneZ self;
10451 public:
10452         CResult_PublicKeyNoneZ(const CResult_PublicKeyNoneZ&) = delete;
10453         CResult_PublicKeyNoneZ(CResult_PublicKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); }
10454         CResult_PublicKeyNoneZ(LDKCResult_PublicKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); }
10455         operator LDKCResult_PublicKeyNoneZ() && { LDKCResult_PublicKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); return res; }
10456         ~CResult_PublicKeyNoneZ() { CResult_PublicKeyNoneZ_free(self); }
10457         CResult_PublicKeyNoneZ& operator=(CResult_PublicKeyNoneZ&& o) { CResult_PublicKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); return *this; }
10458         LDKCResult_PublicKeyNoneZ* operator &() { return &self; }
10459         LDKCResult_PublicKeyNoneZ* operator ->() { return &self; }
10460         const LDKCResult_PublicKeyNoneZ* operator &() const { return &self; }
10461         const LDKCResult_PublicKeyNoneZ* operator ->() const { return &self; }
10462 };
10463 class CResult_PingDecodeErrorZ {
10464 private:
10465         LDKCResult_PingDecodeErrorZ self;
10466 public:
10467         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
10468         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
10469         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
10470         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
10471         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
10472         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
10473         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
10474         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
10475         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
10476         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
10477 };
10478 class CResult_RevocationKeyDecodeErrorZ {
10479 private:
10480         LDKCResult_RevocationKeyDecodeErrorZ self;
10481 public:
10482         CResult_RevocationKeyDecodeErrorZ(const CResult_RevocationKeyDecodeErrorZ&) = delete;
10483         CResult_RevocationKeyDecodeErrorZ(CResult_RevocationKeyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevocationKeyDecodeErrorZ)); }
10484         CResult_RevocationKeyDecodeErrorZ(LDKCResult_RevocationKeyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevocationKeyDecodeErrorZ)); }
10485         operator LDKCResult_RevocationKeyDecodeErrorZ() && { LDKCResult_RevocationKeyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevocationKeyDecodeErrorZ)); return res; }
10486         ~CResult_RevocationKeyDecodeErrorZ() { CResult_RevocationKeyDecodeErrorZ_free(self); }
10487         CResult_RevocationKeyDecodeErrorZ& operator=(CResult_RevocationKeyDecodeErrorZ&& o) { CResult_RevocationKeyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevocationKeyDecodeErrorZ)); return *this; }
10488         LDKCResult_RevocationKeyDecodeErrorZ* operator &() { return &self; }
10489         LDKCResult_RevocationKeyDecodeErrorZ* operator ->() { return &self; }
10490         const LDKCResult_RevocationKeyDecodeErrorZ* operator &() const { return &self; }
10491         const LDKCResult_RevocationKeyDecodeErrorZ* operator ->() const { return &self; }
10492 };
10493 class CResult_ChannelIdDecodeErrorZ {
10494 private:
10495         LDKCResult_ChannelIdDecodeErrorZ self;
10496 public:
10497         CResult_ChannelIdDecodeErrorZ(const CResult_ChannelIdDecodeErrorZ&) = delete;
10498         CResult_ChannelIdDecodeErrorZ(CResult_ChannelIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelIdDecodeErrorZ)); }
10499         CResult_ChannelIdDecodeErrorZ(LDKCResult_ChannelIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelIdDecodeErrorZ)); }
10500         operator LDKCResult_ChannelIdDecodeErrorZ() && { LDKCResult_ChannelIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelIdDecodeErrorZ)); return res; }
10501         ~CResult_ChannelIdDecodeErrorZ() { CResult_ChannelIdDecodeErrorZ_free(self); }
10502         CResult_ChannelIdDecodeErrorZ& operator=(CResult_ChannelIdDecodeErrorZ&& o) { CResult_ChannelIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelIdDecodeErrorZ)); return *this; }
10503         LDKCResult_ChannelIdDecodeErrorZ* operator &() { return &self; }
10504         LDKCResult_ChannelIdDecodeErrorZ* operator ->() { return &self; }
10505         const LDKCResult_ChannelIdDecodeErrorZ* operator &() const { return &self; }
10506         const LDKCResult_ChannelIdDecodeErrorZ* operator ->() const { return &self; }
10507 };
10508 class CResult_BlindedHopFeaturesDecodeErrorZ {
10509 private:
10510         LDKCResult_BlindedHopFeaturesDecodeErrorZ self;
10511 public:
10512         CResult_BlindedHopFeaturesDecodeErrorZ(const CResult_BlindedHopFeaturesDecodeErrorZ&) = delete;
10513         CResult_BlindedHopFeaturesDecodeErrorZ(CResult_BlindedHopFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); }
10514         CResult_BlindedHopFeaturesDecodeErrorZ(LDKCResult_BlindedHopFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); }
10515         operator LDKCResult_BlindedHopFeaturesDecodeErrorZ() && { LDKCResult_BlindedHopFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); return res; }
10516         ~CResult_BlindedHopFeaturesDecodeErrorZ() { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); }
10517         CResult_BlindedHopFeaturesDecodeErrorZ& operator=(CResult_BlindedHopFeaturesDecodeErrorZ&& o) { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); return *this; }
10518         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() { return &self; }
10519         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() { return &self; }
10520         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() const { return &self; }
10521         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() const { return &self; }
10522 };
10523 class CVec_TransactionOutputsZ {
10524 private:
10525         LDKCVec_TransactionOutputsZ self;
10526 public:
10527         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
10528         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
10529         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
10530         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
10531         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
10532         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
10533         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
10534         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
10535         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
10536         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
10537 };
10538 class COption_HTLCClaimZ {
10539 private:
10540         LDKCOption_HTLCClaimZ self;
10541 public:
10542         COption_HTLCClaimZ(const COption_HTLCClaimZ&) = delete;
10543         COption_HTLCClaimZ(COption_HTLCClaimZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCClaimZ)); }
10544         COption_HTLCClaimZ(LDKCOption_HTLCClaimZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCClaimZ)); }
10545         operator LDKCOption_HTLCClaimZ() && { LDKCOption_HTLCClaimZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCClaimZ)); return res; }
10546         ~COption_HTLCClaimZ() { COption_HTLCClaimZ_free(self); }
10547         COption_HTLCClaimZ& operator=(COption_HTLCClaimZ&& o) { COption_HTLCClaimZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCClaimZ)); return *this; }
10548         LDKCOption_HTLCClaimZ* operator &() { return &self; }
10549         LDKCOption_HTLCClaimZ* operator ->() { return &self; }
10550         const LDKCOption_HTLCClaimZ* operator &() const { return &self; }
10551         const LDKCOption_HTLCClaimZ* operator ->() const { return &self; }
10552 };
10553 class COption_boolZ {
10554 private:
10555         LDKCOption_boolZ self;
10556 public:
10557         COption_boolZ(const COption_boolZ&) = delete;
10558         COption_boolZ(COption_boolZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_boolZ)); }
10559         COption_boolZ(LDKCOption_boolZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_boolZ)); }
10560         operator LDKCOption_boolZ() && { LDKCOption_boolZ res = self; memset(&self, 0, sizeof(LDKCOption_boolZ)); return res; }
10561         ~COption_boolZ() { COption_boolZ_free(self); }
10562         COption_boolZ& operator=(COption_boolZ&& o) { COption_boolZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_boolZ)); return *this; }
10563         LDKCOption_boolZ* operator &() { return &self; }
10564         LDKCOption_boolZ* operator ->() { return &self; }
10565         const LDKCOption_boolZ* operator &() const { return &self; }
10566         const LDKCOption_boolZ* operator ->() const { return &self; }
10567 };
10568 class COption_StrZ {
10569 private:
10570         LDKCOption_StrZ self;
10571 public:
10572         COption_StrZ(const COption_StrZ&) = delete;
10573         COption_StrZ(COption_StrZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_StrZ)); }
10574         COption_StrZ(LDKCOption_StrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_StrZ)); }
10575         operator LDKCOption_StrZ() && { LDKCOption_StrZ res = self; memset(&self, 0, sizeof(LDKCOption_StrZ)); return res; }
10576         ~COption_StrZ() { COption_StrZ_free(self); }
10577         COption_StrZ& operator=(COption_StrZ&& o) { COption_StrZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_StrZ)); return *this; }
10578         LDKCOption_StrZ* operator &() { return &self; }
10579         LDKCOption_StrZ* operator ->() { return &self; }
10580         const LDKCOption_StrZ* operator &() const { return &self; }
10581         const LDKCOption_StrZ* operator ->() const { return &self; }
10582 };
10583 class CResult_ProbabilisticScorerDecodeErrorZ {
10584 private:
10585         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
10586 public:
10587         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
10588         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
10589         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
10590         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
10591         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
10592         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
10593         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
10594         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
10595         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
10596         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
10597 };
10598 class CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ {
10599 private:
10600         LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ self;
10601 public:
10602         CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ(const CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ&) = delete;
10603         CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ(CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ)); }
10604         CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ(LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ)); }
10605         operator LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ() && { LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ)); return res; }
10606         ~CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ() { CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ_free(self); }
10607         CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ& operator=(CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ&& o) { CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_InboundHTLCStateDetailsZDecodeErrorZ)); return *this; }
10608         LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ* operator &() { return &self; }
10609         LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ* operator ->() { return &self; }
10610         const LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ* operator &() const { return &self; }
10611         const LDKCResult_COption_InboundHTLCStateDetailsZDecodeErrorZ* operator ->() const { return &self; }
10612 };
10613 class CResult_ShutdownScriptDecodeErrorZ {
10614 private:
10615         LDKCResult_ShutdownScriptDecodeErrorZ self;
10616 public:
10617         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
10618         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
10619         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
10620         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
10621         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
10622         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
10623         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
10624         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
10625         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
10626         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
10627 };
10628 class CResult_ElectrumSyncClientTxSyncErrorZ {
10629 private:
10630         LDKCResult_ElectrumSyncClientTxSyncErrorZ self;
10631 public:
10632         CResult_ElectrumSyncClientTxSyncErrorZ(const CResult_ElectrumSyncClientTxSyncErrorZ&) = delete;
10633         CResult_ElectrumSyncClientTxSyncErrorZ(CResult_ElectrumSyncClientTxSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ElectrumSyncClientTxSyncErrorZ)); }
10634         CResult_ElectrumSyncClientTxSyncErrorZ(LDKCResult_ElectrumSyncClientTxSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ElectrumSyncClientTxSyncErrorZ)); }
10635         operator LDKCResult_ElectrumSyncClientTxSyncErrorZ() && { LDKCResult_ElectrumSyncClientTxSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ElectrumSyncClientTxSyncErrorZ)); return res; }
10636         ~CResult_ElectrumSyncClientTxSyncErrorZ() { CResult_ElectrumSyncClientTxSyncErrorZ_free(self); }
10637         CResult_ElectrumSyncClientTxSyncErrorZ& operator=(CResult_ElectrumSyncClientTxSyncErrorZ&& o) { CResult_ElectrumSyncClientTxSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ElectrumSyncClientTxSyncErrorZ)); return *this; }
10638         LDKCResult_ElectrumSyncClientTxSyncErrorZ* operator &() { return &self; }
10639         LDKCResult_ElectrumSyncClientTxSyncErrorZ* operator ->() { return &self; }
10640         const LDKCResult_ElectrumSyncClientTxSyncErrorZ* operator &() const { return &self; }
10641         const LDKCResult_ElectrumSyncClientTxSyncErrorZ* operator ->() const { return &self; }
10642 };
10643 class C2Tuple_usizeTransactionZ {
10644 private:
10645         LDKC2Tuple_usizeTransactionZ self;
10646 public:
10647         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
10648         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
10649         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
10650         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
10651         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
10652         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
10653         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
10654         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
10655         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
10656         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
10657 };
10658 class CResult_NodeAnnouncementDecodeErrorZ {
10659 private:
10660         LDKCResult_NodeAnnouncementDecodeErrorZ self;
10661 public:
10662         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
10663         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
10664         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
10665         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
10666         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
10667         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
10668         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
10669         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
10670         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
10671         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
10672 };
10673 class CVec_FutureZ {
10674 private:
10675         LDKCVec_FutureZ self;
10676 public:
10677         CVec_FutureZ(const CVec_FutureZ&) = delete;
10678         CVec_FutureZ(CVec_FutureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_FutureZ)); }
10679         CVec_FutureZ(LDKCVec_FutureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_FutureZ)); }
10680         operator LDKCVec_FutureZ() && { LDKCVec_FutureZ res = self; memset(&self, 0, sizeof(LDKCVec_FutureZ)); return res; }
10681         ~CVec_FutureZ() { CVec_FutureZ_free(self); }
10682         CVec_FutureZ& operator=(CVec_FutureZ&& o) { CVec_FutureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_FutureZ)); return *this; }
10683         LDKCVec_FutureZ* operator &() { return &self; }
10684         LDKCVec_FutureZ* operator ->() { return &self; }
10685         const LDKCVec_FutureZ* operator &() const { return &self; }
10686         const LDKCVec_FutureZ* operator ->() const { return &self; }
10687 };
10688 class CVec_ChannelMonitorZ {
10689 private:
10690         LDKCVec_ChannelMonitorZ self;
10691 public:
10692         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
10693         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
10694         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
10695         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
10696         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
10697         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
10698         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
10699         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
10700         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
10701         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
10702 };
10703 class CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ {
10704 private:
10705         LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ self;
10706 public:
10707         CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ(const CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ&) = delete;
10708         CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ(CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ)); }
10709         CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ(LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ)); }
10710         operator LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ() && { LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ)); return res; }
10711         ~CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ() { CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ_free(self); }
10712         CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ& operator=(CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ&& o) { CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ)); return *this; }
10713         LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ* operator &() { return &self; }
10714         LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ* operator ->() { return &self; }
10715         const LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ* operator &() const { return &self; }
10716         const LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ* operator ->() const { return &self; }
10717 };
10718 class CResult_AcceptChannelV2DecodeErrorZ {
10719 private:
10720         LDKCResult_AcceptChannelV2DecodeErrorZ self;
10721 public:
10722         CResult_AcceptChannelV2DecodeErrorZ(const CResult_AcceptChannelV2DecodeErrorZ&) = delete;
10723         CResult_AcceptChannelV2DecodeErrorZ(CResult_AcceptChannelV2DecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelV2DecodeErrorZ)); }
10724         CResult_AcceptChannelV2DecodeErrorZ(LDKCResult_AcceptChannelV2DecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelV2DecodeErrorZ)); }
10725         operator LDKCResult_AcceptChannelV2DecodeErrorZ() && { LDKCResult_AcceptChannelV2DecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelV2DecodeErrorZ)); return res; }
10726         ~CResult_AcceptChannelV2DecodeErrorZ() { CResult_AcceptChannelV2DecodeErrorZ_free(self); }
10727         CResult_AcceptChannelV2DecodeErrorZ& operator=(CResult_AcceptChannelV2DecodeErrorZ&& o) { CResult_AcceptChannelV2DecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelV2DecodeErrorZ)); return *this; }
10728         LDKCResult_AcceptChannelV2DecodeErrorZ* operator &() { return &self; }
10729         LDKCResult_AcceptChannelV2DecodeErrorZ* operator ->() { return &self; }
10730         const LDKCResult_AcceptChannelV2DecodeErrorZ* operator &() const { return &self; }
10731         const LDKCResult_AcceptChannelV2DecodeErrorZ* operator ->() const { return &self; }
10732 };
10733 class CResult_RouteHopDecodeErrorZ {
10734 private:
10735         LDKCResult_RouteHopDecodeErrorZ self;
10736 public:
10737         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
10738         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
10739         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
10740         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
10741         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
10742         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
10743         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
10744         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
10745         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
10746         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
10747 };
10748 class CResult_OfferIdDecodeErrorZ {
10749 private:
10750         LDKCResult_OfferIdDecodeErrorZ self;
10751 public:
10752         CResult_OfferIdDecodeErrorZ(const CResult_OfferIdDecodeErrorZ&) = delete;
10753         CResult_OfferIdDecodeErrorZ(CResult_OfferIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OfferIdDecodeErrorZ)); }
10754         CResult_OfferIdDecodeErrorZ(LDKCResult_OfferIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OfferIdDecodeErrorZ)); }
10755         operator LDKCResult_OfferIdDecodeErrorZ() && { LDKCResult_OfferIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OfferIdDecodeErrorZ)); return res; }
10756         ~CResult_OfferIdDecodeErrorZ() { CResult_OfferIdDecodeErrorZ_free(self); }
10757         CResult_OfferIdDecodeErrorZ& operator=(CResult_OfferIdDecodeErrorZ&& o) { CResult_OfferIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OfferIdDecodeErrorZ)); return *this; }
10758         LDKCResult_OfferIdDecodeErrorZ* operator &() { return &self; }
10759         LDKCResult_OfferIdDecodeErrorZ* operator ->() { return &self; }
10760         const LDKCResult_OfferIdDecodeErrorZ* operator &() const { return &self; }
10761         const LDKCResult_OfferIdDecodeErrorZ* operator ->() const { return &self; }
10762 };
10763 class CVec_HTLCOutputInCommitmentZ {
10764 private:
10765         LDKCVec_HTLCOutputInCommitmentZ self;
10766 public:
10767         CVec_HTLCOutputInCommitmentZ(const CVec_HTLCOutputInCommitmentZ&) = delete;
10768         CVec_HTLCOutputInCommitmentZ(CVec_HTLCOutputInCommitmentZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_HTLCOutputInCommitmentZ)); }
10769         CVec_HTLCOutputInCommitmentZ(LDKCVec_HTLCOutputInCommitmentZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_HTLCOutputInCommitmentZ)); }
10770         operator LDKCVec_HTLCOutputInCommitmentZ() && { LDKCVec_HTLCOutputInCommitmentZ res = self; memset(&self, 0, sizeof(LDKCVec_HTLCOutputInCommitmentZ)); return res; }
10771         ~CVec_HTLCOutputInCommitmentZ() { CVec_HTLCOutputInCommitmentZ_free(self); }
10772         CVec_HTLCOutputInCommitmentZ& operator=(CVec_HTLCOutputInCommitmentZ&& o) { CVec_HTLCOutputInCommitmentZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_HTLCOutputInCommitmentZ)); return *this; }
10773         LDKCVec_HTLCOutputInCommitmentZ* operator &() { return &self; }
10774         LDKCVec_HTLCOutputInCommitmentZ* operator ->() { return &self; }
10775         const LDKCVec_HTLCOutputInCommitmentZ* operator &() const { return &self; }
10776         const LDKCVec_HTLCOutputInCommitmentZ* operator ->() const { return &self; }
10777 };
10778 class CResult_CoinSelectionNoneZ {
10779 private:
10780         LDKCResult_CoinSelectionNoneZ self;
10781 public:
10782         CResult_CoinSelectionNoneZ(const CResult_CoinSelectionNoneZ&) = delete;
10783         CResult_CoinSelectionNoneZ(CResult_CoinSelectionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CoinSelectionNoneZ)); }
10784         CResult_CoinSelectionNoneZ(LDKCResult_CoinSelectionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CoinSelectionNoneZ)); }
10785         operator LDKCResult_CoinSelectionNoneZ() && { LDKCResult_CoinSelectionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CoinSelectionNoneZ)); return res; }
10786         ~CResult_CoinSelectionNoneZ() { CResult_CoinSelectionNoneZ_free(self); }
10787         CResult_CoinSelectionNoneZ& operator=(CResult_CoinSelectionNoneZ&& o) { CResult_CoinSelectionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CoinSelectionNoneZ)); return *this; }
10788         LDKCResult_CoinSelectionNoneZ* operator &() { return &self; }
10789         LDKCResult_CoinSelectionNoneZ* operator ->() { return &self; }
10790         const LDKCResult_CoinSelectionNoneZ* operator &() const { return &self; }
10791         const LDKCResult_CoinSelectionNoneZ* operator ->() const { return &self; }
10792 };
10793 class CResult_TxCreationKeysDecodeErrorZ {
10794 private:
10795         LDKCResult_TxCreationKeysDecodeErrorZ self;
10796 public:
10797         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
10798         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
10799         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
10800         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
10801         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
10802         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
10803         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
10804         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
10805         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
10806         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
10807 };
10808 class CResult_SiPrefixBolt11ParseErrorZ {
10809 private:
10810         LDKCResult_SiPrefixBolt11ParseErrorZ self;
10811 public:
10812         CResult_SiPrefixBolt11ParseErrorZ(const CResult_SiPrefixBolt11ParseErrorZ&) = delete;
10813         CResult_SiPrefixBolt11ParseErrorZ(CResult_SiPrefixBolt11ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixBolt11ParseErrorZ)); }
10814         CResult_SiPrefixBolt11ParseErrorZ(LDKCResult_SiPrefixBolt11ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixBolt11ParseErrorZ)); }
10815         operator LDKCResult_SiPrefixBolt11ParseErrorZ() && { LDKCResult_SiPrefixBolt11ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixBolt11ParseErrorZ)); return res; }
10816         ~CResult_SiPrefixBolt11ParseErrorZ() { CResult_SiPrefixBolt11ParseErrorZ_free(self); }
10817         CResult_SiPrefixBolt11ParseErrorZ& operator=(CResult_SiPrefixBolt11ParseErrorZ&& o) { CResult_SiPrefixBolt11ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixBolt11ParseErrorZ)); return *this; }
10818         LDKCResult_SiPrefixBolt11ParseErrorZ* operator &() { return &self; }
10819         LDKCResult_SiPrefixBolt11ParseErrorZ* operator ->() { return &self; }
10820         const LDKCResult_SiPrefixBolt11ParseErrorZ* operator &() const { return &self; }
10821         const LDKCResult_SiPrefixBolt11ParseErrorZ* operator ->() const { return &self; }
10822 };
10823 class CResult_RefundBolt12SemanticErrorZ {
10824 private:
10825         LDKCResult_RefundBolt12SemanticErrorZ self;
10826 public:
10827         CResult_RefundBolt12SemanticErrorZ(const CResult_RefundBolt12SemanticErrorZ&) = delete;
10828         CResult_RefundBolt12SemanticErrorZ(CResult_RefundBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RefundBolt12SemanticErrorZ)); }
10829         CResult_RefundBolt12SemanticErrorZ(LDKCResult_RefundBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RefundBolt12SemanticErrorZ)); }
10830         operator LDKCResult_RefundBolt12SemanticErrorZ() && { LDKCResult_RefundBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RefundBolt12SemanticErrorZ)); return res; }
10831         ~CResult_RefundBolt12SemanticErrorZ() { CResult_RefundBolt12SemanticErrorZ_free(self); }
10832         CResult_RefundBolt12SemanticErrorZ& operator=(CResult_RefundBolt12SemanticErrorZ&& o) { CResult_RefundBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RefundBolt12SemanticErrorZ)); return *this; }
10833         LDKCResult_RefundBolt12SemanticErrorZ* operator &() { return &self; }
10834         LDKCResult_RefundBolt12SemanticErrorZ* operator ->() { return &self; }
10835         const LDKCResult_RefundBolt12SemanticErrorZ* operator &() const { return &self; }
10836         const LDKCResult_RefundBolt12SemanticErrorZ* operator ->() const { return &self; }
10837 };
10838 class CResult_NoneIOErrorZ {
10839 private:
10840         LDKCResult_NoneIOErrorZ self;
10841 public:
10842         CResult_NoneIOErrorZ(const CResult_NoneIOErrorZ&) = delete;
10843         CResult_NoneIOErrorZ(CResult_NoneIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneIOErrorZ)); }
10844         CResult_NoneIOErrorZ(LDKCResult_NoneIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneIOErrorZ)); }
10845         operator LDKCResult_NoneIOErrorZ() && { LDKCResult_NoneIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneIOErrorZ)); return res; }
10846         ~CResult_NoneIOErrorZ() { CResult_NoneIOErrorZ_free(self); }
10847         CResult_NoneIOErrorZ& operator=(CResult_NoneIOErrorZ&& o) { CResult_NoneIOErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneIOErrorZ)); return *this; }
10848         LDKCResult_NoneIOErrorZ* operator &() { return &self; }
10849         LDKCResult_NoneIOErrorZ* operator ->() { return &self; }
10850         const LDKCResult_NoneIOErrorZ* operator &() const { return &self; }
10851         const LDKCResult_NoneIOErrorZ* operator ->() const { return &self; }
10852 };
10853 class CResult_MaxDustHTLCExposureDecodeErrorZ {
10854 private:
10855         LDKCResult_MaxDustHTLCExposureDecodeErrorZ self;
10856 public:
10857         CResult_MaxDustHTLCExposureDecodeErrorZ(const CResult_MaxDustHTLCExposureDecodeErrorZ&) = delete;
10858         CResult_MaxDustHTLCExposureDecodeErrorZ(CResult_MaxDustHTLCExposureDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_MaxDustHTLCExposureDecodeErrorZ)); }
10859         CResult_MaxDustHTLCExposureDecodeErrorZ(LDKCResult_MaxDustHTLCExposureDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_MaxDustHTLCExposureDecodeErrorZ)); }
10860         operator LDKCResult_MaxDustHTLCExposureDecodeErrorZ() && { LDKCResult_MaxDustHTLCExposureDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_MaxDustHTLCExposureDecodeErrorZ)); return res; }
10861         ~CResult_MaxDustHTLCExposureDecodeErrorZ() { CResult_MaxDustHTLCExposureDecodeErrorZ_free(self); }
10862         CResult_MaxDustHTLCExposureDecodeErrorZ& operator=(CResult_MaxDustHTLCExposureDecodeErrorZ&& o) { CResult_MaxDustHTLCExposureDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_MaxDustHTLCExposureDecodeErrorZ)); return *this; }
10863         LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator &() { return &self; }
10864         LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator ->() { return &self; }
10865         const LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator &() const { return &self; }
10866         const LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator ->() const { return &self; }
10867 };
10868 class CVec_BalanceZ {
10869 private:
10870         LDKCVec_BalanceZ self;
10871 public:
10872         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
10873         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
10874         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
10875         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
10876         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
10877         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
10878         LDKCVec_BalanceZ* operator &() { return &self; }
10879         LDKCVec_BalanceZ* operator ->() { return &self; }
10880         const LDKCVec_BalanceZ* operator &() const { return &self; }
10881         const LDKCVec_BalanceZ* operator ->() const { return &self; }
10882 };
10883 class CVec_CommitmentTransactionZ {
10884 private:
10885         LDKCVec_CommitmentTransactionZ self;
10886 public:
10887         CVec_CommitmentTransactionZ(const CVec_CommitmentTransactionZ&) = delete;
10888         CVec_CommitmentTransactionZ(CVec_CommitmentTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CommitmentTransactionZ)); }
10889         CVec_CommitmentTransactionZ(LDKCVec_CommitmentTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CommitmentTransactionZ)); }
10890         operator LDKCVec_CommitmentTransactionZ() && { LDKCVec_CommitmentTransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_CommitmentTransactionZ)); return res; }
10891         ~CVec_CommitmentTransactionZ() { CVec_CommitmentTransactionZ_free(self); }
10892         CVec_CommitmentTransactionZ& operator=(CVec_CommitmentTransactionZ&& o) { CVec_CommitmentTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_CommitmentTransactionZ)); return *this; }
10893         LDKCVec_CommitmentTransactionZ* operator &() { return &self; }
10894         LDKCVec_CommitmentTransactionZ* operator ->() { return &self; }
10895         const LDKCVec_CommitmentTransactionZ* operator &() const { return &self; }
10896         const LDKCVec_CommitmentTransactionZ* operator ->() const { return &self; }
10897 };
10898 class CResult_FundingSignedDecodeErrorZ {
10899 private:
10900         LDKCResult_FundingSignedDecodeErrorZ self;
10901 public:
10902         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
10903         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
10904         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
10905         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
10906         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
10907         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
10908         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
10909         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
10910         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
10911         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
10912 };
10913 class CResult_RecoverableSignatureNoneZ {
10914 private:
10915         LDKCResult_RecoverableSignatureNoneZ self;
10916 public:
10917         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
10918         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
10919         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
10920         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
10921         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
10922         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
10923         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
10924         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
10925         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
10926         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
10927 };
10928 class CResult_SocketAddressDecodeErrorZ {
10929 private:
10930         LDKCResult_SocketAddressDecodeErrorZ self;
10931 public:
10932         CResult_SocketAddressDecodeErrorZ(const CResult_SocketAddressDecodeErrorZ&) = delete;
10933         CResult_SocketAddressDecodeErrorZ(CResult_SocketAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SocketAddressDecodeErrorZ)); }
10934         CResult_SocketAddressDecodeErrorZ(LDKCResult_SocketAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SocketAddressDecodeErrorZ)); }
10935         operator LDKCResult_SocketAddressDecodeErrorZ() && { LDKCResult_SocketAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SocketAddressDecodeErrorZ)); return res; }
10936         ~CResult_SocketAddressDecodeErrorZ() { CResult_SocketAddressDecodeErrorZ_free(self); }
10937         CResult_SocketAddressDecodeErrorZ& operator=(CResult_SocketAddressDecodeErrorZ&& o) { CResult_SocketAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SocketAddressDecodeErrorZ)); return *this; }
10938         LDKCResult_SocketAddressDecodeErrorZ* operator &() { return &self; }
10939         LDKCResult_SocketAddressDecodeErrorZ* operator ->() { return &self; }
10940         const LDKCResult_SocketAddressDecodeErrorZ* operator &() const { return &self; }
10941         const LDKCResult_SocketAddressDecodeErrorZ* operator ->() const { return &self; }
10942 };
10943 class C2Tuple_Z {
10944 private:
10945         LDKC2Tuple_Z self;
10946 public:
10947         C2Tuple_Z(const C2Tuple_Z&) = delete;
10948         C2Tuple_Z(C2Tuple_Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_Z)); }
10949         C2Tuple_Z(LDKC2Tuple_Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_Z)); }
10950         operator LDKC2Tuple_Z() && { LDKC2Tuple_Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_Z)); return res; }
10951         ~C2Tuple_Z() { C2Tuple_Z_free(self); }
10952         C2Tuple_Z& operator=(C2Tuple_Z&& o) { C2Tuple_Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_Z)); return *this; }
10953         LDKC2Tuple_Z* operator &() { return &self; }
10954         LDKC2Tuple_Z* operator ->() { return &self; }
10955         const LDKC2Tuple_Z* operator &() const { return &self; }
10956         const LDKC2Tuple_Z* operator ->() const { return &self; }
10957 };
10958 class CResult_BlindedPathDecodeErrorZ {
10959 private:
10960         LDKCResult_BlindedPathDecodeErrorZ self;
10961 public:
10962         CResult_BlindedPathDecodeErrorZ(const CResult_BlindedPathDecodeErrorZ&) = delete;
10963         CResult_BlindedPathDecodeErrorZ(CResult_BlindedPathDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); }
10964         CResult_BlindedPathDecodeErrorZ(LDKCResult_BlindedPathDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); }
10965         operator LDKCResult_BlindedPathDecodeErrorZ() && { LDKCResult_BlindedPathDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); return res; }
10966         ~CResult_BlindedPathDecodeErrorZ() { CResult_BlindedPathDecodeErrorZ_free(self); }
10967         CResult_BlindedPathDecodeErrorZ& operator=(CResult_BlindedPathDecodeErrorZ&& o) { CResult_BlindedPathDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); return *this; }
10968         LDKCResult_BlindedPathDecodeErrorZ* operator &() { return &self; }
10969         LDKCResult_BlindedPathDecodeErrorZ* operator ->() { return &self; }
10970         const LDKCResult_BlindedPathDecodeErrorZ* operator &() const { return &self; }
10971         const LDKCResult_BlindedPathDecodeErrorZ* operator ->() const { return &self; }
10972 };
10973 class CResult_InboundHTLCDetailsDecodeErrorZ {
10974 private:
10975         LDKCResult_InboundHTLCDetailsDecodeErrorZ self;
10976 public:
10977         CResult_InboundHTLCDetailsDecodeErrorZ(const CResult_InboundHTLCDetailsDecodeErrorZ&) = delete;
10978         CResult_InboundHTLCDetailsDecodeErrorZ(CResult_InboundHTLCDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InboundHTLCDetailsDecodeErrorZ)); }
10979         CResult_InboundHTLCDetailsDecodeErrorZ(LDKCResult_InboundHTLCDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InboundHTLCDetailsDecodeErrorZ)); }
10980         operator LDKCResult_InboundHTLCDetailsDecodeErrorZ() && { LDKCResult_InboundHTLCDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InboundHTLCDetailsDecodeErrorZ)); return res; }
10981         ~CResult_InboundHTLCDetailsDecodeErrorZ() { CResult_InboundHTLCDetailsDecodeErrorZ_free(self); }
10982         CResult_InboundHTLCDetailsDecodeErrorZ& operator=(CResult_InboundHTLCDetailsDecodeErrorZ&& o) { CResult_InboundHTLCDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InboundHTLCDetailsDecodeErrorZ)); return *this; }
10983         LDKCResult_InboundHTLCDetailsDecodeErrorZ* operator &() { return &self; }
10984         LDKCResult_InboundHTLCDetailsDecodeErrorZ* operator ->() { return &self; }
10985         const LDKCResult_InboundHTLCDetailsDecodeErrorZ* operator &() const { return &self; }
10986         const LDKCResult_InboundHTLCDetailsDecodeErrorZ* operator ->() const { return &self; }
10987 };
10988 class C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ {
10989 private:
10990         LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ self;
10991 public:
10992         C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ(const C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ&) = delete;
10993         C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ(C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ)); }
10994         C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ(LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ)); }
10995         operator LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ() && { LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ)); return res; }
10996         ~C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ() { C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ_free(self); }
10997         C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ& operator=(C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ&& o) { C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ)); return *this; }
10998         LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ* operator &() { return &self; }
10999         LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ* operator ->() { return &self; }
11000         const LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ* operator &() const { return &self; }
11001         const LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ* operator ->() const { return &self; }
11002 };
11003 class CVec_PathZ {
11004 private:
11005         LDKCVec_PathZ self;
11006 public:
11007         CVec_PathZ(const CVec_PathZ&) = delete;
11008         CVec_PathZ(CVec_PathZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PathZ)); }
11009         CVec_PathZ(LDKCVec_PathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PathZ)); }
11010         operator LDKCVec_PathZ() && { LDKCVec_PathZ res = self; memset(&self, 0, sizeof(LDKCVec_PathZ)); return res; }
11011         ~CVec_PathZ() { CVec_PathZ_free(self); }
11012         CVec_PathZ& operator=(CVec_PathZ&& o) { CVec_PathZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PathZ)); return *this; }
11013         LDKCVec_PathZ* operator &() { return &self; }
11014         LDKCVec_PathZ* operator ->() { return &self; }
11015         const LDKCVec_PathZ* operator &() const { return &self; }
11016         const LDKCVec_PathZ* operator ->() const { return &self; }
11017 };
11018 class CResult_NetworkGraphDecodeErrorZ {
11019 private:
11020         LDKCResult_NetworkGraphDecodeErrorZ self;
11021 public:
11022         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
11023         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
11024         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
11025         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
11026         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
11027         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
11028         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
11029         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
11030         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
11031         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
11032 };
11033 class CResult_NodeInfoDecodeErrorZ {
11034 private:
11035         LDKCResult_NodeInfoDecodeErrorZ self;
11036 public:
11037         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
11038         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
11039         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
11040         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
11041         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
11042         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
11043         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
11044         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
11045         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
11046         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
11047 };
11048 class CVec_NodeIdZ {
11049 private:
11050         LDKCVec_NodeIdZ self;
11051 public:
11052         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
11053         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
11054         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
11055         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
11056         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
11057         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
11058         LDKCVec_NodeIdZ* operator &() { return &self; }
11059         LDKCVec_NodeIdZ* operator ->() { return &self; }
11060         const LDKCVec_NodeIdZ* operator &() const { return &self; }
11061         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
11062 };
11063 class CVec_u8Z {
11064 private:
11065         LDKCVec_u8Z self;
11066 public:
11067         CVec_u8Z(const CVec_u8Z&) = delete;
11068         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
11069         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
11070         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
11071         ~CVec_u8Z() { CVec_u8Z_free(self); }
11072         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
11073         LDKCVec_u8Z* operator &() { return &self; }
11074         LDKCVec_u8Z* operator ->() { return &self; }
11075         const LDKCVec_u8Z* operator &() const { return &self; }
11076         const LDKCVec_u8Z* operator ->() const { return &self; }
11077 };
11078 class CResult_RouteLightningErrorZ {
11079 private:
11080         LDKCResult_RouteLightningErrorZ self;
11081 public:
11082         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
11083         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
11084         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
11085         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
11086         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
11087         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
11088         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
11089         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
11090         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
11091         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
11092 };
11093 class CResult_NonePaymentSendFailureZ {
11094 private:
11095         LDKCResult_NonePaymentSendFailureZ self;
11096 public:
11097         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
11098         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
11099         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
11100         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
11101         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
11102         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
11103         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
11104         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
11105         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
11106         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
11107 };
11108 class CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ {
11109 private:
11110         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ self;
11111 public:
11112         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ&) = delete;
11113         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ)); }
11114         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ)); }
11115         operator LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ)); return res; }
11116         ~CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ_free(self); }
11117         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ& operator=(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ&& o) { CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ)); return *this; }
11118         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ* operator &() { return &self; }
11119         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
11120         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
11121         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
11122 };
11123 class CResult_ChannelPublicKeysDecodeErrorZ {
11124 private:
11125         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
11126 public:
11127         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
11128         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
11129         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
11130         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
11131         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
11132         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
11133         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
11134         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
11135         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
11136         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
11137 };
11138 class CVec_ClaimedHTLCZ {
11139 private:
11140         LDKCVec_ClaimedHTLCZ self;
11141 public:
11142         CVec_ClaimedHTLCZ(const CVec_ClaimedHTLCZ&) = delete;
11143         CVec_ClaimedHTLCZ(CVec_ClaimedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ClaimedHTLCZ)); }
11144         CVec_ClaimedHTLCZ(LDKCVec_ClaimedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ClaimedHTLCZ)); }
11145         operator LDKCVec_ClaimedHTLCZ() && { LDKCVec_ClaimedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_ClaimedHTLCZ)); return res; }
11146         ~CVec_ClaimedHTLCZ() { CVec_ClaimedHTLCZ_free(self); }
11147         CVec_ClaimedHTLCZ& operator=(CVec_ClaimedHTLCZ&& o) { CVec_ClaimedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ClaimedHTLCZ)); return *this; }
11148         LDKCVec_ClaimedHTLCZ* operator &() { return &self; }
11149         LDKCVec_ClaimedHTLCZ* operator ->() { return &self; }
11150         const LDKCVec_ClaimedHTLCZ* operator &() const { return &self; }
11151         const LDKCVec_ClaimedHTLCZ* operator ->() const { return &self; }
11152 };
11153 class COption_CVec_ThirtyTwoBytesZZ {
11154 private:
11155         LDKCOption_CVec_ThirtyTwoBytesZZ self;
11156 public:
11157         COption_CVec_ThirtyTwoBytesZZ(const COption_CVec_ThirtyTwoBytesZZ&) = delete;
11158         COption_CVec_ThirtyTwoBytesZZ(COption_CVec_ThirtyTwoBytesZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_ThirtyTwoBytesZZ)); }
11159         COption_CVec_ThirtyTwoBytesZZ(LDKCOption_CVec_ThirtyTwoBytesZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_ThirtyTwoBytesZZ)); }
11160         operator LDKCOption_CVec_ThirtyTwoBytesZZ() && { LDKCOption_CVec_ThirtyTwoBytesZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_ThirtyTwoBytesZZ)); return res; }
11161         ~COption_CVec_ThirtyTwoBytesZZ() { COption_CVec_ThirtyTwoBytesZZ_free(self); }
11162         COption_CVec_ThirtyTwoBytesZZ& operator=(COption_CVec_ThirtyTwoBytesZZ&& o) { COption_CVec_ThirtyTwoBytesZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CVec_ThirtyTwoBytesZZ)); return *this; }
11163         LDKCOption_CVec_ThirtyTwoBytesZZ* operator &() { return &self; }
11164         LDKCOption_CVec_ThirtyTwoBytesZZ* operator ->() { return &self; }
11165         const LDKCOption_CVec_ThirtyTwoBytesZZ* operator &() const { return &self; }
11166         const LDKCOption_CVec_ThirtyTwoBytesZZ* operator ->() const { return &self; }
11167 };
11168 class CVec_SocketAddressZ {
11169 private:
11170         LDKCVec_SocketAddressZ self;
11171 public:
11172         CVec_SocketAddressZ(const CVec_SocketAddressZ&) = delete;
11173         CVec_SocketAddressZ(CVec_SocketAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SocketAddressZ)); }
11174         CVec_SocketAddressZ(LDKCVec_SocketAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SocketAddressZ)); }
11175         operator LDKCVec_SocketAddressZ() && { LDKCVec_SocketAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_SocketAddressZ)); return res; }
11176         ~CVec_SocketAddressZ() { CVec_SocketAddressZ_free(self); }
11177         CVec_SocketAddressZ& operator=(CVec_SocketAddressZ&& o) { CVec_SocketAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SocketAddressZ)); return *this; }
11178         LDKCVec_SocketAddressZ* operator &() { return &self; }
11179         LDKCVec_SocketAddressZ* operator ->() { return &self; }
11180         const LDKCVec_SocketAddressZ* operator &() const { return &self; }
11181         const LDKCVec_SocketAddressZ* operator ->() const { return &self; }
11182 };
11183 class CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ {
11184 private:
11185         LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ self;
11186 public:
11187         CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ(const CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ&) = delete;
11188         CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ(CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ)); }
11189         CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ(LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ)); }
11190         operator LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ() && { LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ)); return res; }
11191         ~CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ() { CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ_free(self); }
11192         CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ& operator=(CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ&& o) { CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ)); return *this; }
11193         LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ* operator &() { return &self; }
11194         LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ* operator ->() { return &self; }
11195         const LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ* operator &() const { return &self; }
11196         const LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ* operator ->() const { return &self; }
11197 };
11198 class CResult_ThirtyTwoBytesPaymentSendFailureZ {
11199 private:
11200         LDKCResult_ThirtyTwoBytesPaymentSendFailureZ self;
11201 public:
11202         CResult_ThirtyTwoBytesPaymentSendFailureZ(const CResult_ThirtyTwoBytesPaymentSendFailureZ&) = delete;
11203         CResult_ThirtyTwoBytesPaymentSendFailureZ(CResult_ThirtyTwoBytesPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ThirtyTwoBytesPaymentSendFailureZ)); }
11204         CResult_ThirtyTwoBytesPaymentSendFailureZ(LDKCResult_ThirtyTwoBytesPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ThirtyTwoBytesPaymentSendFailureZ)); }
11205         operator LDKCResult_ThirtyTwoBytesPaymentSendFailureZ() && { LDKCResult_ThirtyTwoBytesPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_ThirtyTwoBytesPaymentSendFailureZ)); return res; }
11206         ~CResult_ThirtyTwoBytesPaymentSendFailureZ() { CResult_ThirtyTwoBytesPaymentSendFailureZ_free(self); }
11207         CResult_ThirtyTwoBytesPaymentSendFailureZ& operator=(CResult_ThirtyTwoBytesPaymentSendFailureZ&& o) { CResult_ThirtyTwoBytesPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ThirtyTwoBytesPaymentSendFailureZ)); return *this; }
11208         LDKCResult_ThirtyTwoBytesPaymentSendFailureZ* operator &() { return &self; }
11209         LDKCResult_ThirtyTwoBytesPaymentSendFailureZ* operator ->() { return &self; }
11210         const LDKCResult_ThirtyTwoBytesPaymentSendFailureZ* operator &() const { return &self; }
11211         const LDKCResult_ThirtyTwoBytesPaymentSendFailureZ* operator ->() const { return &self; }
11212 };
11213 class CResult_WarningMessageDecodeErrorZ {
11214 private:
11215         LDKCResult_WarningMessageDecodeErrorZ self;
11216 public:
11217         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
11218         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
11219         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
11220         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
11221         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
11222         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
11223         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
11224         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
11225         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
11226         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
11227 };
11228 class CResult_ChannelCounterpartyDecodeErrorZ {
11229 private:
11230         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
11231 public:
11232         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
11233         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
11234         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
11235         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
11236         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
11237         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
11238         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
11239         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
11240         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
11241         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
11242 };
11243 class CResult_HolderCommitmentTransactionDecodeErrorZ {
11244 private:
11245         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
11246 public:
11247         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
11248         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
11249         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
11250         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
11251         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
11252         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
11253         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
11254         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
11255         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
11256         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
11257 };
11258 class CVec_ForwardNodeZ {
11259 private:
11260         LDKCVec_ForwardNodeZ self;
11261 public:
11262         CVec_ForwardNodeZ(const CVec_ForwardNodeZ&) = delete;
11263         CVec_ForwardNodeZ(CVec_ForwardNodeZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ForwardNodeZ)); }
11264         CVec_ForwardNodeZ(LDKCVec_ForwardNodeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ForwardNodeZ)); }
11265         operator LDKCVec_ForwardNodeZ() && { LDKCVec_ForwardNodeZ res = self; memset(&self, 0, sizeof(LDKCVec_ForwardNodeZ)); return res; }
11266         ~CVec_ForwardNodeZ() { CVec_ForwardNodeZ_free(self); }
11267         CVec_ForwardNodeZ& operator=(CVec_ForwardNodeZ&& o) { CVec_ForwardNodeZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ForwardNodeZ)); return *this; }
11268         LDKCVec_ForwardNodeZ* operator &() { return &self; }
11269         LDKCVec_ForwardNodeZ* operator ->() { return &self; }
11270         const LDKCVec_ForwardNodeZ* operator &() const { return &self; }
11271         const LDKCVec_ForwardNodeZ* operator ->() const { return &self; }
11272 };
11273 class CResult_DelayedPaymentKeyDecodeErrorZ {
11274 private:
11275         LDKCResult_DelayedPaymentKeyDecodeErrorZ self;
11276 public:
11277         CResult_DelayedPaymentKeyDecodeErrorZ(const CResult_DelayedPaymentKeyDecodeErrorZ&) = delete;
11278         CResult_DelayedPaymentKeyDecodeErrorZ(CResult_DelayedPaymentKeyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentKeyDecodeErrorZ)); }
11279         CResult_DelayedPaymentKeyDecodeErrorZ(LDKCResult_DelayedPaymentKeyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentKeyDecodeErrorZ)); }
11280         operator LDKCResult_DelayedPaymentKeyDecodeErrorZ() && { LDKCResult_DelayedPaymentKeyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentKeyDecodeErrorZ)); return res; }
11281         ~CResult_DelayedPaymentKeyDecodeErrorZ() { CResult_DelayedPaymentKeyDecodeErrorZ_free(self); }
11282         CResult_DelayedPaymentKeyDecodeErrorZ& operator=(CResult_DelayedPaymentKeyDecodeErrorZ&& o) { CResult_DelayedPaymentKeyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentKeyDecodeErrorZ)); return *this; }
11283         LDKCResult_DelayedPaymentKeyDecodeErrorZ* operator &() { return &self; }
11284         LDKCResult_DelayedPaymentKeyDecodeErrorZ* operator ->() { return &self; }
11285         const LDKCResult_DelayedPaymentKeyDecodeErrorZ* operator &() const { return &self; }
11286         const LDKCResult_DelayedPaymentKeyDecodeErrorZ* operator ->() const { return &self; }
11287 };
11288 class CResult_InitDecodeErrorZ {
11289 private:
11290         LDKCResult_InitDecodeErrorZ self;
11291 public:
11292         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
11293         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
11294         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
11295         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
11296         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
11297         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
11298         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
11299         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
11300         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
11301         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
11302 };
11303 class CResult_OfferBolt12SemanticErrorZ {
11304 private:
11305         LDKCResult_OfferBolt12SemanticErrorZ self;
11306 public:
11307         CResult_OfferBolt12SemanticErrorZ(const CResult_OfferBolt12SemanticErrorZ&) = delete;
11308         CResult_OfferBolt12SemanticErrorZ(CResult_OfferBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OfferBolt12SemanticErrorZ)); }
11309         CResult_OfferBolt12SemanticErrorZ(LDKCResult_OfferBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OfferBolt12SemanticErrorZ)); }
11310         operator LDKCResult_OfferBolt12SemanticErrorZ() && { LDKCResult_OfferBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OfferBolt12SemanticErrorZ)); return res; }
11311         ~CResult_OfferBolt12SemanticErrorZ() { CResult_OfferBolt12SemanticErrorZ_free(self); }
11312         CResult_OfferBolt12SemanticErrorZ& operator=(CResult_OfferBolt12SemanticErrorZ&& o) { CResult_OfferBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OfferBolt12SemanticErrorZ)); return *this; }
11313         LDKCResult_OfferBolt12SemanticErrorZ* operator &() { return &self; }
11314         LDKCResult_OfferBolt12SemanticErrorZ* operator ->() { return &self; }
11315         const LDKCResult_OfferBolt12SemanticErrorZ* operator &() const { return &self; }
11316         const LDKCResult_OfferBolt12SemanticErrorZ* operator ->() const { return &self; }
11317 };
11318 class CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ {
11319 private:
11320         LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ self;
11321 public:
11322         CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ(const CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ&) = delete;
11323         CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ(CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ)); }
11324         CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ)); }
11325         operator LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ)); return res; }
11326         ~CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ() { CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ_free(self); }
11327         CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ& operator=(CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ&& o) { CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ)); return *this; }
11328         LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ* operator &() { return &self; }
11329         LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ* operator ->() { return &self; }
11330         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ* operator &() const { return &self; }
11331         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
11332 };
11333 class CResult_SpliceDecodeErrorZ {
11334 private:
11335         LDKCResult_SpliceDecodeErrorZ self;
11336 public:
11337         CResult_SpliceDecodeErrorZ(const CResult_SpliceDecodeErrorZ&) = delete;
11338         CResult_SpliceDecodeErrorZ(CResult_SpliceDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpliceDecodeErrorZ)); }
11339         CResult_SpliceDecodeErrorZ(LDKCResult_SpliceDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpliceDecodeErrorZ)); }
11340         operator LDKCResult_SpliceDecodeErrorZ() && { LDKCResult_SpliceDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpliceDecodeErrorZ)); return res; }
11341         ~CResult_SpliceDecodeErrorZ() { CResult_SpliceDecodeErrorZ_free(self); }
11342         CResult_SpliceDecodeErrorZ& operator=(CResult_SpliceDecodeErrorZ&& o) { CResult_SpliceDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpliceDecodeErrorZ)); return *this; }
11343         LDKCResult_SpliceDecodeErrorZ* operator &() { return &self; }
11344         LDKCResult_SpliceDecodeErrorZ* operator ->() { return &self; }
11345         const LDKCResult_SpliceDecodeErrorZ* operator &() const { return &self; }
11346         const LDKCResult_SpliceDecodeErrorZ* operator ->() const { return &self; }
11347 };
11348 class CResult_PaymentPurposeDecodeErrorZ {
11349 private:
11350         LDKCResult_PaymentPurposeDecodeErrorZ self;
11351 public:
11352         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
11353         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
11354         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
11355         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
11356         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
11357         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
11358         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
11359         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
11360         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
11361         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
11362 };
11363 class CResult_ClaimedHTLCDecodeErrorZ {
11364 private:
11365         LDKCResult_ClaimedHTLCDecodeErrorZ self;
11366 public:
11367         CResult_ClaimedHTLCDecodeErrorZ(const CResult_ClaimedHTLCDecodeErrorZ&) = delete;
11368         CResult_ClaimedHTLCDecodeErrorZ(CResult_ClaimedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClaimedHTLCDecodeErrorZ)); }
11369         CResult_ClaimedHTLCDecodeErrorZ(LDKCResult_ClaimedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClaimedHTLCDecodeErrorZ)); }
11370         operator LDKCResult_ClaimedHTLCDecodeErrorZ() && { LDKCResult_ClaimedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClaimedHTLCDecodeErrorZ)); return res; }
11371         ~CResult_ClaimedHTLCDecodeErrorZ() { CResult_ClaimedHTLCDecodeErrorZ_free(self); }
11372         CResult_ClaimedHTLCDecodeErrorZ& operator=(CResult_ClaimedHTLCDecodeErrorZ&& o) { CResult_ClaimedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClaimedHTLCDecodeErrorZ)); return *this; }
11373         LDKCResult_ClaimedHTLCDecodeErrorZ* operator &() { return &self; }
11374         LDKCResult_ClaimedHTLCDecodeErrorZ* operator ->() { return &self; }
11375         const LDKCResult_ClaimedHTLCDecodeErrorZ* operator &() const { return &self; }
11376         const LDKCResult_ClaimedHTLCDecodeErrorZ* operator ->() const { return &self; }
11377 };
11378 class CResult_OutPointDecodeErrorZ {
11379 private:
11380         LDKCResult_OutPointDecodeErrorZ self;
11381 public:
11382         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
11383         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
11384         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
11385         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
11386         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
11387         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
11388         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
11389         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
11390         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
11391         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
11392 };
11393 class CVec_ChannelDetailsZ {
11394 private:
11395         LDKCVec_ChannelDetailsZ self;
11396 public:
11397         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
11398         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
11399         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
11400         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
11401         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
11402         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
11403         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
11404         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
11405         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
11406         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
11407 };
11408 class C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ {
11409 private:
11410         LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ self;
11411 public:
11412         C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ(const C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ&) = delete;
11413         C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ(C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ)); }
11414         C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ(LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ)); }
11415         operator LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ() && { LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ)); return res; }
11416         ~C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ() { C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ_free(self); }
11417         C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ& operator=(C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ&& o) { C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ)); return *this; }
11418         LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ* operator &() { return &self; }
11419         LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ* operator ->() { return &self; }
11420         const LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ* operator &() const { return &self; }
11421         const LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ* operator ->() const { return &self; }
11422 };
11423 class CResult_Bolt11InvoiceFeaturesDecodeErrorZ {
11424 private:
11425         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ self;
11426 public:
11427         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(const CResult_Bolt11InvoiceFeaturesDecodeErrorZ&) = delete;
11428         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(CResult_Bolt11InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceFeaturesDecodeErrorZ)); }
11429         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ)); }
11430         operator LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ() && { LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ)); return res; }
11431         ~CResult_Bolt11InvoiceFeaturesDecodeErrorZ() { CResult_Bolt11InvoiceFeaturesDecodeErrorZ_free(self); }
11432         CResult_Bolt11InvoiceFeaturesDecodeErrorZ& operator=(CResult_Bolt11InvoiceFeaturesDecodeErrorZ&& o) { CResult_Bolt11InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceFeaturesDecodeErrorZ)); return *this; }
11433         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
11434         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
11435         const LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
11436         const LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
11437 };
11438 class CVec_MessageSendEventZ {
11439 private:
11440         LDKCVec_MessageSendEventZ self;
11441 public:
11442         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
11443         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
11444         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
11445         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
11446         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
11447         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
11448         LDKCVec_MessageSendEventZ* operator &() { return &self; }
11449         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
11450         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
11451         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
11452 };
11453 class CVec_MonitorUpdateIdZ {
11454 private:
11455         LDKCVec_MonitorUpdateIdZ self;
11456 public:
11457         CVec_MonitorUpdateIdZ(const CVec_MonitorUpdateIdZ&) = delete;
11458         CVec_MonitorUpdateIdZ(CVec_MonitorUpdateIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); }
11459         CVec_MonitorUpdateIdZ(LDKCVec_MonitorUpdateIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); }
11460         operator LDKCVec_MonitorUpdateIdZ() && { LDKCVec_MonitorUpdateIdZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); return res; }
11461         ~CVec_MonitorUpdateIdZ() { CVec_MonitorUpdateIdZ_free(self); }
11462         CVec_MonitorUpdateIdZ& operator=(CVec_MonitorUpdateIdZ&& o) { CVec_MonitorUpdateIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); return *this; }
11463         LDKCVec_MonitorUpdateIdZ* operator &() { return &self; }
11464         LDKCVec_MonitorUpdateIdZ* operator ->() { return &self; }
11465         const LDKCVec_MonitorUpdateIdZ* operator &() const { return &self; }
11466         const LDKCVec_MonitorUpdateIdZ* operator ->() const { return &self; }
11467 };
11468 class CResult_RouteHintHopDecodeErrorZ {
11469 private:
11470         LDKCResult_RouteHintHopDecodeErrorZ self;
11471 public:
11472         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
11473         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
11474         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
11475         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
11476         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
11477         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
11478         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
11479         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
11480         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
11481         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
11482 };
11483 class CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ {
11484 private:
11485         LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ self;
11486 public:
11487         CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ(const CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ&) = delete;
11488         CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ(CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ)); }
11489         CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ(LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ)); }
11490         operator LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ() && { LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ)); return res; }
11491         ~CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ() { CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ_free(self); }
11492         CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ& operator=(CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ&& o) { CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ)); return *this; }
11493         LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ* operator &() { return &self; }
11494         LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ* operator ->() { return &self; }
11495         const LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ* operator &() const { return &self; }
11496         const LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ* operator ->() const { return &self; }
11497 };
11498 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
11499 private:
11500         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
11501 public:
11502         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
11503         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
11504         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
11505         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
11506         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
11507         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
11508         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
11509         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
11510         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
11511         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
11512 };
11513 class CResult_BlindedPayInfoDecodeErrorZ {
11514 private:
11515         LDKCResult_BlindedPayInfoDecodeErrorZ self;
11516 public:
11517         CResult_BlindedPayInfoDecodeErrorZ(const CResult_BlindedPayInfoDecodeErrorZ&) = delete;
11518         CResult_BlindedPayInfoDecodeErrorZ(CResult_BlindedPayInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPayInfoDecodeErrorZ)); }
11519         CResult_BlindedPayInfoDecodeErrorZ(LDKCResult_BlindedPayInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPayInfoDecodeErrorZ)); }
11520         operator LDKCResult_BlindedPayInfoDecodeErrorZ() && { LDKCResult_BlindedPayInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPayInfoDecodeErrorZ)); return res; }
11521         ~CResult_BlindedPayInfoDecodeErrorZ() { CResult_BlindedPayInfoDecodeErrorZ_free(self); }
11522         CResult_BlindedPayInfoDecodeErrorZ& operator=(CResult_BlindedPayInfoDecodeErrorZ&& o) { CResult_BlindedPayInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPayInfoDecodeErrorZ)); return *this; }
11523         LDKCResult_BlindedPayInfoDecodeErrorZ* operator &() { return &self; }
11524         LDKCResult_BlindedPayInfoDecodeErrorZ* operator ->() { return &self; }
11525         const LDKCResult_BlindedPayInfoDecodeErrorZ* operator &() const { return &self; }
11526         const LDKCResult_BlindedPayInfoDecodeErrorZ* operator ->() const { return &self; }
11527 };
11528 class CResult_ThirtyTwoBytesAPIErrorZ {
11529 private:
11530         LDKCResult_ThirtyTwoBytesAPIErrorZ self;
11531 public:
11532         CResult_ThirtyTwoBytesAPIErrorZ(const CResult_ThirtyTwoBytesAPIErrorZ&) = delete;
11533         CResult_ThirtyTwoBytesAPIErrorZ(CResult_ThirtyTwoBytesAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ThirtyTwoBytesAPIErrorZ)); }
11534         CResult_ThirtyTwoBytesAPIErrorZ(LDKCResult_ThirtyTwoBytesAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ThirtyTwoBytesAPIErrorZ)); }
11535         operator LDKCResult_ThirtyTwoBytesAPIErrorZ() && { LDKCResult_ThirtyTwoBytesAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ThirtyTwoBytesAPIErrorZ)); return res; }
11536         ~CResult_ThirtyTwoBytesAPIErrorZ() { CResult_ThirtyTwoBytesAPIErrorZ_free(self); }
11537         CResult_ThirtyTwoBytesAPIErrorZ& operator=(CResult_ThirtyTwoBytesAPIErrorZ&& o) { CResult_ThirtyTwoBytesAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ThirtyTwoBytesAPIErrorZ)); return *this; }
11538         LDKCResult_ThirtyTwoBytesAPIErrorZ* operator &() { return &self; }
11539         LDKCResult_ThirtyTwoBytesAPIErrorZ* operator ->() { return &self; }
11540         const LDKCResult_ThirtyTwoBytesAPIErrorZ* operator &() const { return &self; }
11541         const LDKCResult_ThirtyTwoBytesAPIErrorZ* operator ->() const { return &self; }
11542 };
11543 class COption_ChannelShutdownStateZ {
11544 private:
11545         LDKCOption_ChannelShutdownStateZ self;
11546 public:
11547         COption_ChannelShutdownStateZ(const COption_ChannelShutdownStateZ&) = delete;
11548         COption_ChannelShutdownStateZ(COption_ChannelShutdownStateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ChannelShutdownStateZ)); }
11549         COption_ChannelShutdownStateZ(LDKCOption_ChannelShutdownStateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ChannelShutdownStateZ)); }
11550         operator LDKCOption_ChannelShutdownStateZ() && { LDKCOption_ChannelShutdownStateZ res = self; memset(&self, 0, sizeof(LDKCOption_ChannelShutdownStateZ)); return res; }
11551         ~COption_ChannelShutdownStateZ() { COption_ChannelShutdownStateZ_free(self); }
11552         COption_ChannelShutdownStateZ& operator=(COption_ChannelShutdownStateZ&& o) { COption_ChannelShutdownStateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ChannelShutdownStateZ)); return *this; }
11553         LDKCOption_ChannelShutdownStateZ* operator &() { return &self; }
11554         LDKCOption_ChannelShutdownStateZ* operator ->() { return &self; }
11555         const LDKCOption_ChannelShutdownStateZ* operator &() const { return &self; }
11556         const LDKCOption_ChannelShutdownStateZ* operator ->() const { return &self; }
11557 };
11558 class CResult_Bolt12InvoiceBolt12SemanticErrorZ {
11559 private:
11560         LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ self;
11561 public:
11562         CResult_Bolt12InvoiceBolt12SemanticErrorZ(const CResult_Bolt12InvoiceBolt12SemanticErrorZ&) = delete;
11563         CResult_Bolt12InvoiceBolt12SemanticErrorZ(CResult_Bolt12InvoiceBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12InvoiceBolt12SemanticErrorZ)); }
11564         CResult_Bolt12InvoiceBolt12SemanticErrorZ(LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ)); }
11565         operator LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ() && { LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ)); return res; }
11566         ~CResult_Bolt12InvoiceBolt12SemanticErrorZ() { CResult_Bolt12InvoiceBolt12SemanticErrorZ_free(self); }
11567         CResult_Bolt12InvoiceBolt12SemanticErrorZ& operator=(CResult_Bolt12InvoiceBolt12SemanticErrorZ&& o) { CResult_Bolt12InvoiceBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12InvoiceBolt12SemanticErrorZ)); return *this; }
11568         LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ* operator &() { return &self; }
11569         LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ* operator ->() { return &self; }
11570         const LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ* operator &() const { return &self; }
11571         const LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ* operator ->() const { return &self; }
11572 };
11573 class CResult_InvoiceRequestFieldsDecodeErrorZ {
11574 private:
11575         LDKCResult_InvoiceRequestFieldsDecodeErrorZ self;
11576 public:
11577         CResult_InvoiceRequestFieldsDecodeErrorZ(const CResult_InvoiceRequestFieldsDecodeErrorZ&) = delete;
11578         CResult_InvoiceRequestFieldsDecodeErrorZ(CResult_InvoiceRequestFieldsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestFieldsDecodeErrorZ)); }
11579         CResult_InvoiceRequestFieldsDecodeErrorZ(LDKCResult_InvoiceRequestFieldsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestFieldsDecodeErrorZ)); }
11580         operator LDKCResult_InvoiceRequestFieldsDecodeErrorZ() && { LDKCResult_InvoiceRequestFieldsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestFieldsDecodeErrorZ)); return res; }
11581         ~CResult_InvoiceRequestFieldsDecodeErrorZ() { CResult_InvoiceRequestFieldsDecodeErrorZ_free(self); }
11582         CResult_InvoiceRequestFieldsDecodeErrorZ& operator=(CResult_InvoiceRequestFieldsDecodeErrorZ&& o) { CResult_InvoiceRequestFieldsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestFieldsDecodeErrorZ)); return *this; }
11583         LDKCResult_InvoiceRequestFieldsDecodeErrorZ* operator &() { return &self; }
11584         LDKCResult_InvoiceRequestFieldsDecodeErrorZ* operator ->() { return &self; }
11585         const LDKCResult_InvoiceRequestFieldsDecodeErrorZ* operator &() const { return &self; }
11586         const LDKCResult_InvoiceRequestFieldsDecodeErrorZ* operator ->() const { return &self; }
11587 };
11588 class CResult_AcceptChannelDecodeErrorZ {
11589 private:
11590         LDKCResult_AcceptChannelDecodeErrorZ self;
11591 public:
11592         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
11593         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
11594         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
11595         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
11596         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
11597         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
11598         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
11599         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
11600         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
11601         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
11602 };
11603 class CResult_HostnameDecodeErrorZ {
11604 private:
11605         LDKCResult_HostnameDecodeErrorZ self;
11606 public:
11607         CResult_HostnameDecodeErrorZ(const CResult_HostnameDecodeErrorZ&) = delete;
11608         CResult_HostnameDecodeErrorZ(CResult_HostnameDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HostnameDecodeErrorZ)); }
11609         CResult_HostnameDecodeErrorZ(LDKCResult_HostnameDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HostnameDecodeErrorZ)); }
11610         operator LDKCResult_HostnameDecodeErrorZ() && { LDKCResult_HostnameDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HostnameDecodeErrorZ)); return res; }
11611         ~CResult_HostnameDecodeErrorZ() { CResult_HostnameDecodeErrorZ_free(self); }
11612         CResult_HostnameDecodeErrorZ& operator=(CResult_HostnameDecodeErrorZ&& o) { CResult_HostnameDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HostnameDecodeErrorZ)); return *this; }
11613         LDKCResult_HostnameDecodeErrorZ* operator &() { return &self; }
11614         LDKCResult_HostnameDecodeErrorZ* operator ->() { return &self; }
11615         const LDKCResult_HostnameDecodeErrorZ* operator &() const { return &self; }
11616         const LDKCResult_HostnameDecodeErrorZ* operator ->() const { return &self; }
11617 };
11618 class C2Tuple_u64u16Z {
11619 private:
11620         LDKC2Tuple_u64u16Z self;
11621 public:
11622         C2Tuple_u64u16Z(const C2Tuple_u64u16Z&) = delete;
11623         C2Tuple_u64u16Z(C2Tuple_u64u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u16Z)); }
11624         C2Tuple_u64u16Z(LDKC2Tuple_u64u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u16Z)); }
11625         operator LDKC2Tuple_u64u16Z() && { LDKC2Tuple_u64u16Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u16Z)); return res; }
11626         ~C2Tuple_u64u16Z() { C2Tuple_u64u16Z_free(self); }
11627         C2Tuple_u64u16Z& operator=(C2Tuple_u64u16Z&& o) { C2Tuple_u64u16Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u16Z)); return *this; }
11628         LDKC2Tuple_u64u16Z* operator &() { return &self; }
11629         LDKC2Tuple_u64u16Z* operator ->() { return &self; }
11630         const LDKC2Tuple_u64u16Z* operator &() const { return &self; }
11631         const LDKC2Tuple_u64u16Z* operator ->() const { return &self; }
11632 };
11633 class COption_ThirtyTwoBytesZ {
11634 private:
11635         LDKCOption_ThirtyTwoBytesZ self;
11636 public:
11637         COption_ThirtyTwoBytesZ(const COption_ThirtyTwoBytesZ&) = delete;
11638         COption_ThirtyTwoBytesZ(COption_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ThirtyTwoBytesZ)); }
11639         COption_ThirtyTwoBytesZ(LDKCOption_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ThirtyTwoBytesZ)); }
11640         operator LDKCOption_ThirtyTwoBytesZ() && { LDKCOption_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCOption_ThirtyTwoBytesZ)); return res; }
11641         ~COption_ThirtyTwoBytesZ() { COption_ThirtyTwoBytesZ_free(self); }
11642         COption_ThirtyTwoBytesZ& operator=(COption_ThirtyTwoBytesZ&& o) { COption_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ThirtyTwoBytesZ)); return *this; }
11643         LDKCOption_ThirtyTwoBytesZ* operator &() { return &self; }
11644         LDKCOption_ThirtyTwoBytesZ* operator ->() { return &self; }
11645         const LDKCOption_ThirtyTwoBytesZ* operator &() const { return &self; }
11646         const LDKCOption_ThirtyTwoBytesZ* operator ->() const { return &self; }
11647 };
11648 class CVec_u64Z {
11649 private:
11650         LDKCVec_u64Z self;
11651 public:
11652         CVec_u64Z(const CVec_u64Z&) = delete;
11653         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
11654         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
11655         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
11656         ~CVec_u64Z() { CVec_u64Z_free(self); }
11657         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
11658         LDKCVec_u64Z* operator &() { return &self; }
11659         LDKCVec_u64Z* operator ->() { return &self; }
11660         const LDKCVec_u64Z* operator &() const { return &self; }
11661         const LDKCVec_u64Z* operator ->() const { return &self; }
11662 };
11663 class CResult_NoneBolt12SemanticErrorZ {
11664 private:
11665         LDKCResult_NoneBolt12SemanticErrorZ self;
11666 public:
11667         CResult_NoneBolt12SemanticErrorZ(const CResult_NoneBolt12SemanticErrorZ&) = delete;
11668         CResult_NoneBolt12SemanticErrorZ(CResult_NoneBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneBolt12SemanticErrorZ)); }
11669         CResult_NoneBolt12SemanticErrorZ(LDKCResult_NoneBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneBolt12SemanticErrorZ)); }
11670         operator LDKCResult_NoneBolt12SemanticErrorZ() && { LDKCResult_NoneBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneBolt12SemanticErrorZ)); return res; }
11671         ~CResult_NoneBolt12SemanticErrorZ() { CResult_NoneBolt12SemanticErrorZ_free(self); }
11672         CResult_NoneBolt12SemanticErrorZ& operator=(CResult_NoneBolt12SemanticErrorZ&& o) { CResult_NoneBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneBolt12SemanticErrorZ)); return *this; }
11673         LDKCResult_NoneBolt12SemanticErrorZ* operator &() { return &self; }
11674         LDKCResult_NoneBolt12SemanticErrorZ* operator ->() { return &self; }
11675         const LDKCResult_NoneBolt12SemanticErrorZ* operator &() const { return &self; }
11676         const LDKCResult_NoneBolt12SemanticErrorZ* operator ->() const { return &self; }
11677 };
11678 class COption_SecretKeyZ {
11679 private:
11680         LDKCOption_SecretKeyZ self;
11681 public:
11682         COption_SecretKeyZ(const COption_SecretKeyZ&) = delete;
11683         COption_SecretKeyZ(COption_SecretKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_SecretKeyZ)); }
11684         COption_SecretKeyZ(LDKCOption_SecretKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_SecretKeyZ)); }
11685         operator LDKCOption_SecretKeyZ() && { LDKCOption_SecretKeyZ res = self; memset(&self, 0, sizeof(LDKCOption_SecretKeyZ)); return res; }
11686         ~COption_SecretKeyZ() { COption_SecretKeyZ_free(self); }
11687         COption_SecretKeyZ& operator=(COption_SecretKeyZ&& o) { COption_SecretKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_SecretKeyZ)); return *this; }
11688         LDKCOption_SecretKeyZ* operator &() { return &self; }
11689         LDKCOption_SecretKeyZ* operator ->() { return &self; }
11690         const LDKCOption_SecretKeyZ* operator &() const { return &self; }
11691         const LDKCOption_SecretKeyZ* operator ->() const { return &self; }
11692 };
11693 class COption_InboundHTLCStateDetailsZ {
11694 private:
11695         LDKCOption_InboundHTLCStateDetailsZ self;
11696 public:
11697         COption_InboundHTLCStateDetailsZ(const COption_InboundHTLCStateDetailsZ&) = delete;
11698         COption_InboundHTLCStateDetailsZ(COption_InboundHTLCStateDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_InboundHTLCStateDetailsZ)); }
11699         COption_InboundHTLCStateDetailsZ(LDKCOption_InboundHTLCStateDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_InboundHTLCStateDetailsZ)); }
11700         operator LDKCOption_InboundHTLCStateDetailsZ() && { LDKCOption_InboundHTLCStateDetailsZ res = self; memset(&self, 0, sizeof(LDKCOption_InboundHTLCStateDetailsZ)); return res; }
11701         ~COption_InboundHTLCStateDetailsZ() { COption_InboundHTLCStateDetailsZ_free(self); }
11702         COption_InboundHTLCStateDetailsZ& operator=(COption_InboundHTLCStateDetailsZ&& o) { COption_InboundHTLCStateDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_InboundHTLCStateDetailsZ)); return *this; }
11703         LDKCOption_InboundHTLCStateDetailsZ* operator &() { return &self; }
11704         LDKCOption_InboundHTLCStateDetailsZ* operator ->() { return &self; }
11705         const LDKCOption_InboundHTLCStateDetailsZ* operator &() const { return &self; }
11706         const LDKCOption_InboundHTLCStateDetailsZ* operator ->() const { return &self; }
11707 };
11708 class CResult_UnknownPaymentContextDecodeErrorZ {
11709 private:
11710         LDKCResult_UnknownPaymentContextDecodeErrorZ self;
11711 public:
11712         CResult_UnknownPaymentContextDecodeErrorZ(const CResult_UnknownPaymentContextDecodeErrorZ&) = delete;
11713         CResult_UnknownPaymentContextDecodeErrorZ(CResult_UnknownPaymentContextDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnknownPaymentContextDecodeErrorZ)); }
11714         CResult_UnknownPaymentContextDecodeErrorZ(LDKCResult_UnknownPaymentContextDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnknownPaymentContextDecodeErrorZ)); }
11715         operator LDKCResult_UnknownPaymentContextDecodeErrorZ() && { LDKCResult_UnknownPaymentContextDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnknownPaymentContextDecodeErrorZ)); return res; }
11716         ~CResult_UnknownPaymentContextDecodeErrorZ() { CResult_UnknownPaymentContextDecodeErrorZ_free(self); }
11717         CResult_UnknownPaymentContextDecodeErrorZ& operator=(CResult_UnknownPaymentContextDecodeErrorZ&& o) { CResult_UnknownPaymentContextDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnknownPaymentContextDecodeErrorZ)); return *this; }
11718         LDKCResult_UnknownPaymentContextDecodeErrorZ* operator &() { return &self; }
11719         LDKCResult_UnknownPaymentContextDecodeErrorZ* operator ->() { return &self; }
11720         const LDKCResult_UnknownPaymentContextDecodeErrorZ* operator &() const { return &self; }
11721         const LDKCResult_UnknownPaymentContextDecodeErrorZ* operator ->() const { return &self; }
11722 };
11723 class CResult_C2Tuple_CVec_u8Zu64ZNoneZ {
11724 private:
11725         LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ self;
11726 public:
11727         CResult_C2Tuple_CVec_u8Zu64ZNoneZ(const CResult_C2Tuple_CVec_u8Zu64ZNoneZ&) = delete;
11728         CResult_C2Tuple_CVec_u8Zu64ZNoneZ(CResult_C2Tuple_CVec_u8Zu64ZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_CVec_u8Zu64ZNoneZ)); }
11729         CResult_C2Tuple_CVec_u8Zu64ZNoneZ(LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ)); }
11730         operator LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ() && { LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ)); return res; }
11731         ~CResult_C2Tuple_CVec_u8Zu64ZNoneZ() { CResult_C2Tuple_CVec_u8Zu64ZNoneZ_free(self); }
11732         CResult_C2Tuple_CVec_u8Zu64ZNoneZ& operator=(CResult_C2Tuple_CVec_u8Zu64ZNoneZ&& o) { CResult_C2Tuple_CVec_u8Zu64ZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_CVec_u8Zu64ZNoneZ)); return *this; }
11733         LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ* operator &() { return &self; }
11734         LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ* operator ->() { return &self; }
11735         const LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ* operator &() const { return &self; }
11736         const LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ* operator ->() const { return &self; }
11737 };
11738 class CResult_OutputSweeperDecodeErrorZ {
11739 private:
11740         LDKCResult_OutputSweeperDecodeErrorZ self;
11741 public:
11742         CResult_OutputSweeperDecodeErrorZ(const CResult_OutputSweeperDecodeErrorZ&) = delete;
11743         CResult_OutputSweeperDecodeErrorZ(CResult_OutputSweeperDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutputSweeperDecodeErrorZ)); }
11744         CResult_OutputSweeperDecodeErrorZ(LDKCResult_OutputSweeperDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutputSweeperDecodeErrorZ)); }
11745         operator LDKCResult_OutputSweeperDecodeErrorZ() && { LDKCResult_OutputSweeperDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutputSweeperDecodeErrorZ)); return res; }
11746         ~CResult_OutputSweeperDecodeErrorZ() { CResult_OutputSweeperDecodeErrorZ_free(self); }
11747         CResult_OutputSweeperDecodeErrorZ& operator=(CResult_OutputSweeperDecodeErrorZ&& o) { CResult_OutputSweeperDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutputSweeperDecodeErrorZ)); return *this; }
11748         LDKCResult_OutputSweeperDecodeErrorZ* operator &() { return &self; }
11749         LDKCResult_OutputSweeperDecodeErrorZ* operator ->() { return &self; }
11750         const LDKCResult_OutputSweeperDecodeErrorZ* operator &() const { return &self; }
11751         const LDKCResult_OutputSweeperDecodeErrorZ* operator ->() const { return &self; }
11752 };
11753 class COption_EventZ {
11754 private:
11755         LDKCOption_EventZ self;
11756 public:
11757         COption_EventZ(const COption_EventZ&) = delete;
11758         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
11759         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
11760         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
11761         ~COption_EventZ() { COption_EventZ_free(self); }
11762         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
11763         LDKCOption_EventZ* operator &() { return &self; }
11764         LDKCOption_EventZ* operator ->() { return &self; }
11765         const LDKCOption_EventZ* operator &() const { return &self; }
11766         const LDKCOption_EventZ* operator ->() const { return &self; }
11767 };
11768 class CResult_ChannelTypeFeaturesDecodeErrorZ {
11769 private:
11770         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
11771 public:
11772         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
11773         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
11774         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
11775         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
11776         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
11777         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
11778         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
11779         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
11780         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
11781         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
11782 };
11783 class COption_CVec_SocketAddressZZ {
11784 private:
11785         LDKCOption_CVec_SocketAddressZZ self;
11786 public:
11787         COption_CVec_SocketAddressZZ(const COption_CVec_SocketAddressZZ&) = delete;
11788         COption_CVec_SocketAddressZZ(COption_CVec_SocketAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_SocketAddressZZ)); }
11789         COption_CVec_SocketAddressZZ(LDKCOption_CVec_SocketAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_SocketAddressZZ)); }
11790         operator LDKCOption_CVec_SocketAddressZZ() && { LDKCOption_CVec_SocketAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_SocketAddressZZ)); return res; }
11791         ~COption_CVec_SocketAddressZZ() { COption_CVec_SocketAddressZZ_free(self); }
11792         COption_CVec_SocketAddressZZ& operator=(COption_CVec_SocketAddressZZ&& o) { COption_CVec_SocketAddressZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CVec_SocketAddressZZ)); return *this; }
11793         LDKCOption_CVec_SocketAddressZZ* operator &() { return &self; }
11794         LDKCOption_CVec_SocketAddressZZ* operator ->() { return &self; }
11795         const LDKCOption_CVec_SocketAddressZZ* operator &() const { return &self; }
11796         const LDKCOption_CVec_SocketAddressZZ* operator ->() const { return &self; }
11797 };
11798 class CVec_RouteHintZ {
11799 private:
11800         LDKCVec_RouteHintZ self;
11801 public:
11802         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
11803         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
11804         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
11805         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
11806         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
11807         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
11808         LDKCVec_RouteHintZ* operator &() { return &self; }
11809         LDKCVec_RouteHintZ* operator ->() { return &self; }
11810         const LDKCVec_RouteHintZ* operator &() const { return &self; }
11811         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
11812 };
11813 class COption_u16Z {
11814 private:
11815         LDKCOption_u16Z self;
11816 public:
11817         COption_u16Z(const COption_u16Z&) = delete;
11818         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
11819         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
11820         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
11821         ~COption_u16Z() { COption_u16Z_free(self); }
11822         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
11823         LDKCOption_u16Z* operator &() { return &self; }
11824         LDKCOption_u16Z* operator ->() { return &self; }
11825         const LDKCOption_u16Z* operator &() const { return &self; }
11826         const LDKCOption_u16Z* operator ->() const { return &self; }
11827 };
11828 class COption_PaymentFailureReasonZ {
11829 private:
11830         LDKCOption_PaymentFailureReasonZ self;
11831 public:
11832         COption_PaymentFailureReasonZ(const COption_PaymentFailureReasonZ&) = delete;
11833         COption_PaymentFailureReasonZ(COption_PaymentFailureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentFailureReasonZ)); }
11834         COption_PaymentFailureReasonZ(LDKCOption_PaymentFailureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentFailureReasonZ)); }
11835         operator LDKCOption_PaymentFailureReasonZ() && { LDKCOption_PaymentFailureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentFailureReasonZ)); return res; }
11836         ~COption_PaymentFailureReasonZ() { COption_PaymentFailureReasonZ_free(self); }
11837         COption_PaymentFailureReasonZ& operator=(COption_PaymentFailureReasonZ&& o) { COption_PaymentFailureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentFailureReasonZ)); return *this; }
11838         LDKCOption_PaymentFailureReasonZ* operator &() { return &self; }
11839         LDKCOption_PaymentFailureReasonZ* operator ->() { return &self; }
11840         const LDKCOption_PaymentFailureReasonZ* operator &() const { return &self; }
11841         const LDKCOption_PaymentFailureReasonZ* operator ->() const { return &self; }
11842 };
11843 class CResult_Bolt12RefundContextDecodeErrorZ {
11844 private:
11845         LDKCResult_Bolt12RefundContextDecodeErrorZ self;
11846 public:
11847         CResult_Bolt12RefundContextDecodeErrorZ(const CResult_Bolt12RefundContextDecodeErrorZ&) = delete;
11848         CResult_Bolt12RefundContextDecodeErrorZ(CResult_Bolt12RefundContextDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12RefundContextDecodeErrorZ)); }
11849         CResult_Bolt12RefundContextDecodeErrorZ(LDKCResult_Bolt12RefundContextDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12RefundContextDecodeErrorZ)); }
11850         operator LDKCResult_Bolt12RefundContextDecodeErrorZ() && { LDKCResult_Bolt12RefundContextDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12RefundContextDecodeErrorZ)); return res; }
11851         ~CResult_Bolt12RefundContextDecodeErrorZ() { CResult_Bolt12RefundContextDecodeErrorZ_free(self); }
11852         CResult_Bolt12RefundContextDecodeErrorZ& operator=(CResult_Bolt12RefundContextDecodeErrorZ&& o) { CResult_Bolt12RefundContextDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12RefundContextDecodeErrorZ)); return *this; }
11853         LDKCResult_Bolt12RefundContextDecodeErrorZ* operator &() { return &self; }
11854         LDKCResult_Bolt12RefundContextDecodeErrorZ* operator ->() { return &self; }
11855         const LDKCResult_Bolt12RefundContextDecodeErrorZ* operator &() const { return &self; }
11856         const LDKCResult_Bolt12RefundContextDecodeErrorZ* operator ->() const { return &self; }
11857 };
11858 class CResult_ECDSASignatureNoneZ {
11859 private:
11860         LDKCResult_ECDSASignatureNoneZ self;
11861 public:
11862         CResult_ECDSASignatureNoneZ(const CResult_ECDSASignatureNoneZ&) = delete;
11863         CResult_ECDSASignatureNoneZ(CResult_ECDSASignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ECDSASignatureNoneZ)); }
11864         CResult_ECDSASignatureNoneZ(LDKCResult_ECDSASignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ECDSASignatureNoneZ)); }
11865         operator LDKCResult_ECDSASignatureNoneZ() && { LDKCResult_ECDSASignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ECDSASignatureNoneZ)); return res; }
11866         ~CResult_ECDSASignatureNoneZ() { CResult_ECDSASignatureNoneZ_free(self); }
11867         CResult_ECDSASignatureNoneZ& operator=(CResult_ECDSASignatureNoneZ&& o) { CResult_ECDSASignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ECDSASignatureNoneZ)); return *this; }
11868         LDKCResult_ECDSASignatureNoneZ* operator &() { return &self; }
11869         LDKCResult_ECDSASignatureNoneZ* operator ->() { return &self; }
11870         const LDKCResult_ECDSASignatureNoneZ* operator &() const { return &self; }
11871         const LDKCResult_ECDSASignatureNoneZ* operator ->() const { return &self; }
11872 };
11873 class CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ {
11874 private:
11875         LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ self;
11876 public:
11877         CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ(const CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ&) = delete;
11878         CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ(CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ)); }
11879         CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ(LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ)); }
11880         operator LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ() && { LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ)); return res; }
11881         ~CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ() { CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ_free(self); }
11882         CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ& operator=(CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ&& o) { CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ)); return *this; }
11883         LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ* operator &() { return &self; }
11884         LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ* operator ->() { return &self; }
11885         const LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ* operator &() const { return &self; }
11886         const LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ* operator ->() const { return &self; }
11887 };
11888 class C2Tuple_ChannelIdPublicKeyZ {
11889 private:
11890         LDKC2Tuple_ChannelIdPublicKeyZ self;
11891 public:
11892         C2Tuple_ChannelIdPublicKeyZ(const C2Tuple_ChannelIdPublicKeyZ&) = delete;
11893         C2Tuple_ChannelIdPublicKeyZ(C2Tuple_ChannelIdPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ChannelIdPublicKeyZ)); }
11894         C2Tuple_ChannelIdPublicKeyZ(LDKC2Tuple_ChannelIdPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ChannelIdPublicKeyZ)); }
11895         operator LDKC2Tuple_ChannelIdPublicKeyZ() && { LDKC2Tuple_ChannelIdPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ChannelIdPublicKeyZ)); return res; }
11896         ~C2Tuple_ChannelIdPublicKeyZ() { C2Tuple_ChannelIdPublicKeyZ_free(self); }
11897         C2Tuple_ChannelIdPublicKeyZ& operator=(C2Tuple_ChannelIdPublicKeyZ&& o) { C2Tuple_ChannelIdPublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ChannelIdPublicKeyZ)); return *this; }
11898         LDKC2Tuple_ChannelIdPublicKeyZ* operator &() { return &self; }
11899         LDKC2Tuple_ChannelIdPublicKeyZ* operator ->() { return &self; }
11900         const LDKC2Tuple_ChannelIdPublicKeyZ* operator &() const { return &self; }
11901         const LDKC2Tuple_ChannelIdPublicKeyZ* operator ->() const { return &self; }
11902 };
11903 class CVec_WitnessZ {
11904 private:
11905         LDKCVec_WitnessZ self;
11906 public:
11907         CVec_WitnessZ(const CVec_WitnessZ&) = delete;
11908         CVec_WitnessZ(CVec_WitnessZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_WitnessZ)); }
11909         CVec_WitnessZ(LDKCVec_WitnessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_WitnessZ)); }
11910         operator LDKCVec_WitnessZ() && { LDKCVec_WitnessZ res = self; memset(&self, 0, sizeof(LDKCVec_WitnessZ)); return res; }
11911         ~CVec_WitnessZ() { CVec_WitnessZ_free(self); }
11912         CVec_WitnessZ& operator=(CVec_WitnessZ&& o) { CVec_WitnessZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_WitnessZ)); return *this; }
11913         LDKCVec_WitnessZ* operator &() { return &self; }
11914         LDKCVec_WitnessZ* operator ->() { return &self; }
11915         const LDKCVec_WitnessZ* operator &() const { return &self; }
11916         const LDKCVec_WitnessZ* operator ->() const { return &self; }
11917 };
11918 class CResult_BlindedTailDecodeErrorZ {
11919 private:
11920         LDKCResult_BlindedTailDecodeErrorZ self;
11921 public:
11922         CResult_BlindedTailDecodeErrorZ(const CResult_BlindedTailDecodeErrorZ&) = delete;
11923         CResult_BlindedTailDecodeErrorZ(CResult_BlindedTailDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedTailDecodeErrorZ)); }
11924         CResult_BlindedTailDecodeErrorZ(LDKCResult_BlindedTailDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedTailDecodeErrorZ)); }
11925         operator LDKCResult_BlindedTailDecodeErrorZ() && { LDKCResult_BlindedTailDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedTailDecodeErrorZ)); return res; }
11926         ~CResult_BlindedTailDecodeErrorZ() { CResult_BlindedTailDecodeErrorZ_free(self); }
11927         CResult_BlindedTailDecodeErrorZ& operator=(CResult_BlindedTailDecodeErrorZ&& o) { CResult_BlindedTailDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedTailDecodeErrorZ)); return *this; }
11928         LDKCResult_BlindedTailDecodeErrorZ* operator &() { return &self; }
11929         LDKCResult_BlindedTailDecodeErrorZ* operator ->() { return &self; }
11930         const LDKCResult_BlindedTailDecodeErrorZ* operator &() const { return &self; }
11931         const LDKCResult_BlindedTailDecodeErrorZ* operator ->() const { return &self; }
11932 };
11933 class CResult_SocketAddressSocketAddressParseErrorZ {
11934 private:
11935         LDKCResult_SocketAddressSocketAddressParseErrorZ self;
11936 public:
11937         CResult_SocketAddressSocketAddressParseErrorZ(const CResult_SocketAddressSocketAddressParseErrorZ&) = delete;
11938         CResult_SocketAddressSocketAddressParseErrorZ(CResult_SocketAddressSocketAddressParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SocketAddressSocketAddressParseErrorZ)); }
11939         CResult_SocketAddressSocketAddressParseErrorZ(LDKCResult_SocketAddressSocketAddressParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SocketAddressSocketAddressParseErrorZ)); }
11940         operator LDKCResult_SocketAddressSocketAddressParseErrorZ() && { LDKCResult_SocketAddressSocketAddressParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SocketAddressSocketAddressParseErrorZ)); return res; }
11941         ~CResult_SocketAddressSocketAddressParseErrorZ() { CResult_SocketAddressSocketAddressParseErrorZ_free(self); }
11942         CResult_SocketAddressSocketAddressParseErrorZ& operator=(CResult_SocketAddressSocketAddressParseErrorZ&& o) { CResult_SocketAddressSocketAddressParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SocketAddressSocketAddressParseErrorZ)); return *this; }
11943         LDKCResult_SocketAddressSocketAddressParseErrorZ* operator &() { return &self; }
11944         LDKCResult_SocketAddressSocketAddressParseErrorZ* operator ->() { return &self; }
11945         const LDKCResult_SocketAddressSocketAddressParseErrorZ* operator &() const { return &self; }
11946         const LDKCResult_SocketAddressSocketAddressParseErrorZ* operator ->() const { return &self; }
11947 };
11948 class COption_C2Tuple_u64u16ZZ {
11949 private:
11950         LDKCOption_C2Tuple_u64u16ZZ self;
11951 public:
11952         COption_C2Tuple_u64u16ZZ(const COption_C2Tuple_u64u16ZZ&) = delete;
11953         COption_C2Tuple_u64u16ZZ(COption_C2Tuple_u64u16ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u16ZZ)); }
11954         COption_C2Tuple_u64u16ZZ(LDKCOption_C2Tuple_u64u16ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u16ZZ)); }
11955         operator LDKCOption_C2Tuple_u64u16ZZ() && { LDKCOption_C2Tuple_u64u16ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u16ZZ)); return res; }
11956         ~COption_C2Tuple_u64u16ZZ() { COption_C2Tuple_u64u16ZZ_free(self); }
11957         COption_C2Tuple_u64u16ZZ& operator=(COption_C2Tuple_u64u16ZZ&& o) { COption_C2Tuple_u64u16ZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_C2Tuple_u64u16ZZ)); return *this; }
11958         LDKCOption_C2Tuple_u64u16ZZ* operator &() { return &self; }
11959         LDKCOption_C2Tuple_u64u16ZZ* operator ->() { return &self; }
11960         const LDKCOption_C2Tuple_u64u16ZZ* operator &() const { return &self; }
11961         const LDKCOption_C2Tuple_u64u16ZZ* operator ->() const { return &self; }
11962 };
11963 class CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ {
11964 private:
11965         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ self;
11966 public:
11967         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(const CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&) = delete;
11968         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); }
11969         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); }
11970         operator LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ() && { LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); return res; }
11971         ~CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ() { CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ_free(self); }
11972         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ& operator=(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& o) { CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); return *this; }
11973         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator &() { return &self; }
11974         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator ->() { return &self; }
11975         const LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator &() const { return &self; }
11976         const LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator ->() const { return &self; }
11977 };
11978 class CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ {
11979 private:
11980         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ self;
11981 public:
11982         CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ(const CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ&) = delete;
11983         CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ(CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ)); }
11984         CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ)); }
11985         operator LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ() && { LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ)); return res; }
11986         ~CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ() { CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ_free(self); }
11987         CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ& operator=(CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ&& o) { CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ)); return *this; }
11988         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ* operator &() { return &self; }
11989         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ* operator ->() { return &self; }
11990         const LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ* operator &() const { return &self; }
11991         const LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ* operator ->() const { return &self; }
11992 };
11993 class CResult_ChannelDerivationParametersDecodeErrorZ {
11994 private:
11995         LDKCResult_ChannelDerivationParametersDecodeErrorZ self;
11996 public:
11997         CResult_ChannelDerivationParametersDecodeErrorZ(const CResult_ChannelDerivationParametersDecodeErrorZ&) = delete;
11998         CResult_ChannelDerivationParametersDecodeErrorZ(CResult_ChannelDerivationParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDerivationParametersDecodeErrorZ)); }
11999         CResult_ChannelDerivationParametersDecodeErrorZ(LDKCResult_ChannelDerivationParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDerivationParametersDecodeErrorZ)); }
12000         operator LDKCResult_ChannelDerivationParametersDecodeErrorZ() && { LDKCResult_ChannelDerivationParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDerivationParametersDecodeErrorZ)); return res; }
12001         ~CResult_ChannelDerivationParametersDecodeErrorZ() { CResult_ChannelDerivationParametersDecodeErrorZ_free(self); }
12002         CResult_ChannelDerivationParametersDecodeErrorZ& operator=(CResult_ChannelDerivationParametersDecodeErrorZ&& o) { CResult_ChannelDerivationParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDerivationParametersDecodeErrorZ)); return *this; }
12003         LDKCResult_ChannelDerivationParametersDecodeErrorZ* operator &() { return &self; }
12004         LDKCResult_ChannelDerivationParametersDecodeErrorZ* operator ->() { return &self; }
12005         const LDKCResult_ChannelDerivationParametersDecodeErrorZ* operator &() const { return &self; }
12006         const LDKCResult_ChannelDerivationParametersDecodeErrorZ* operator ->() const { return &self; }
12007 };
12008 class CResult_PaymentConstraintsDecodeErrorZ {
12009 private:
12010         LDKCResult_PaymentConstraintsDecodeErrorZ self;
12011 public:
12012         CResult_PaymentConstraintsDecodeErrorZ(const CResult_PaymentConstraintsDecodeErrorZ&) = delete;
12013         CResult_PaymentConstraintsDecodeErrorZ(CResult_PaymentConstraintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentConstraintsDecodeErrorZ)); }
12014         CResult_PaymentConstraintsDecodeErrorZ(LDKCResult_PaymentConstraintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentConstraintsDecodeErrorZ)); }
12015         operator LDKCResult_PaymentConstraintsDecodeErrorZ() && { LDKCResult_PaymentConstraintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentConstraintsDecodeErrorZ)); return res; }
12016         ~CResult_PaymentConstraintsDecodeErrorZ() { CResult_PaymentConstraintsDecodeErrorZ_free(self); }
12017         CResult_PaymentConstraintsDecodeErrorZ& operator=(CResult_PaymentConstraintsDecodeErrorZ&& o) { CResult_PaymentConstraintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentConstraintsDecodeErrorZ)); return *this; }
12018         LDKCResult_PaymentConstraintsDecodeErrorZ* operator &() { return &self; }
12019         LDKCResult_PaymentConstraintsDecodeErrorZ* operator ->() { return &self; }
12020         const LDKCResult_PaymentConstraintsDecodeErrorZ* operator &() const { return &self; }
12021         const LDKCResult_PaymentConstraintsDecodeErrorZ* operator ->() const { return &self; }
12022 };
12023 class CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ {
12024 private:
12025         LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ self;
12026 public:
12027         CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ(const CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ&) = delete;
12028         CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ(CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ)); }
12029         CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ(LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ)); }
12030         operator LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ() && { LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ)); return res; }
12031         ~CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ() { CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ_free(self); }
12032         CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ& operator=(CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ&& o) { CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ)); return *this; }
12033         LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ* operator &() { return &self; }
12034         LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ* operator ->() { return &self; }
12035         const LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ* operator &() const { return &self; }
12036         const LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ* operator ->() const { return &self; }
12037 };
12038 class CResult_OnionMessagePathNoneZ {
12039 private:
12040         LDKCResult_OnionMessagePathNoneZ self;
12041 public:
12042         CResult_OnionMessagePathNoneZ(const CResult_OnionMessagePathNoneZ&) = delete;
12043         CResult_OnionMessagePathNoneZ(CResult_OnionMessagePathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessagePathNoneZ)); }
12044         CResult_OnionMessagePathNoneZ(LDKCResult_OnionMessagePathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessagePathNoneZ)); }
12045         operator LDKCResult_OnionMessagePathNoneZ() && { LDKCResult_OnionMessagePathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessagePathNoneZ)); return res; }
12046         ~CResult_OnionMessagePathNoneZ() { CResult_OnionMessagePathNoneZ_free(self); }
12047         CResult_OnionMessagePathNoneZ& operator=(CResult_OnionMessagePathNoneZ&& o) { CResult_OnionMessagePathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessagePathNoneZ)); return *this; }
12048         LDKCResult_OnionMessagePathNoneZ* operator &() { return &self; }
12049         LDKCResult_OnionMessagePathNoneZ* operator ->() { return &self; }
12050         const LDKCResult_OnionMessagePathNoneZ* operator &() const { return &self; }
12051         const LDKCResult_OnionMessagePathNoneZ* operator ->() const { return &self; }
12052 };
12053 class C2Tuple_u32CVec_u8ZZ {
12054 private:
12055         LDKC2Tuple_u32CVec_u8ZZ self;
12056 public:
12057         C2Tuple_u32CVec_u8ZZ(const C2Tuple_u32CVec_u8ZZ&) = delete;
12058         C2Tuple_u32CVec_u8ZZ(C2Tuple_u32CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32CVec_u8ZZ)); }
12059         C2Tuple_u32CVec_u8ZZ(LDKC2Tuple_u32CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32CVec_u8ZZ)); }
12060         operator LDKC2Tuple_u32CVec_u8ZZ() && { LDKC2Tuple_u32CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32CVec_u8ZZ)); return res; }
12061         ~C2Tuple_u32CVec_u8ZZ() { C2Tuple_u32CVec_u8ZZ_free(self); }
12062         C2Tuple_u32CVec_u8ZZ& operator=(C2Tuple_u32CVec_u8ZZ&& o) { C2Tuple_u32CVec_u8ZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32CVec_u8ZZ)); return *this; }
12063         LDKC2Tuple_u32CVec_u8ZZ* operator &() { return &self; }
12064         LDKC2Tuple_u32CVec_u8ZZ* operator ->() { return &self; }
12065         const LDKC2Tuple_u32CVec_u8ZZ* operator &() const { return &self; }
12066         const LDKC2Tuple_u32CVec_u8ZZ* operator ->() const { return &self; }
12067 };
12068 class CVec_C2Tuple_PublicKeyTypeZZ {
12069 private:
12070         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
12071 public:
12072         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
12073         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
12074         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
12075         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
12076         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
12077         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; }
12078         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
12079         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
12080         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
12081         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
12082 };
12083 class CResult_OutboundHTLCDetailsDecodeErrorZ {
12084 private:
12085         LDKCResult_OutboundHTLCDetailsDecodeErrorZ self;
12086 public:
12087         CResult_OutboundHTLCDetailsDecodeErrorZ(const CResult_OutboundHTLCDetailsDecodeErrorZ&) = delete;
12088         CResult_OutboundHTLCDetailsDecodeErrorZ(CResult_OutboundHTLCDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutboundHTLCDetailsDecodeErrorZ)); }
12089         CResult_OutboundHTLCDetailsDecodeErrorZ(LDKCResult_OutboundHTLCDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutboundHTLCDetailsDecodeErrorZ)); }
12090         operator LDKCResult_OutboundHTLCDetailsDecodeErrorZ() && { LDKCResult_OutboundHTLCDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutboundHTLCDetailsDecodeErrorZ)); return res; }
12091         ~CResult_OutboundHTLCDetailsDecodeErrorZ() { CResult_OutboundHTLCDetailsDecodeErrorZ_free(self); }
12092         CResult_OutboundHTLCDetailsDecodeErrorZ& operator=(CResult_OutboundHTLCDetailsDecodeErrorZ&& o) { CResult_OutboundHTLCDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutboundHTLCDetailsDecodeErrorZ)); return *this; }
12093         LDKCResult_OutboundHTLCDetailsDecodeErrorZ* operator &() { return &self; }
12094         LDKCResult_OutboundHTLCDetailsDecodeErrorZ* operator ->() { return &self; }
12095         const LDKCResult_OutboundHTLCDetailsDecodeErrorZ* operator &() const { return &self; }
12096         const LDKCResult_OutboundHTLCDetailsDecodeErrorZ* operator ->() const { return &self; }
12097 };
12098 class CResult_RefundBolt12ParseErrorZ {
12099 private:
12100         LDKCResult_RefundBolt12ParseErrorZ self;
12101 public:
12102         CResult_RefundBolt12ParseErrorZ(const CResult_RefundBolt12ParseErrorZ&) = delete;
12103         CResult_RefundBolt12ParseErrorZ(CResult_RefundBolt12ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RefundBolt12ParseErrorZ)); }
12104         CResult_RefundBolt12ParseErrorZ(LDKCResult_RefundBolt12ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RefundBolt12ParseErrorZ)); }
12105         operator LDKCResult_RefundBolt12ParseErrorZ() && { LDKCResult_RefundBolt12ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RefundBolt12ParseErrorZ)); return res; }
12106         ~CResult_RefundBolt12ParseErrorZ() { CResult_RefundBolt12ParseErrorZ_free(self); }
12107         CResult_RefundBolt12ParseErrorZ& operator=(CResult_RefundBolt12ParseErrorZ&& o) { CResult_RefundBolt12ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RefundBolt12ParseErrorZ)); return *this; }
12108         LDKCResult_RefundBolt12ParseErrorZ* operator &() { return &self; }
12109         LDKCResult_RefundBolt12ParseErrorZ* operator ->() { return &self; }
12110         const LDKCResult_RefundBolt12ParseErrorZ* operator &() const { return &self; }
12111         const LDKCResult_RefundBolt12ParseErrorZ* operator ->() const { return &self; }
12112 };
12113 class CResult_u32GraphSyncErrorZ {
12114 private:
12115         LDKCResult_u32GraphSyncErrorZ self;
12116 public:
12117         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
12118         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
12119         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
12120         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
12121         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
12122         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
12123         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
12124         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
12125         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
12126         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
12127 };
12128 class CVec_C2Tuple_u64CVec_u8ZZZ {
12129 private:
12130         LDKCVec_C2Tuple_u64CVec_u8ZZZ self;
12131 public:
12132         CVec_C2Tuple_u64CVec_u8ZZZ(const CVec_C2Tuple_u64CVec_u8ZZZ&) = delete;
12133         CVec_C2Tuple_u64CVec_u8ZZZ(CVec_C2Tuple_u64CVec_u8ZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u64CVec_u8ZZZ)); }
12134         CVec_C2Tuple_u64CVec_u8ZZZ(LDKCVec_C2Tuple_u64CVec_u8ZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u64CVec_u8ZZZ)); }
12135         operator LDKCVec_C2Tuple_u64CVec_u8ZZZ() && { LDKCVec_C2Tuple_u64CVec_u8ZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u64CVec_u8ZZZ)); return res; }
12136         ~CVec_C2Tuple_u64CVec_u8ZZZ() { CVec_C2Tuple_u64CVec_u8ZZZ_free(self); }
12137         CVec_C2Tuple_u64CVec_u8ZZZ& operator=(CVec_C2Tuple_u64CVec_u8ZZZ&& o) { CVec_C2Tuple_u64CVec_u8ZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_u64CVec_u8ZZZ)); return *this; }
12138         LDKCVec_C2Tuple_u64CVec_u8ZZZ* operator &() { return &self; }
12139         LDKCVec_C2Tuple_u64CVec_u8ZZZ* operator ->() { return &self; }
12140         const LDKCVec_C2Tuple_u64CVec_u8ZZZ* operator &() const { return &self; }
12141         const LDKCVec_C2Tuple_u64CVec_u8ZZZ* operator ->() const { return &self; }
12142 };
12143 class CVec_PhantomRouteHintsZ {
12144 private:
12145         LDKCVec_PhantomRouteHintsZ self;
12146 public:
12147         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
12148         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
12149         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
12150         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
12151         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
12152         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
12153         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
12154         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
12155         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
12156         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
12157 };
12158 class CResult_OffersMessageDecodeErrorZ {
12159 private:
12160         LDKCResult_OffersMessageDecodeErrorZ self;
12161 public:
12162         CResult_OffersMessageDecodeErrorZ(const CResult_OffersMessageDecodeErrorZ&) = delete;
12163         CResult_OffersMessageDecodeErrorZ(CResult_OffersMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OffersMessageDecodeErrorZ)); }
12164         CResult_OffersMessageDecodeErrorZ(LDKCResult_OffersMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OffersMessageDecodeErrorZ)); }
12165         operator LDKCResult_OffersMessageDecodeErrorZ() && { LDKCResult_OffersMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OffersMessageDecodeErrorZ)); return res; }
12166         ~CResult_OffersMessageDecodeErrorZ() { CResult_OffersMessageDecodeErrorZ_free(self); }
12167         CResult_OffersMessageDecodeErrorZ& operator=(CResult_OffersMessageDecodeErrorZ&& o) { CResult_OffersMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OffersMessageDecodeErrorZ)); return *this; }
12168         LDKCResult_OffersMessageDecodeErrorZ* operator &() { return &self; }
12169         LDKCResult_OffersMessageDecodeErrorZ* operator ->() { return &self; }
12170         const LDKCResult_OffersMessageDecodeErrorZ* operator &() const { return &self; }
12171         const LDKCResult_OffersMessageDecodeErrorZ* operator ->() const { return &self; }
12172 };
12173 class CResult_NoneAPIErrorZ {
12174 private:
12175         LDKCResult_NoneAPIErrorZ self;
12176 public:
12177         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
12178         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
12179         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
12180         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
12181         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
12182         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
12183         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
12184         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
12185         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
12186         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
12187 };
12188 class CResult_Bolt12InvoiceFeaturesDecodeErrorZ {
12189 private:
12190         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ self;
12191 public:
12192         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(const CResult_Bolt12InvoiceFeaturesDecodeErrorZ&) = delete;
12193         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(CResult_Bolt12InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12InvoiceFeaturesDecodeErrorZ)); }
12194         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ)); }
12195         operator LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ() && { LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ)); return res; }
12196         ~CResult_Bolt12InvoiceFeaturesDecodeErrorZ() { CResult_Bolt12InvoiceFeaturesDecodeErrorZ_free(self); }
12197         CResult_Bolt12InvoiceFeaturesDecodeErrorZ& operator=(CResult_Bolt12InvoiceFeaturesDecodeErrorZ&& o) { CResult_Bolt12InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12InvoiceFeaturesDecodeErrorZ)); return *this; }
12198         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
12199         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
12200         const LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
12201         const LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
12202 };
12203 class COption_f64Z {
12204 private:
12205         LDKCOption_f64Z self;
12206 public:
12207         COption_f64Z(const COption_f64Z&) = delete;
12208         COption_f64Z(COption_f64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_f64Z)); }
12209         COption_f64Z(LDKCOption_f64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_f64Z)); }
12210         operator LDKCOption_f64Z() && { LDKCOption_f64Z res = self; memset(&self, 0, sizeof(LDKCOption_f64Z)); return res; }
12211         ~COption_f64Z() { COption_f64Z_free(self); }
12212         COption_f64Z& operator=(COption_f64Z&& o) { COption_f64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_f64Z)); return *this; }
12213         LDKCOption_f64Z* operator &() { return &self; }
12214         LDKCOption_f64Z* operator ->() { return &self; }
12215         const LDKCOption_f64Z* operator &() const { return &self; }
12216         const LDKCOption_f64Z* operator ->() const { return &self; }
12217 };
12218 class CResult_TxRemoveInputDecodeErrorZ {
12219 private:
12220         LDKCResult_TxRemoveInputDecodeErrorZ self;
12221 public:
12222         CResult_TxRemoveInputDecodeErrorZ(const CResult_TxRemoveInputDecodeErrorZ&) = delete;
12223         CResult_TxRemoveInputDecodeErrorZ(CResult_TxRemoveInputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxRemoveInputDecodeErrorZ)); }
12224         CResult_TxRemoveInputDecodeErrorZ(LDKCResult_TxRemoveInputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxRemoveInputDecodeErrorZ)); }
12225         operator LDKCResult_TxRemoveInputDecodeErrorZ() && { LDKCResult_TxRemoveInputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxRemoveInputDecodeErrorZ)); return res; }
12226         ~CResult_TxRemoveInputDecodeErrorZ() { CResult_TxRemoveInputDecodeErrorZ_free(self); }
12227         CResult_TxRemoveInputDecodeErrorZ& operator=(CResult_TxRemoveInputDecodeErrorZ&& o) { CResult_TxRemoveInputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxRemoveInputDecodeErrorZ)); return *this; }
12228         LDKCResult_TxRemoveInputDecodeErrorZ* operator &() { return &self; }
12229         LDKCResult_TxRemoveInputDecodeErrorZ* operator ->() { return &self; }
12230         const LDKCResult_TxRemoveInputDecodeErrorZ* operator &() const { return &self; }
12231         const LDKCResult_TxRemoveInputDecodeErrorZ* operator ->() const { return &self; }
12232 };
12233 class CVec_PublicKeyZ {
12234 private:
12235         LDKCVec_PublicKeyZ self;
12236 public:
12237         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
12238         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
12239         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
12240         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
12241         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
12242         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
12243         LDKCVec_PublicKeyZ* operator &() { return &self; }
12244         LDKCVec_PublicKeyZ* operator ->() { return &self; }
12245         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
12246         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
12247 };
12248 class C2Tuple_CVec_u8Zu64Z {
12249 private:
12250         LDKC2Tuple_CVec_u8Zu64Z self;
12251 public:
12252         C2Tuple_CVec_u8Zu64Z(const C2Tuple_CVec_u8Zu64Z&) = delete;
12253         C2Tuple_CVec_u8Zu64Z(C2Tuple_CVec_u8Zu64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_CVec_u8Zu64Z)); }
12254         C2Tuple_CVec_u8Zu64Z(LDKC2Tuple_CVec_u8Zu64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_CVec_u8Zu64Z)); }
12255         operator LDKC2Tuple_CVec_u8Zu64Z() && { LDKC2Tuple_CVec_u8Zu64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_CVec_u8Zu64Z)); return res; }
12256         ~C2Tuple_CVec_u8Zu64Z() { C2Tuple_CVec_u8Zu64Z_free(self); }
12257         C2Tuple_CVec_u8Zu64Z& operator=(C2Tuple_CVec_u8Zu64Z&& o) { C2Tuple_CVec_u8Zu64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_CVec_u8Zu64Z)); return *this; }
12258         LDKC2Tuple_CVec_u8Zu64Z* operator &() { return &self; }
12259         LDKC2Tuple_CVec_u8Zu64Z* operator ->() { return &self; }
12260         const LDKC2Tuple_CVec_u8Zu64Z* operator &() const { return &self; }
12261         const LDKC2Tuple_CVec_u8Zu64Z* operator ->() const { return &self; }
12262 };
12263 class CVec_C2Tuple_usizeTransactionZZ {
12264 private:
12265         LDKCVec_C2Tuple_usizeTransactionZZ self;
12266 public:
12267         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
12268         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
12269         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
12270         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
12271         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
12272         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; }
12273         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
12274         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
12275         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
12276         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
12277 };
12278 class CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ {
12279 private:
12280         LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ self;
12281 public:
12282         CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ(const CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ&) = delete;
12283         CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ(CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ)); }
12284         CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ(LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ)); }
12285         operator LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ() && { LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ)); return res; }
12286         ~CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ() { CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ_free(self); }
12287         CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ& operator=(CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ&& o) { CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ)); return *this; }
12288         LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ* operator &() { return &self; }
12289         LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ* operator ->() { return &self; }
12290         const LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ* operator &() const { return &self; }
12291         const LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ* operator ->() const { return &self; }
12292 };
12293 class CResult_PendingHTLCRoutingDecodeErrorZ {
12294 private:
12295         LDKCResult_PendingHTLCRoutingDecodeErrorZ self;
12296 public:
12297         CResult_PendingHTLCRoutingDecodeErrorZ(const CResult_PendingHTLCRoutingDecodeErrorZ&) = delete;
12298         CResult_PendingHTLCRoutingDecodeErrorZ(CResult_PendingHTLCRoutingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PendingHTLCRoutingDecodeErrorZ)); }
12299         CResult_PendingHTLCRoutingDecodeErrorZ(LDKCResult_PendingHTLCRoutingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PendingHTLCRoutingDecodeErrorZ)); }
12300         operator LDKCResult_PendingHTLCRoutingDecodeErrorZ() && { LDKCResult_PendingHTLCRoutingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PendingHTLCRoutingDecodeErrorZ)); return res; }
12301         ~CResult_PendingHTLCRoutingDecodeErrorZ() { CResult_PendingHTLCRoutingDecodeErrorZ_free(self); }
12302         CResult_PendingHTLCRoutingDecodeErrorZ& operator=(CResult_PendingHTLCRoutingDecodeErrorZ&& o) { CResult_PendingHTLCRoutingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PendingHTLCRoutingDecodeErrorZ)); return *this; }
12303         LDKCResult_PendingHTLCRoutingDecodeErrorZ* operator &() { return &self; }
12304         LDKCResult_PendingHTLCRoutingDecodeErrorZ* operator ->() { return &self; }
12305         const LDKCResult_PendingHTLCRoutingDecodeErrorZ* operator &() const { return &self; }
12306         const LDKCResult_PendingHTLCRoutingDecodeErrorZ* operator ->() const { return &self; }
12307 };
12308 class C2Tuple_u64u64Z {
12309 private:
12310         LDKC2Tuple_u64u64Z self;
12311 public:
12312         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
12313         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
12314         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
12315         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
12316         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
12317         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
12318         LDKC2Tuple_u64u64Z* operator &() { return &self; }
12319         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
12320         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
12321         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
12322 };
12323 class CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ {
12324 private:
12325         LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ self;
12326 public:
12327         CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ(const CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ&) = delete;
12328         CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ(CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ)); }
12329         CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ(LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ)); }
12330         operator LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ() && { LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ)); return res; }
12331         ~CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ() { CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ_free(self); }
12332         CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ& operator=(CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ&& o) { CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ)); return *this; }
12333         LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ* operator &() { return &self; }
12334         LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
12335         const LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
12336         const LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
12337 };
12338 class CResult_ChannelDetailsDecodeErrorZ {
12339 private:
12340         LDKCResult_ChannelDetailsDecodeErrorZ self;
12341 public:
12342         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
12343         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
12344         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
12345         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
12346         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
12347         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
12348         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
12349         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
12350         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
12351         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
12352 };
12353 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
12354 private:
12355         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
12356 public:
12357         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
12358         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
12359         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
12360         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
12361         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
12362         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
12363         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
12364         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
12365         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
12366         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
12367 };
12368 class CResult_RecipientOnionFieldsDecodeErrorZ {
12369 private:
12370         LDKCResult_RecipientOnionFieldsDecodeErrorZ self;
12371 public:
12372         CResult_RecipientOnionFieldsDecodeErrorZ(const CResult_RecipientOnionFieldsDecodeErrorZ&) = delete;
12373         CResult_RecipientOnionFieldsDecodeErrorZ(CResult_RecipientOnionFieldsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecipientOnionFieldsDecodeErrorZ)); }
12374         CResult_RecipientOnionFieldsDecodeErrorZ(LDKCResult_RecipientOnionFieldsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecipientOnionFieldsDecodeErrorZ)); }
12375         operator LDKCResult_RecipientOnionFieldsDecodeErrorZ() && { LDKCResult_RecipientOnionFieldsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RecipientOnionFieldsDecodeErrorZ)); return res; }
12376         ~CResult_RecipientOnionFieldsDecodeErrorZ() { CResult_RecipientOnionFieldsDecodeErrorZ_free(self); }
12377         CResult_RecipientOnionFieldsDecodeErrorZ& operator=(CResult_RecipientOnionFieldsDecodeErrorZ&& o) { CResult_RecipientOnionFieldsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecipientOnionFieldsDecodeErrorZ)); return *this; }
12378         LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator &() { return &self; }
12379         LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator ->() { return &self; }
12380         const LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator &() const { return &self; }
12381         const LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator ->() const { return &self; }
12382 };
12383 class C2Tuple_u32TxOutZ {
12384 private:
12385         LDKC2Tuple_u32TxOutZ self;
12386 public:
12387         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
12388         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
12389         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
12390         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
12391         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
12392         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
12393         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
12394         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
12395         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
12396         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
12397 };
12398 class CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ {
12399 private:
12400         LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ self;
12401 public:
12402         CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ(const CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ&) = delete;
12403         CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ(CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ)); }
12404         CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ(LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ)); }
12405         operator LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ() && { LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ)); return res; }
12406         ~CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ() { CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ_free(self); }
12407         CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ& operator=(CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ&& o) { CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ)); return *this; }
12408         LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ* operator &() { return &self; }
12409         LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
12410         const LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
12411         const LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
12412 };
12413 class CResult_PaymentContextDecodeErrorZ {
12414 private:
12415         LDKCResult_PaymentContextDecodeErrorZ self;
12416 public:
12417         CResult_PaymentContextDecodeErrorZ(const CResult_PaymentContextDecodeErrorZ&) = delete;
12418         CResult_PaymentContextDecodeErrorZ(CResult_PaymentContextDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentContextDecodeErrorZ)); }
12419         CResult_PaymentContextDecodeErrorZ(LDKCResult_PaymentContextDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentContextDecodeErrorZ)); }
12420         operator LDKCResult_PaymentContextDecodeErrorZ() && { LDKCResult_PaymentContextDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentContextDecodeErrorZ)); return res; }
12421         ~CResult_PaymentContextDecodeErrorZ() { CResult_PaymentContextDecodeErrorZ_free(self); }
12422         CResult_PaymentContextDecodeErrorZ& operator=(CResult_PaymentContextDecodeErrorZ&& o) { CResult_PaymentContextDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentContextDecodeErrorZ)); return *this; }
12423         LDKCResult_PaymentContextDecodeErrorZ* operator &() { return &self; }
12424         LDKCResult_PaymentContextDecodeErrorZ* operator ->() { return &self; }
12425         const LDKCResult_PaymentContextDecodeErrorZ* operator &() const { return &self; }
12426         const LDKCResult_PaymentContextDecodeErrorZ* operator ->() const { return &self; }
12427 };
12428 class CVec_UtxoZ {
12429 private:
12430         LDKCVec_UtxoZ self;
12431 public:
12432         CVec_UtxoZ(const CVec_UtxoZ&) = delete;
12433         CVec_UtxoZ(CVec_UtxoZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UtxoZ)); }
12434         CVec_UtxoZ(LDKCVec_UtxoZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UtxoZ)); }
12435         operator LDKCVec_UtxoZ() && { LDKCVec_UtxoZ res = self; memset(&self, 0, sizeof(LDKCVec_UtxoZ)); return res; }
12436         ~CVec_UtxoZ() { CVec_UtxoZ_free(self); }
12437         CVec_UtxoZ& operator=(CVec_UtxoZ&& o) { CVec_UtxoZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UtxoZ)); return *this; }
12438         LDKCVec_UtxoZ* operator &() { return &self; }
12439         LDKCVec_UtxoZ* operator ->() { return &self; }
12440         const LDKCVec_UtxoZ* operator &() const { return &self; }
12441         const LDKCVec_UtxoZ* operator ->() const { return &self; }
12442 };
12443 class CResult_ChannelConfigDecodeErrorZ {
12444 private:
12445         LDKCResult_ChannelConfigDecodeErrorZ self;
12446 public:
12447         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
12448         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
12449         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
12450         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
12451         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
12452         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
12453         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
12454         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
12455         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
12456         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
12457 };
12458 class CVec_PrivateRouteZ {
12459 private:
12460         LDKCVec_PrivateRouteZ self;
12461 public:
12462         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
12463         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
12464         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
12465         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
12466         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
12467         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
12468         LDKCVec_PrivateRouteZ* operator &() { return &self; }
12469         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
12470         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
12471         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
12472 };
12473 class COption_i64Z {
12474 private:
12475         LDKCOption_i64Z self;
12476 public:
12477         COption_i64Z(const COption_i64Z&) = delete;
12478         COption_i64Z(COption_i64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_i64Z)); }
12479         COption_i64Z(LDKCOption_i64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_i64Z)); }
12480         operator LDKCOption_i64Z() && { LDKCOption_i64Z res = self; memset(&self, 0, sizeof(LDKCOption_i64Z)); return res; }
12481         ~COption_i64Z() { COption_i64Z_free(self); }
12482         COption_i64Z& operator=(COption_i64Z&& o) { COption_i64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_i64Z)); return *this; }
12483         LDKCOption_i64Z* operator &() { return &self; }
12484         LDKCOption_i64Z* operator ->() { return &self; }
12485         const LDKCOption_i64Z* operator &() const { return &self; }
12486         const LDKCOption_i64Z* operator ->() const { return &self; }
12487 };
12488 class C2Tuple_ThirtyTwoBytesChannelManagerZ {
12489 private:
12490         LDKC2Tuple_ThirtyTwoBytesChannelManagerZ self;
12491 public:
12492         C2Tuple_ThirtyTwoBytesChannelManagerZ(const C2Tuple_ThirtyTwoBytesChannelManagerZ&) = delete;
12493         C2Tuple_ThirtyTwoBytesChannelManagerZ(C2Tuple_ThirtyTwoBytesChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesChannelManagerZ)); }
12494         C2Tuple_ThirtyTwoBytesChannelManagerZ(LDKC2Tuple_ThirtyTwoBytesChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesChannelManagerZ)); }
12495         operator LDKC2Tuple_ThirtyTwoBytesChannelManagerZ() && { LDKC2Tuple_ThirtyTwoBytesChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesChannelManagerZ)); return res; }
12496         ~C2Tuple_ThirtyTwoBytesChannelManagerZ() { C2Tuple_ThirtyTwoBytesChannelManagerZ_free(self); }
12497         C2Tuple_ThirtyTwoBytesChannelManagerZ& operator=(C2Tuple_ThirtyTwoBytesChannelManagerZ&& o) { C2Tuple_ThirtyTwoBytesChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesChannelManagerZ)); return *this; }
12498         LDKC2Tuple_ThirtyTwoBytesChannelManagerZ* operator &() { return &self; }
12499         LDKC2Tuple_ThirtyTwoBytesChannelManagerZ* operator ->() { return &self; }
12500         const LDKC2Tuple_ThirtyTwoBytesChannelManagerZ* operator &() const { return &self; }
12501         const LDKC2Tuple_ThirtyTwoBytesChannelManagerZ* operator ->() const { return &self; }
12502 };
12503 class CResult_COption_OnionMessageContentsZDecodeErrorZ {
12504 private:
12505         LDKCResult_COption_OnionMessageContentsZDecodeErrorZ self;
12506 public:
12507         CResult_COption_OnionMessageContentsZDecodeErrorZ(const CResult_COption_OnionMessageContentsZDecodeErrorZ&) = delete;
12508         CResult_COption_OnionMessageContentsZDecodeErrorZ(CResult_COption_OnionMessageContentsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_OnionMessageContentsZDecodeErrorZ)); }
12509         CResult_COption_OnionMessageContentsZDecodeErrorZ(LDKCResult_COption_OnionMessageContentsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_OnionMessageContentsZDecodeErrorZ)); }
12510         operator LDKCResult_COption_OnionMessageContentsZDecodeErrorZ() && { LDKCResult_COption_OnionMessageContentsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_OnionMessageContentsZDecodeErrorZ)); return res; }
12511         ~CResult_COption_OnionMessageContentsZDecodeErrorZ() { CResult_COption_OnionMessageContentsZDecodeErrorZ_free(self); }
12512         CResult_COption_OnionMessageContentsZDecodeErrorZ& operator=(CResult_COption_OnionMessageContentsZDecodeErrorZ&& o) { CResult_COption_OnionMessageContentsZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_OnionMessageContentsZDecodeErrorZ)); return *this; }
12513         LDKCResult_COption_OnionMessageContentsZDecodeErrorZ* operator &() { return &self; }
12514         LDKCResult_COption_OnionMessageContentsZDecodeErrorZ* operator ->() { return &self; }
12515         const LDKCResult_COption_OnionMessageContentsZDecodeErrorZ* operator &() const { return &self; }
12516         const LDKCResult_COption_OnionMessageContentsZDecodeErrorZ* operator ->() const { return &self; }
12517 };
12518 class C2Tuple_u64CVec_u8ZZ {
12519 private:
12520         LDKC2Tuple_u64CVec_u8ZZ self;
12521 public:
12522         C2Tuple_u64CVec_u8ZZ(const C2Tuple_u64CVec_u8ZZ&) = delete;
12523         C2Tuple_u64CVec_u8ZZ(C2Tuple_u64CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64CVec_u8ZZ)); }
12524         C2Tuple_u64CVec_u8ZZ(LDKC2Tuple_u64CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64CVec_u8ZZ)); }
12525         operator LDKC2Tuple_u64CVec_u8ZZ() && { LDKC2Tuple_u64CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64CVec_u8ZZ)); return res; }
12526         ~C2Tuple_u64CVec_u8ZZ() { C2Tuple_u64CVec_u8ZZ_free(self); }
12527         C2Tuple_u64CVec_u8ZZ& operator=(C2Tuple_u64CVec_u8ZZ&& o) { C2Tuple_u64CVec_u8ZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64CVec_u8ZZ)); return *this; }
12528         LDKC2Tuple_u64CVec_u8ZZ* operator &() { return &self; }
12529         LDKC2Tuple_u64CVec_u8ZZ* operator ->() { return &self; }
12530         const LDKC2Tuple_u64CVec_u8ZZ* operator &() const { return &self; }
12531         const LDKC2Tuple_u64CVec_u8ZZ* operator ->() const { return &self; }
12532 };
12533 class CResult_OfferBolt12ParseErrorZ {
12534 private:
12535         LDKCResult_OfferBolt12ParseErrorZ self;
12536 public:
12537         CResult_OfferBolt12ParseErrorZ(const CResult_OfferBolt12ParseErrorZ&) = delete;
12538         CResult_OfferBolt12ParseErrorZ(CResult_OfferBolt12ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OfferBolt12ParseErrorZ)); }
12539         CResult_OfferBolt12ParseErrorZ(LDKCResult_OfferBolt12ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OfferBolt12ParseErrorZ)); }
12540         operator LDKCResult_OfferBolt12ParseErrorZ() && { LDKCResult_OfferBolt12ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OfferBolt12ParseErrorZ)); return res; }
12541         ~CResult_OfferBolt12ParseErrorZ() { CResult_OfferBolt12ParseErrorZ_free(self); }
12542         CResult_OfferBolt12ParseErrorZ& operator=(CResult_OfferBolt12ParseErrorZ&& o) { CResult_OfferBolt12ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OfferBolt12ParseErrorZ)); return *this; }
12543         LDKCResult_OfferBolt12ParseErrorZ* operator &() { return &self; }
12544         LDKCResult_OfferBolt12ParseErrorZ* operator ->() { return &self; }
12545         const LDKCResult_OfferBolt12ParseErrorZ* operator &() const { return &self; }
12546         const LDKCResult_OfferBolt12ParseErrorZ* operator ->() const { return &self; }
12547 };
12548 class CResult_ThirtyTwoBytesRetryableSendFailureZ {
12549 private:
12550         LDKCResult_ThirtyTwoBytesRetryableSendFailureZ self;
12551 public:
12552         CResult_ThirtyTwoBytesRetryableSendFailureZ(const CResult_ThirtyTwoBytesRetryableSendFailureZ&) = delete;
12553         CResult_ThirtyTwoBytesRetryableSendFailureZ(CResult_ThirtyTwoBytesRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ThirtyTwoBytesRetryableSendFailureZ)); }
12554         CResult_ThirtyTwoBytesRetryableSendFailureZ(LDKCResult_ThirtyTwoBytesRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ThirtyTwoBytesRetryableSendFailureZ)); }
12555         operator LDKCResult_ThirtyTwoBytesRetryableSendFailureZ() && { LDKCResult_ThirtyTwoBytesRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_ThirtyTwoBytesRetryableSendFailureZ)); return res; }
12556         ~CResult_ThirtyTwoBytesRetryableSendFailureZ() { CResult_ThirtyTwoBytesRetryableSendFailureZ_free(self); }
12557         CResult_ThirtyTwoBytesRetryableSendFailureZ& operator=(CResult_ThirtyTwoBytesRetryableSendFailureZ&& o) { CResult_ThirtyTwoBytesRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ThirtyTwoBytesRetryableSendFailureZ)); return *this; }
12558         LDKCResult_ThirtyTwoBytesRetryableSendFailureZ* operator &() { return &self; }
12559         LDKCResult_ThirtyTwoBytesRetryableSendFailureZ* operator ->() { return &self; }
12560         const LDKCResult_ThirtyTwoBytesRetryableSendFailureZ* operator &() const { return &self; }
12561         const LDKCResult_ThirtyTwoBytesRetryableSendFailureZ* operator ->() const { return &self; }
12562 };
12563 class CVec_MonitorEventZ {
12564 private:
12565         LDKCVec_MonitorEventZ self;
12566 public:
12567         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
12568         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
12569         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
12570         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
12571         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
12572         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
12573         LDKCVec_MonitorEventZ* operator &() { return &self; }
12574         LDKCVec_MonitorEventZ* operator ->() { return &self; }
12575         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
12576         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
12577 };
12578 class CResult_ShutdownDecodeErrorZ {
12579 private:
12580         LDKCResult_ShutdownDecodeErrorZ self;
12581 public:
12582         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
12583         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
12584         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
12585         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
12586         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
12587         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
12588         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
12589         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
12590         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
12591         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
12592 };
12593 class CResult_BigSizeDecodeErrorZ {
12594 private:
12595         LDKCResult_BigSizeDecodeErrorZ self;
12596 public:
12597         CResult_BigSizeDecodeErrorZ(const CResult_BigSizeDecodeErrorZ&) = delete;
12598         CResult_BigSizeDecodeErrorZ(CResult_BigSizeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BigSizeDecodeErrorZ)); }
12599         CResult_BigSizeDecodeErrorZ(LDKCResult_BigSizeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BigSizeDecodeErrorZ)); }
12600         operator LDKCResult_BigSizeDecodeErrorZ() && { LDKCResult_BigSizeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BigSizeDecodeErrorZ)); return res; }
12601         ~CResult_BigSizeDecodeErrorZ() { CResult_BigSizeDecodeErrorZ_free(self); }
12602         CResult_BigSizeDecodeErrorZ& operator=(CResult_BigSizeDecodeErrorZ&& o) { CResult_BigSizeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BigSizeDecodeErrorZ)); return *this; }
12603         LDKCResult_BigSizeDecodeErrorZ* operator &() { return &self; }
12604         LDKCResult_BigSizeDecodeErrorZ* operator ->() { return &self; }
12605         const LDKCResult_BigSizeDecodeErrorZ* operator &() const { return &self; }
12606         const LDKCResult_BigSizeDecodeErrorZ* operator ->() const { return &self; }
12607 };
12608 class CResult_TxOutUtxoLookupErrorZ {
12609 private:
12610         LDKCResult_TxOutUtxoLookupErrorZ self;
12611 public:
12612         CResult_TxOutUtxoLookupErrorZ(const CResult_TxOutUtxoLookupErrorZ&) = delete;
12613         CResult_TxOutUtxoLookupErrorZ(CResult_TxOutUtxoLookupErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); }
12614         CResult_TxOutUtxoLookupErrorZ(LDKCResult_TxOutUtxoLookupErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); }
12615         operator LDKCResult_TxOutUtxoLookupErrorZ() && { LDKCResult_TxOutUtxoLookupErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); return res; }
12616         ~CResult_TxOutUtxoLookupErrorZ() { CResult_TxOutUtxoLookupErrorZ_free(self); }
12617         CResult_TxOutUtxoLookupErrorZ& operator=(CResult_TxOutUtxoLookupErrorZ&& o) { CResult_TxOutUtxoLookupErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); return *this; }
12618         LDKCResult_TxOutUtxoLookupErrorZ* operator &() { return &self; }
12619         LDKCResult_TxOutUtxoLookupErrorZ* operator ->() { return &self; }
12620         const LDKCResult_TxOutUtxoLookupErrorZ* operator &() const { return &self; }
12621         const LDKCResult_TxOutUtxoLookupErrorZ* operator ->() const { return &self; }
12622 };
12623 class CResult_BlindedPathNoneZ {
12624 private:
12625         LDKCResult_BlindedPathNoneZ self;
12626 public:
12627         CResult_BlindedPathNoneZ(const CResult_BlindedPathNoneZ&) = delete;
12628         CResult_BlindedPathNoneZ(CResult_BlindedPathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); }
12629         CResult_BlindedPathNoneZ(LDKCResult_BlindedPathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); }
12630         operator LDKCResult_BlindedPathNoneZ() && { LDKCResult_BlindedPathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); return res; }
12631         ~CResult_BlindedPathNoneZ() { CResult_BlindedPathNoneZ_free(self); }
12632         CResult_BlindedPathNoneZ& operator=(CResult_BlindedPathNoneZ&& o) { CResult_BlindedPathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); return *this; }
12633         LDKCResult_BlindedPathNoneZ* operator &() { return &self; }
12634         LDKCResult_BlindedPathNoneZ* operator ->() { return &self; }
12635         const LDKCResult_BlindedPathNoneZ* operator &() const { return &self; }
12636         const LDKCResult_BlindedPathNoneZ* operator ->() const { return &self; }
12637 };
12638 class COption_usizeZ {
12639 private:
12640         LDKCOption_usizeZ self;
12641 public:
12642         COption_usizeZ(const COption_usizeZ&) = delete;
12643         COption_usizeZ(COption_usizeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_usizeZ)); }
12644         COption_usizeZ(LDKCOption_usizeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_usizeZ)); }
12645         operator LDKCOption_usizeZ() && { LDKCOption_usizeZ res = self; memset(&self, 0, sizeof(LDKCOption_usizeZ)); return res; }
12646         ~COption_usizeZ() { COption_usizeZ_free(self); }
12647         COption_usizeZ& operator=(COption_usizeZ&& o) { COption_usizeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_usizeZ)); return *this; }
12648         LDKCOption_usizeZ* operator &() { return &self; }
12649         LDKCOption_usizeZ* operator ->() { return &self; }
12650         const LDKCOption_usizeZ* operator &() const { return &self; }
12651         const LDKCOption_usizeZ* operator ->() const { return &self; }
12652 };
12653 class CResult_NoneNoneZ {
12654 private:
12655         LDKCResult_NoneNoneZ self;
12656 public:
12657         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
12658         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
12659         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
12660         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
12661         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
12662         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
12663         LDKCResult_NoneNoneZ* operator &() { return &self; }
12664         LDKCResult_NoneNoneZ* operator ->() { return &self; }
12665         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
12666         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
12667 };
12668 class CResult_boolPeerHandleErrorZ {
12669 private:
12670         LDKCResult_boolPeerHandleErrorZ self;
12671 public:
12672         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
12673         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
12674         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
12675         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
12676         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
12677         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
12678         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
12679         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
12680         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
12681         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
12682 };
12683 class CResult_ChannelUpdateDecodeErrorZ {
12684 private:
12685         LDKCResult_ChannelUpdateDecodeErrorZ self;
12686 public:
12687         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
12688         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
12689         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
12690         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
12691         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
12692         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
12693         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
12694         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
12695         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
12696         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
12697 };
12698 class CVec_APIErrorZ {
12699 private:
12700         LDKCVec_APIErrorZ self;
12701 public:
12702         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
12703         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
12704         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
12705         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
12706         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
12707         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
12708         LDKCVec_APIErrorZ* operator &() { return &self; }
12709         LDKCVec_APIErrorZ* operator ->() { return &self; }
12710         const LDKCVec_APIErrorZ* operator &() const { return &self; }
12711         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
12712 };
12713 class COption_TxOutZ {
12714 private:
12715         LDKCOption_TxOutZ self;
12716 public:
12717         COption_TxOutZ(const COption_TxOutZ&) = delete;
12718         COption_TxOutZ(COption_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TxOutZ)); }
12719         COption_TxOutZ(LDKCOption_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TxOutZ)); }
12720         operator LDKCOption_TxOutZ() && { LDKCOption_TxOutZ res = self; memset(&self, 0, sizeof(LDKCOption_TxOutZ)); return res; }
12721         ~COption_TxOutZ() { COption_TxOutZ_free(self); }
12722         COption_TxOutZ& operator=(COption_TxOutZ&& o) { COption_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TxOutZ)); return *this; }
12723         LDKCOption_TxOutZ* operator &() { return &self; }
12724         LDKCOption_TxOutZ* operator ->() { return &self; }
12725         const LDKCOption_TxOutZ* operator &() const { return &self; }
12726         const LDKCOption_TxOutZ* operator ->() const { return &self; }
12727 };
12728 class COption_ClosureReasonZ {
12729 private:
12730         LDKCOption_ClosureReasonZ self;
12731 public:
12732         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
12733         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
12734         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
12735         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
12736         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
12737         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
12738         LDKCOption_ClosureReasonZ* operator &() { return &self; }
12739         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
12740         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
12741         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
12742 };
12743 class CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ {
12744 private:
12745         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ self;
12746 public:
12747         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ(const CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ&) = delete;
12748         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ)); }
12749         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ)); }
12750         operator LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ)); return res; }
12751         ~CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ() { CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ_free(self); }
12752         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ& operator=(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ&& o) { CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ)); return *this; }
12753         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ* operator &() { return &self; }
12754         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ* operator ->() { return &self; }
12755         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ* operator &() const { return &self; }
12756         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ* operator ->() const { return &self; }
12757 };
12758 class CResult_TransactionU16LenLimitedDecodeErrorZ {
12759 private:
12760         LDKCResult_TransactionU16LenLimitedDecodeErrorZ self;
12761 public:
12762         CResult_TransactionU16LenLimitedDecodeErrorZ(const CResult_TransactionU16LenLimitedDecodeErrorZ&) = delete;
12763         CResult_TransactionU16LenLimitedDecodeErrorZ(CResult_TransactionU16LenLimitedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedDecodeErrorZ)); }
12764         CResult_TransactionU16LenLimitedDecodeErrorZ(LDKCResult_TransactionU16LenLimitedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionU16LenLimitedDecodeErrorZ)); }
12765         operator LDKCResult_TransactionU16LenLimitedDecodeErrorZ() && { LDKCResult_TransactionU16LenLimitedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionU16LenLimitedDecodeErrorZ)); return res; }
12766         ~CResult_TransactionU16LenLimitedDecodeErrorZ() { CResult_TransactionU16LenLimitedDecodeErrorZ_free(self); }
12767         CResult_TransactionU16LenLimitedDecodeErrorZ& operator=(CResult_TransactionU16LenLimitedDecodeErrorZ&& o) { CResult_TransactionU16LenLimitedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedDecodeErrorZ)); return *this; }
12768         LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator &() { return &self; }
12769         LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator ->() { return &self; }
12770         const LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator &() const { return &self; }
12771         const LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator ->() const { return &self; }
12772 };
12773 class COption_AmountZ {
12774 private:
12775         LDKCOption_AmountZ self;
12776 public:
12777         COption_AmountZ(const COption_AmountZ&) = delete;
12778         COption_AmountZ(COption_AmountZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AmountZ)); }
12779         COption_AmountZ(LDKCOption_AmountZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AmountZ)); }
12780         operator LDKCOption_AmountZ() && { LDKCOption_AmountZ res = self; memset(&self, 0, sizeof(LDKCOption_AmountZ)); return res; }
12781         ~COption_AmountZ() { COption_AmountZ_free(self); }
12782         COption_AmountZ& operator=(COption_AmountZ&& o) { COption_AmountZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AmountZ)); return *this; }
12783         LDKCOption_AmountZ* operator &() { return &self; }
12784         LDKCOption_AmountZ* operator ->() { return &self; }
12785         const LDKCOption_AmountZ* operator &() const { return &self; }
12786         const LDKCOption_AmountZ* operator ->() const { return &self; }
12787 };
12788 class CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ {
12789 private:
12790         LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ self;
12791 public:
12792         CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ(const CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ&) = delete;
12793         CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ(CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ)); }
12794         CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ(LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ)); }
12795         operator LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ() && { LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ)); return res; }
12796         ~CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ() { CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ_free(self); }
12797         CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ& operator=(CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ&& o) { CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ)); return *this; }
12798         LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ* operator &() { return &self; }
12799         LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ* operator ->() { return &self; }
12800         const LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ* operator &() const { return &self; }
12801         const LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ* operator ->() const { return &self; }
12802 };
12803 class CResult_OpenChannelV2DecodeErrorZ {
12804 private:
12805         LDKCResult_OpenChannelV2DecodeErrorZ self;
12806 public:
12807         CResult_OpenChannelV2DecodeErrorZ(const CResult_OpenChannelV2DecodeErrorZ&) = delete;
12808         CResult_OpenChannelV2DecodeErrorZ(CResult_OpenChannelV2DecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelV2DecodeErrorZ)); }
12809         CResult_OpenChannelV2DecodeErrorZ(LDKCResult_OpenChannelV2DecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelV2DecodeErrorZ)); }
12810         operator LDKCResult_OpenChannelV2DecodeErrorZ() && { LDKCResult_OpenChannelV2DecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelV2DecodeErrorZ)); return res; }
12811         ~CResult_OpenChannelV2DecodeErrorZ() { CResult_OpenChannelV2DecodeErrorZ_free(self); }
12812         CResult_OpenChannelV2DecodeErrorZ& operator=(CResult_OpenChannelV2DecodeErrorZ&& o) { CResult_OpenChannelV2DecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelV2DecodeErrorZ)); return *this; }
12813         LDKCResult_OpenChannelV2DecodeErrorZ* operator &() { return &self; }
12814         LDKCResult_OpenChannelV2DecodeErrorZ* operator ->() { return &self; }
12815         const LDKCResult_OpenChannelV2DecodeErrorZ* operator &() const { return &self; }
12816         const LDKCResult_OpenChannelV2DecodeErrorZ* operator ->() const { return &self; }
12817 };
12818 class CResult_BestBlockDecodeErrorZ {
12819 private:
12820         LDKCResult_BestBlockDecodeErrorZ self;
12821 public:
12822         CResult_BestBlockDecodeErrorZ(const CResult_BestBlockDecodeErrorZ&) = delete;
12823         CResult_BestBlockDecodeErrorZ(CResult_BestBlockDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BestBlockDecodeErrorZ)); }
12824         CResult_BestBlockDecodeErrorZ(LDKCResult_BestBlockDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BestBlockDecodeErrorZ)); }
12825         operator LDKCResult_BestBlockDecodeErrorZ() && { LDKCResult_BestBlockDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BestBlockDecodeErrorZ)); return res; }
12826         ~CResult_BestBlockDecodeErrorZ() { CResult_BestBlockDecodeErrorZ_free(self); }
12827         CResult_BestBlockDecodeErrorZ& operator=(CResult_BestBlockDecodeErrorZ&& o) { CResult_BestBlockDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BestBlockDecodeErrorZ)); return *this; }
12828         LDKCResult_BestBlockDecodeErrorZ* operator &() { return &self; }
12829         LDKCResult_BestBlockDecodeErrorZ* operator ->() { return &self; }
12830         const LDKCResult_BestBlockDecodeErrorZ* operator &() const { return &self; }
12831         const LDKCResult_BestBlockDecodeErrorZ* operator ->() const { return &self; }
12832 };
12833 class CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ {
12834 private:
12835         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ self;
12836 public:
12837         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ(const CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ&) = delete;
12838         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ)); }
12839         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ)); }
12840         operator LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ)); return res; }
12841         ~CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ() { CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ_free(self); }
12842         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ& operator=(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ&& o) { CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ)); return *this; }
12843         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ* operator &() { return &self; }
12844         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ* operator ->() { return &self; }
12845         const LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ* operator &() const { return &self; }
12846         const LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ* operator ->() const { return &self; }
12847 };
12848 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
12849 private:
12850         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
12851 public:
12852         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
12853         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
12854         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
12855         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
12856         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
12857         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
12858         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
12859         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
12860         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
12861         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
12862 };
12863 class CResult_OutputSpendStatusDecodeErrorZ {
12864 private:
12865         LDKCResult_OutputSpendStatusDecodeErrorZ self;
12866 public:
12867         CResult_OutputSpendStatusDecodeErrorZ(const CResult_OutputSpendStatusDecodeErrorZ&) = delete;
12868         CResult_OutputSpendStatusDecodeErrorZ(CResult_OutputSpendStatusDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutputSpendStatusDecodeErrorZ)); }
12869         CResult_OutputSpendStatusDecodeErrorZ(LDKCResult_OutputSpendStatusDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutputSpendStatusDecodeErrorZ)); }
12870         operator LDKCResult_OutputSpendStatusDecodeErrorZ() && { LDKCResult_OutputSpendStatusDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutputSpendStatusDecodeErrorZ)); return res; }
12871         ~CResult_OutputSpendStatusDecodeErrorZ() { CResult_OutputSpendStatusDecodeErrorZ_free(self); }
12872         CResult_OutputSpendStatusDecodeErrorZ& operator=(CResult_OutputSpendStatusDecodeErrorZ&& o) { CResult_OutputSpendStatusDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutputSpendStatusDecodeErrorZ)); return *this; }
12873         LDKCResult_OutputSpendStatusDecodeErrorZ* operator &() { return &self; }
12874         LDKCResult_OutputSpendStatusDecodeErrorZ* operator ->() { return &self; }
12875         const LDKCResult_OutputSpendStatusDecodeErrorZ* operator &() const { return &self; }
12876         const LDKCResult_OutputSpendStatusDecodeErrorZ* operator ->() const { return &self; }
12877 };
12878 class C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ {
12879 private:
12880         LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ self;
12881 public:
12882         C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ(const C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ&) = delete;
12883         C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ(C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ)); }
12884         C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ(LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ)); }
12885         operator LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ() && { LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ)); return res; }
12886         ~C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ() { C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ_free(self); }
12887         C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ& operator=(C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ&& o) { C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ)); return *this; }
12888         LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ* operator &() { return &self; }
12889         LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ* operator ->() { return &self; }
12890         const LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ* operator &() const { return &self; }
12891         const LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ* operator ->() const { return &self; }
12892 };
12893 class CResult_RouteDecodeErrorZ {
12894 private:
12895         LDKCResult_RouteDecodeErrorZ self;
12896 public:
12897         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
12898         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
12899         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
12900         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
12901         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
12902         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
12903         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
12904         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
12905         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
12906         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
12907 };
12908 class CResult_BlindedFailureDecodeErrorZ {
12909 private:
12910         LDKCResult_BlindedFailureDecodeErrorZ self;
12911 public:
12912         CResult_BlindedFailureDecodeErrorZ(const CResult_BlindedFailureDecodeErrorZ&) = delete;
12913         CResult_BlindedFailureDecodeErrorZ(CResult_BlindedFailureDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedFailureDecodeErrorZ)); }
12914         CResult_BlindedFailureDecodeErrorZ(LDKCResult_BlindedFailureDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedFailureDecodeErrorZ)); }
12915         operator LDKCResult_BlindedFailureDecodeErrorZ() && { LDKCResult_BlindedFailureDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedFailureDecodeErrorZ)); return res; }
12916         ~CResult_BlindedFailureDecodeErrorZ() { CResult_BlindedFailureDecodeErrorZ_free(self); }
12917         CResult_BlindedFailureDecodeErrorZ& operator=(CResult_BlindedFailureDecodeErrorZ&& o) { CResult_BlindedFailureDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedFailureDecodeErrorZ)); return *this; }
12918         LDKCResult_BlindedFailureDecodeErrorZ* operator &() { return &self; }
12919         LDKCResult_BlindedFailureDecodeErrorZ* operator ->() { return &self; }
12920         const LDKCResult_BlindedFailureDecodeErrorZ* operator &() const { return &self; }
12921         const LDKCResult_BlindedFailureDecodeErrorZ* operator ->() const { return &self; }
12922 };
12923 class CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ {
12924 private:
12925         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ self;
12926 public:
12927         CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ(const CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ&) = delete;
12928         CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ(CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ)); }
12929         CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ)); }
12930         operator LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ() && { LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ)); return res; }
12931         ~CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ() { CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ_free(self); }
12932         CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ& operator=(CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ&& o) { CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ)); return *this; }
12933         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ* operator &() { return &self; }
12934         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ* operator ->() { return &self; }
12935         const LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ* operator &() const { return &self; }
12936         const LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ* operator ->() const { return &self; }
12937 };
12938 class COption_NoneZ {
12939 private:
12940         LDKCOption_NoneZ self;
12941 public:
12942         COption_NoneZ(const COption_NoneZ&) = delete;
12943         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
12944         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
12945         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
12946         ~COption_NoneZ() { COption_NoneZ_free(self); }
12947         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
12948         LDKCOption_NoneZ* operator &() { return &self; }
12949         LDKCOption_NoneZ* operator ->() { return &self; }
12950         const LDKCOption_NoneZ* operator &() const { return &self; }
12951         const LDKCOption_NoneZ* operator ->() const { return &self; }
12952 };
12953 class CResult_SpliceLockedDecodeErrorZ {
12954 private:
12955         LDKCResult_SpliceLockedDecodeErrorZ self;
12956 public:
12957         CResult_SpliceLockedDecodeErrorZ(const CResult_SpliceLockedDecodeErrorZ&) = delete;
12958         CResult_SpliceLockedDecodeErrorZ(CResult_SpliceLockedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpliceLockedDecodeErrorZ)); }
12959         CResult_SpliceLockedDecodeErrorZ(LDKCResult_SpliceLockedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpliceLockedDecodeErrorZ)); }
12960         operator LDKCResult_SpliceLockedDecodeErrorZ() && { LDKCResult_SpliceLockedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpliceLockedDecodeErrorZ)); return res; }
12961         ~CResult_SpliceLockedDecodeErrorZ() { CResult_SpliceLockedDecodeErrorZ_free(self); }
12962         CResult_SpliceLockedDecodeErrorZ& operator=(CResult_SpliceLockedDecodeErrorZ&& o) { CResult_SpliceLockedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpliceLockedDecodeErrorZ)); return *this; }
12963         LDKCResult_SpliceLockedDecodeErrorZ* operator &() { return &self; }
12964         LDKCResult_SpliceLockedDecodeErrorZ* operator ->() { return &self; }
12965         const LDKCResult_SpliceLockedDecodeErrorZ* operator &() const { return &self; }
12966         const LDKCResult_SpliceLockedDecodeErrorZ* operator ->() const { return &self; }
12967 };
12968 class COption_CVec_u8ZZ {
12969 private:
12970         LDKCOption_CVec_u8ZZ self;
12971 public:
12972         COption_CVec_u8ZZ(const COption_CVec_u8ZZ&) = delete;
12973         COption_CVec_u8ZZ(COption_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_u8ZZ)); }
12974         COption_CVec_u8ZZ(LDKCOption_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_u8ZZ)); }
12975         operator LDKCOption_CVec_u8ZZ() && { LDKCOption_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_u8ZZ)); return res; }
12976         ~COption_CVec_u8ZZ() { COption_CVec_u8ZZ_free(self); }
12977         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; }
12978         LDKCOption_CVec_u8ZZ* operator &() { return &self; }
12979         LDKCOption_CVec_u8ZZ* operator ->() { return &self; }
12980         const LDKCOption_CVec_u8ZZ* operator &() const { return &self; }
12981         const LDKCOption_CVec_u8ZZ* operator ->() const { return &self; }
12982 };
12983 class COption_QuantityZ {
12984 private:
12985         LDKCOption_QuantityZ self;
12986 public:
12987         COption_QuantityZ(const COption_QuantityZ&) = delete;
12988         COption_QuantityZ(COption_QuantityZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_QuantityZ)); }
12989         COption_QuantityZ(LDKCOption_QuantityZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_QuantityZ)); }
12990         operator LDKCOption_QuantityZ() && { LDKCOption_QuantityZ res = self; memset(&self, 0, sizeof(LDKCOption_QuantityZ)); return res; }
12991         ~COption_QuantityZ() { COption_QuantityZ_free(self); }
12992         COption_QuantityZ& operator=(COption_QuantityZ&& o) { COption_QuantityZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_QuantityZ)); return *this; }
12993         LDKCOption_QuantityZ* operator &() { return &self; }
12994         LDKCOption_QuantityZ* operator ->() { return &self; }
12995         const LDKCOption_QuantityZ* operator &() const { return &self; }
12996         const LDKCOption_QuantityZ* operator ->() const { return &self; }
12997 };
12998 class CResult_TxAddOutputDecodeErrorZ {
12999 private:
13000         LDKCResult_TxAddOutputDecodeErrorZ self;
13001 public:
13002         CResult_TxAddOutputDecodeErrorZ(const CResult_TxAddOutputDecodeErrorZ&) = delete;
13003         CResult_TxAddOutputDecodeErrorZ(CResult_TxAddOutputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAddOutputDecodeErrorZ)); }
13004         CResult_TxAddOutputDecodeErrorZ(LDKCResult_TxAddOutputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAddOutputDecodeErrorZ)); }
13005         operator LDKCResult_TxAddOutputDecodeErrorZ() && { LDKCResult_TxAddOutputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAddOutputDecodeErrorZ)); return res; }
13006         ~CResult_TxAddOutputDecodeErrorZ() { CResult_TxAddOutputDecodeErrorZ_free(self); }
13007         CResult_TxAddOutputDecodeErrorZ& operator=(CResult_TxAddOutputDecodeErrorZ&& o) { CResult_TxAddOutputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAddOutputDecodeErrorZ)); return *this; }
13008         LDKCResult_TxAddOutputDecodeErrorZ* operator &() { return &self; }
13009         LDKCResult_TxAddOutputDecodeErrorZ* operator ->() { return &self; }
13010         const LDKCResult_TxAddOutputDecodeErrorZ* operator &() const { return &self; }
13011         const LDKCResult_TxAddOutputDecodeErrorZ* operator ->() const { return &self; }
13012 };
13013 class CResult_HtlcBasepointDecodeErrorZ {
13014 private:
13015         LDKCResult_HtlcBasepointDecodeErrorZ self;
13016 public:
13017         CResult_HtlcBasepointDecodeErrorZ(const CResult_HtlcBasepointDecodeErrorZ&) = delete;
13018         CResult_HtlcBasepointDecodeErrorZ(CResult_HtlcBasepointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HtlcBasepointDecodeErrorZ)); }
13019         CResult_HtlcBasepointDecodeErrorZ(LDKCResult_HtlcBasepointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HtlcBasepointDecodeErrorZ)); }
13020         operator LDKCResult_HtlcBasepointDecodeErrorZ() && { LDKCResult_HtlcBasepointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HtlcBasepointDecodeErrorZ)); return res; }
13021         ~CResult_HtlcBasepointDecodeErrorZ() { CResult_HtlcBasepointDecodeErrorZ_free(self); }
13022         CResult_HtlcBasepointDecodeErrorZ& operator=(CResult_HtlcBasepointDecodeErrorZ&& o) { CResult_HtlcBasepointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HtlcBasepointDecodeErrorZ)); return *this; }
13023         LDKCResult_HtlcBasepointDecodeErrorZ* operator &() { return &self; }
13024         LDKCResult_HtlcBasepointDecodeErrorZ* operator ->() { return &self; }
13025         const LDKCResult_HtlcBasepointDecodeErrorZ* operator &() const { return &self; }
13026         const LDKCResult_HtlcBasepointDecodeErrorZ* operator ->() const { return &self; }
13027 };
13028 class C2Tuple_OutPointChannelIdZ {
13029 private:
13030         LDKC2Tuple_OutPointChannelIdZ self;
13031 public:
13032         C2Tuple_OutPointChannelIdZ(const C2Tuple_OutPointChannelIdZ&) = delete;
13033         C2Tuple_OutPointChannelIdZ(C2Tuple_OutPointChannelIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointChannelIdZ)); }
13034         C2Tuple_OutPointChannelIdZ(LDKC2Tuple_OutPointChannelIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointChannelIdZ)); }
13035         operator LDKC2Tuple_OutPointChannelIdZ() && { LDKC2Tuple_OutPointChannelIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointChannelIdZ)); return res; }
13036         ~C2Tuple_OutPointChannelIdZ() { C2Tuple_OutPointChannelIdZ_free(self); }
13037         C2Tuple_OutPointChannelIdZ& operator=(C2Tuple_OutPointChannelIdZ&& o) { C2Tuple_OutPointChannelIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointChannelIdZ)); return *this; }
13038         LDKC2Tuple_OutPointChannelIdZ* operator &() { return &self; }
13039         LDKC2Tuple_OutPointChannelIdZ* operator ->() { return &self; }
13040         const LDKC2Tuple_OutPointChannelIdZ* operator &() const { return &self; }
13041         const LDKC2Tuple_OutPointChannelIdZ* operator ->() const { return &self; }
13042 };
13043
13044 inline LDK::CResult_SchnorrSignatureNoneZ SignBolt12InvoiceFn::sign_invoice(const struct LDKUnsignedBolt12Invoice *NONNULL_PTR message) {
13045         LDK::CResult_SchnorrSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, message);
13046         return ret;
13047 }
13048 inline LDKPublicKey ChannelSigner::get_per_commitment_point(uint64_t idx) {
13049         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
13050         return ret;
13051 }
13052 inline LDKThirtyTwoBytes ChannelSigner::release_commitment_secret(uint64_t idx) {
13053         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
13054         return ret;
13055 }
13056 inline LDK::CResult_NoneNoneZ ChannelSigner::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_ThirtyTwoBytesZ outbound_htlc_preimages) {
13057         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, outbound_htlc_preimages);
13058         return ret;
13059 }
13060 inline LDK::CResult_NoneNoneZ ChannelSigner::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
13061         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
13062         return ret;
13063 }
13064 inline LDKThirtyTwoBytes ChannelSigner::channel_keys_id() {
13065         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
13066         return ret;
13067 }
13068 inline void ChannelSigner::provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
13069         (self.provide_channel_parameters)(self.this_arg, channel_parameters);
13070 }
13071 inline LDKThirtyTwoBytes EntropySource::get_secure_random_bytes() {
13072         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
13073         return ret;
13074 }
13075 inline LDKThirtyTwoBytes NodeSigner::get_inbound_payment_key_material() {
13076         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
13077         return ret;
13078 }
13079 inline LDK::CResult_PublicKeyNoneZ NodeSigner::get_node_id(enum LDKRecipient recipient) {
13080         LDK::CResult_PublicKeyNoneZ ret = (self.get_node_id)(self.this_arg, recipient);
13081         return ret;
13082 }
13083 inline LDK::CResult_ThirtyTwoBytesNoneZ NodeSigner::ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_BigEndianScalarZ tweak) {
13084         LDK::CResult_ThirtyTwoBytesNoneZ ret = (self.ecdh)(self.this_arg, recipient, other_key, tweak);
13085         return ret;
13086 }
13087 inline LDK::CResult_RecoverableSignatureNoneZ NodeSigner::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient) {
13088         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, recipient);
13089         return ret;
13090 }
13091 inline LDK::CResult_SchnorrSignatureNoneZ NodeSigner::sign_bolt12_invoice_request(const struct LDKUnsignedInvoiceRequest *NONNULL_PTR invoice_request) {
13092         LDK::CResult_SchnorrSignatureNoneZ ret = (self.sign_bolt12_invoice_request)(self.this_arg, invoice_request);
13093         return ret;
13094 }
13095 inline LDK::CResult_SchnorrSignatureNoneZ NodeSigner::sign_bolt12_invoice(const struct LDKUnsignedBolt12Invoice *NONNULL_PTR invoice) {
13096         LDK::CResult_SchnorrSignatureNoneZ ret = (self.sign_bolt12_invoice)(self.this_arg, invoice);
13097         return ret;
13098 }
13099 inline LDK::CResult_ECDSASignatureNoneZ NodeSigner::sign_gossip_message(struct LDKUnsignedGossipMessage msg) {
13100         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_gossip_message)(self.this_arg, msg);
13101         return ret;
13102 }
13103 inline LDK::CResult_TransactionNoneZ OutputSpender::spend_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ descriptors, struct LDKCVec_TxOutZ outputs, struct LDKCVec_u8Z change_destination_script, uint32_t feerate_sat_per_1000_weight, struct LDKCOption_u32Z locktime) {
13104         LDK::CResult_TransactionNoneZ ret = (self.spend_spendable_outputs)(self.this_arg, descriptors, outputs, change_destination_script, feerate_sat_per_1000_weight, locktime);
13105         return ret;
13106 }
13107 inline LDKThirtyTwoBytes SignerProvider::generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id) {
13108         LDKThirtyTwoBytes ret = (self.generate_channel_keys_id)(self.this_arg, inbound, channel_value_satoshis, user_channel_id);
13109         return ret;
13110 }
13111 inline LDK::WriteableEcdsaChannelSigner SignerProvider::derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id) {
13112         LDK::WriteableEcdsaChannelSigner ret = (self.derive_channel_signer)(self.this_arg, channel_value_satoshis, channel_keys_id);
13113         return ret;
13114 }
13115 inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ SignerProvider::read_chan_signer(struct LDKu8slice reader) {
13116         LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
13117         return ret;
13118 }
13119 inline LDK::CResult_CVec_u8ZNoneZ SignerProvider::get_destination_script(struct LDKThirtyTwoBytes channel_keys_id) {
13120         LDK::CResult_CVec_u8ZNoneZ ret = (self.get_destination_script)(self.this_arg, channel_keys_id);
13121         return ret;
13122 }
13123 inline LDK::CResult_ShutdownScriptNoneZ SignerProvider::get_shutdown_scriptpubkey() {
13124         LDK::CResult_ShutdownScriptNoneZ ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
13125         return ret;
13126 }
13127 inline LDK::CResult_CVec_u8ZNoneZ ChangeDestinationSource::get_change_destination_script() {
13128         LDK::CResult_CVec_u8ZNoneZ ret = (self.get_change_destination_script)(self.this_arg);
13129         return ret;
13130 }
13131 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) {
13132         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, first_hops, inflight_htlcs);
13133         return ret;
13134 }
13135 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) {
13136         LDK::CResult_RouteLightningErrorZ ret = (self.find_route_with_id)(self.this_arg, payer, route_params, first_hops, inflight_htlcs, _payment_hash, _payment_id);
13137         return ret;
13138 }
13139 inline LDK::CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ Router::create_blinded_payment_paths(struct LDKPublicKey recipient, struct LDKCVec_ChannelDetailsZ first_hops, struct LDKReceiveTlvs tlvs, uint64_t amount_msats) {
13140         LDK::CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ ret = (self.create_blinded_payment_paths)(self.this_arg, recipient, first_hops, tlvs, amount_msats);
13141         return ret;
13142 }
13143 inline uint64_t ScoreLookUp::channel_penalty_msat(const struct LDKCandidateRouteHop *NONNULL_PTR candidate, struct LDKChannelUsage usage, const struct LDKProbabilisticScoringFeeParameters *NONNULL_PTR score_params) {
13144         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, candidate, usage, score_params);
13145         return ret;
13146 }
13147 inline void ScoreUpdate::payment_path_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id, uint64_t duration_since_epoch) {
13148         (self.payment_path_failed)(self.this_arg, path, short_channel_id, duration_since_epoch);
13149 }
13150 inline void ScoreUpdate::payment_path_successful(const struct LDKPath *NONNULL_PTR path, uint64_t duration_since_epoch) {
13151         (self.payment_path_successful)(self.this_arg, path, duration_since_epoch);
13152 }
13153 inline void ScoreUpdate::probe_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id, uint64_t duration_since_epoch) {
13154         (self.probe_failed)(self.this_arg, path, short_channel_id, duration_since_epoch);
13155 }
13156 inline void ScoreUpdate::probe_successful(const struct LDKPath *NONNULL_PTR path, uint64_t duration_since_epoch) {
13157         (self.probe_successful)(self.this_arg, path, duration_since_epoch);
13158 }
13159 inline void ScoreUpdate::time_passed(uint64_t duration_since_epoch) {
13160         (self.time_passed)(self.this_arg, duration_since_epoch);
13161 }
13162 inline LDK::ScoreLookUp LockableScore::read_lock() {
13163         LDK::ScoreLookUp ret = (self.read_lock)(self.this_arg);
13164         return ret;
13165 }
13166 inline LDK::ScoreUpdate LockableScore::write_lock() {
13167         LDK::ScoreUpdate ret = (self.write_lock)(self.this_arg);
13168         return ret;
13169 }
13170 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
13171         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
13172 }
13173 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
13174         (self.block_connected)(self.this_arg, block, height);
13175 }
13176 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
13177         (self.block_disconnected)(self.this_arg, header, height);
13178 }
13179 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
13180         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
13181 }
13182 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
13183         (self.transaction_unconfirmed)(self.this_arg, txid);
13184 }
13185 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
13186         (self.best_block_updated)(self.this_arg, header, height);
13187 }
13188 inline LDK::CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ Confirm::get_relevant_txids() {
13189         LDK::CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ ret = (self.get_relevant_txids)(self.this_arg);
13190         return ret;
13191 }
13192 inline LDK::CResult_ChannelMonitorUpdateStatusNoneZ Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
13193         LDK::CResult_ChannelMonitorUpdateStatusNoneZ ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
13194         return ret;
13195 }
13196 inline LDK::ChannelMonitorUpdateStatus Watch::update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update) {
13197         LDK::ChannelMonitorUpdateStatus ret = (self.update_channel)(self.this_arg, funding_txo, update);
13198         return ret;
13199 }
13200 inline LDK::CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ Watch::release_pending_monitor_events() {
13201         LDK::CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ ret = (self.release_pending_monitor_events)(self.this_arg);
13202         return ret;
13203 }
13204 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
13205         (self.register_tx)(self.this_arg, txid, script_pubkey);
13206 }
13207 inline void Filter::register_output(struct LDKWatchedOutput output) {
13208         (self.register_output)(self.this_arg, output);
13209 }
13210 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) {
13211         LDK::CResult_CoinSelectionNoneZ ret = (self.select_confirmed_utxos)(self.this_arg, claim_id, must_spend, must_pay_to, target_feerate_sat_per_1000_weight);
13212         return ret;
13213 }
13214 inline LDK::CResult_TransactionNoneZ CoinSelectionSource::sign_psbt(struct LDKCVec_u8Z psbt) {
13215         LDK::CResult_TransactionNoneZ ret = (self.sign_psbt)(self.this_arg, psbt);
13216         return ret;
13217 }
13218 inline LDK::CResult_CVec_UtxoZNoneZ WalletSource::list_confirmed_utxos() {
13219         LDK::CResult_CVec_UtxoZNoneZ ret = (self.list_confirmed_utxos)(self.this_arg);
13220         return ret;
13221 }
13222 inline LDK::CResult_CVec_u8ZNoneZ WalletSource::get_change_script() {
13223         LDK::CResult_CVec_u8ZNoneZ ret = (self.get_change_script)(self.this_arg);
13224         return ret;
13225 }
13226 inline LDK::CResult_TransactionNoneZ WalletSource::sign_psbt(struct LDKCVec_u8Z psbt) {
13227         LDK::CResult_TransactionNoneZ ret = (self.sign_psbt)(self.this_arg, psbt);
13228         return ret;
13229 }
13230 inline LDK::CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ EcdsaChannelSigner::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_ThirtyTwoBytesZ inbound_htlc_preimages, struct LDKCVec_ThirtyTwoBytesZ outbound_htlc_preimages) {
13231         LDK::CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, inbound_htlc_preimages, outbound_htlc_preimages);
13232         return ret;
13233 }
13234 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
13235         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_holder_commitment)(self.this_arg, commitment_tx);
13236         return ret;
13237 }
13238 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_justice_revoked_output(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]) {
13239         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
13240         return ret;
13241 }
13242 inline LDK::CResult_ECDSASignatureNoneZ 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) {
13243         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
13244         return ret;
13245 }
13246 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_holder_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, const struct LDKHTLCDescriptor *NONNULL_PTR htlc_descriptor) {
13247         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_holder_htlc_transaction)(self.this_arg, htlc_tx, input, htlc_descriptor);
13248         return ret;
13249 }
13250 inline LDK::CResult_ECDSASignatureNoneZ 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) {
13251         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
13252         return ret;
13253 }
13254 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
13255         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
13256         return ret;
13257 }
13258 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input) {
13259         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_holder_anchor_input)(self.this_arg, anchor_tx, input);
13260         return ret;
13261 }
13262 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
13263         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_channel_announcement_with_funding_key)(self.this_arg, msg);
13264         return ret;
13265 }
13266 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
13267         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
13268         return ret;
13269 }
13270 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
13271         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
13272         return ret;
13273 }
13274 inline LDK::NodeFeatures CustomMessageHandler::provided_node_features() {
13275         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
13276         return ret;
13277 }
13278 inline LDK::InitFeatures CustomMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
13279         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
13280         return ret;
13281 }
13282 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
13283         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
13284         return ret;
13285 }
13286 inline void SocketDescriptor::disconnect_socket() {
13287         (self.disconnect_socket)(self.this_arg);
13288 }
13289 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
13290         bool ret = (self.eq)(self.this_arg, other_arg);
13291         return ret;
13292 }
13293 inline uint64_t SocketDescriptor::hash() {
13294         uint64_t ret = (self.hash)(self.this_arg);
13295         return ret;
13296 }
13297 inline LDK::CResult_CVec_u8ZIOErrorZ KVStore::read(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key) {
13298         LDK::CResult_CVec_u8ZIOErrorZ ret = (self.read)(self.this_arg, primary_namespace, secondary_namespace, key);
13299         return ret;
13300 }
13301 inline LDK::CResult_NoneIOErrorZ KVStore::write(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key, struct LDKu8slice buf) {
13302         LDK::CResult_NoneIOErrorZ ret = (self.write)(self.this_arg, primary_namespace, secondary_namespace, key, buf);
13303         return ret;
13304 }
13305 inline LDK::CResult_NoneIOErrorZ KVStore::remove(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key, bool lazy) {
13306         LDK::CResult_NoneIOErrorZ ret = (self.remove)(self.this_arg, primary_namespace, secondary_namespace, key, lazy);
13307         return ret;
13308 }
13309 inline LDK::CResult_CVec_StrZIOErrorZ KVStore::list(struct LDKStr primary_namespace, struct LDKStr secondary_namespace) {
13310         LDK::CResult_CVec_StrZIOErrorZ ret = (self.list)(self.this_arg, primary_namespace, secondary_namespace);
13311         return ret;
13312 }
13313 inline LDK::CResult_NoneIOErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
13314         LDK::CResult_NoneIOErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
13315         return ret;
13316 }
13317 inline LDK::CResult_NoneIOErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
13318         LDK::CResult_NoneIOErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
13319         return ret;
13320 }
13321 inline LDK::CResult_NoneIOErrorZ Persister::persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer) {
13322         LDK::CResult_NoneIOErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
13323         return ret;
13324 }
13325 inline LDK::CResult_SchnorrSignatureNoneZ SignInvoiceRequestFn::sign_invoice_request(const struct LDKUnsignedInvoiceRequest *NONNULL_PTR message) {
13326         LDK::CResult_SchnorrSignatureNoneZ ret = (self.sign_invoice_request)(self.this_arg, message);
13327         return ret;
13328 }
13329 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg) {
13330         (self.handle_open_channel)(self.this_arg, their_node_id, msg);
13331 }
13332 inline void ChannelMessageHandler::handle_open_channel_v2(struct LDKPublicKey their_node_id, const struct LDKOpenChannelV2 *NONNULL_PTR msg) {
13333         (self.handle_open_channel_v2)(self.this_arg, their_node_id, msg);
13334 }
13335 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg) {
13336         (self.handle_accept_channel)(self.this_arg, their_node_id, msg);
13337 }
13338 inline void ChannelMessageHandler::handle_accept_channel_v2(struct LDKPublicKey their_node_id, const struct LDKAcceptChannelV2 *NONNULL_PTR msg) {
13339         (self.handle_accept_channel_v2)(self.this_arg, their_node_id, msg);
13340 }
13341 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
13342         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
13343 }
13344 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
13345         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
13346 }
13347 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
13348         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
13349 }
13350 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg) {
13351         (self.handle_shutdown)(self.this_arg, their_node_id, msg);
13352 }
13353 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
13354         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
13355 }
13356 inline void ChannelMessageHandler::handle_stfu(struct LDKPublicKey their_node_id, const struct LDKStfu *NONNULL_PTR msg) {
13357         (self.handle_stfu)(self.this_arg, their_node_id, msg);
13358 }
13359 inline void ChannelMessageHandler::handle_tx_add_input(struct LDKPublicKey their_node_id, const struct LDKTxAddInput *NONNULL_PTR msg) {
13360         (self.handle_tx_add_input)(self.this_arg, their_node_id, msg);
13361 }
13362 inline void ChannelMessageHandler::handle_tx_add_output(struct LDKPublicKey their_node_id, const struct LDKTxAddOutput *NONNULL_PTR msg) {
13363         (self.handle_tx_add_output)(self.this_arg, their_node_id, msg);
13364 }
13365 inline void ChannelMessageHandler::handle_tx_remove_input(struct LDKPublicKey their_node_id, const struct LDKTxRemoveInput *NONNULL_PTR msg) {
13366         (self.handle_tx_remove_input)(self.this_arg, their_node_id, msg);
13367 }
13368 inline void ChannelMessageHandler::handle_tx_remove_output(struct LDKPublicKey their_node_id, const struct LDKTxRemoveOutput *NONNULL_PTR msg) {
13369         (self.handle_tx_remove_output)(self.this_arg, their_node_id, msg);
13370 }
13371 inline void ChannelMessageHandler::handle_tx_complete(struct LDKPublicKey their_node_id, const struct LDKTxComplete *NONNULL_PTR msg) {
13372         (self.handle_tx_complete)(self.this_arg, their_node_id, msg);
13373 }
13374 inline void ChannelMessageHandler::handle_tx_signatures(struct LDKPublicKey their_node_id, const struct LDKTxSignatures *NONNULL_PTR msg) {
13375         (self.handle_tx_signatures)(self.this_arg, their_node_id, msg);
13376 }
13377 inline void ChannelMessageHandler::handle_tx_init_rbf(struct LDKPublicKey their_node_id, const struct LDKTxInitRbf *NONNULL_PTR msg) {
13378         (self.handle_tx_init_rbf)(self.this_arg, their_node_id, msg);
13379 }
13380 inline void ChannelMessageHandler::handle_tx_ack_rbf(struct LDKPublicKey their_node_id, const struct LDKTxAckRbf *NONNULL_PTR msg) {
13381         (self.handle_tx_ack_rbf)(self.this_arg, their_node_id, msg);
13382 }
13383 inline void ChannelMessageHandler::handle_tx_abort(struct LDKPublicKey their_node_id, const struct LDKTxAbort *NONNULL_PTR msg) {
13384         (self.handle_tx_abort)(self.this_arg, their_node_id, msg);
13385 }
13386 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
13387         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
13388 }
13389 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
13390         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
13391 }
13392 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
13393         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
13394 }
13395 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
13396         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
13397 }
13398 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
13399         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
13400 }
13401 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
13402         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
13403 }
13404 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
13405         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
13406 }
13407 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
13408         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
13409 }
13410 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
13411         (self.peer_disconnected)(self.this_arg, their_node_id);
13412 }
13413 inline LDK::CResult_NoneNoneZ ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound) {
13414         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, msg, inbound);
13415         return ret;
13416 }
13417 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
13418         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
13419 }
13420 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
13421         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
13422 }
13423 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
13424         (self.handle_error)(self.this_arg, their_node_id, msg);
13425 }
13426 inline LDK::NodeFeatures ChannelMessageHandler::provided_node_features() {
13427         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
13428         return ret;
13429 }
13430 inline LDK::InitFeatures ChannelMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
13431         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
13432         return ret;
13433 }
13434 inline LDK::COption_CVec_ThirtyTwoBytesZZ ChannelMessageHandler::get_chain_hashes() {
13435         LDK::COption_CVec_ThirtyTwoBytesZZ ret = (self.get_chain_hashes)(self.this_arg);
13436         return ret;
13437 }
13438 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
13439         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
13440         return ret;
13441 }
13442 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
13443         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
13444         return ret;
13445 }
13446 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
13447         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
13448         return ret;
13449 }
13450 inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcement(uint64_t starting_point) {
13451         LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcement)(self.this_arg, starting_point);
13452         return ret;
13453 }
13454 inline LDK::NodeAnnouncement RoutingMessageHandler::get_next_node_announcement(struct LDKNodeId starting_point) {
13455         LDK::NodeAnnouncement ret = (self.get_next_node_announcement)(self.this_arg, starting_point);
13456         return ret;
13457 }
13458 inline LDK::CResult_NoneNoneZ RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
13459         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
13460         return ret;
13461 }
13462 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
13463         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
13464         return ret;
13465 }
13466 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
13467         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
13468         return ret;
13469 }
13470 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
13471         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
13472         return ret;
13473 }
13474 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
13475         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
13476         return ret;
13477 }
13478 inline bool RoutingMessageHandler::processing_queue_high() {
13479         bool ret = (self.processing_queue_high)(self.this_arg);
13480         return ret;
13481 }
13482 inline LDK::NodeFeatures RoutingMessageHandler::provided_node_features() {
13483         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
13484         return ret;
13485 }
13486 inline LDK::InitFeatures RoutingMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
13487         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
13488         return ret;
13489 }
13490 inline LDK::CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ OnionMessageHandler::get_and_clear_connections_needed() {
13491         LDK::CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ ret = (self.get_and_clear_connections_needed)(self.this_arg);
13492         return ret;
13493 }
13494 inline void OnionMessageHandler::handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg) {
13495         (self.handle_onion_message)(self.this_arg, peer_node_id, msg);
13496 }
13497 inline LDK::OnionMessage OnionMessageHandler::next_onion_message_for_peer(struct LDKPublicKey peer_node_id) {
13498         LDK::OnionMessage ret = (self.next_onion_message_for_peer)(self.this_arg, peer_node_id);
13499         return ret;
13500 }
13501 inline LDK::CResult_NoneNoneZ OnionMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
13502         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
13503         return ret;
13504 }
13505 inline void OnionMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
13506         (self.peer_disconnected)(self.this_arg, their_node_id);
13507 }
13508 inline void OnionMessageHandler::timer_tick_occurred() {
13509         (self.timer_tick_occurred)(self.this_arg);
13510 }
13511 inline LDK::NodeFeatures OnionMessageHandler::provided_node_features() {
13512         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
13513         return ret;
13514 }
13515 inline LDK::InitFeatures OnionMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
13516         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
13517         return ret;
13518 }
13519 inline void Logger::log(struct LDKRecord record) {
13520         (self.log)(self.this_arg, record);
13521 }
13522 inline void FutureCallback::call() {
13523         (self.call)(self.this_arg);
13524 }
13525 inline LDK::COption_OffersMessageZ OffersMessageHandler::handle_message(struct LDKOffersMessage message) {
13526         LDK::COption_OffersMessageZ ret = (self.handle_message)(self.this_arg, message);
13527         return ret;
13528 }
13529 inline LDK::CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ OffersMessageHandler::release_pending_messages() {
13530         LDK::CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ ret = (self.release_pending_messages)(self.this_arg);
13531         return ret;
13532 }
13533 inline void BroadcasterInterface::broadcast_transactions(struct LDKCVec_TransactionZ txs) {
13534         (self.broadcast_transactions)(self.this_arg, txs);
13535 }
13536 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
13537         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
13538         return ret;
13539 }
13540 inline uint64_t OnionMessageContents::tlv_type() {
13541         uint64_t ret = (self.tlv_type)(self.this_arg);
13542         return ret;
13543 }
13544 inline LDK::Str OnionMessageContents::debug_str() {
13545         LDK::Str ret = (self.debug_str)(self.this_arg);
13546         return ret;
13547 }
13548 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
13549         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
13550         return ret;
13551 }
13552 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
13553         (self.process_pending_events)(self.this_arg, handler);
13554 }
13555 inline void EventHandler::handle_event(struct LDKEvent event) {
13556         (self.handle_event)(self.this_arg, event);
13557 }
13558 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
13559         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
13560         return ret;
13561 }
13562 inline uint16_t Type::type_id() {
13563         uint16_t ret = (self.type_id)(self.this_arg);
13564         return ret;
13565 }
13566 inline LDK::Str Type::debug_str() {
13567         LDK::Str ret = (self.debug_str)(self.this_arg);
13568         return ret;
13569 }
13570 inline LDK::UtxoResult UtxoLookup::get_utxo(const uint8_t (*chain_hash)[32], uint64_t short_channel_id) {
13571         LDK::UtxoResult ret = (self.get_utxo)(self.this_arg, chain_hash, short_channel_id);
13572         return ret;
13573 }
13574 inline LDK::CResult_OnionMessagePathNoneZ MessageRouter::find_path(struct LDKPublicKey sender, struct LDKCVec_PublicKeyZ peers, struct LDKDestination destination) {
13575         LDK::CResult_OnionMessagePathNoneZ ret = (self.find_path)(self.this_arg, sender, peers, destination);
13576         return ret;
13577 }
13578 inline LDK::CResult_CVec_BlindedPathZNoneZ MessageRouter::create_blinded_paths(struct LDKPublicKey recipient, struct LDKCVec_PublicKeyZ peers) {
13579         LDK::CResult_CVec_BlindedPathZNoneZ ret = (self.create_blinded_paths)(self.this_arg, recipient, peers);
13580         return ret;
13581 }
13582 inline LDK::COption_OnionMessageContentsZ CustomOnionMessageHandler::handle_custom_message(struct LDKOnionMessageContents msg) {
13583         LDK::COption_OnionMessageContentsZ ret = (self.handle_custom_message)(self.this_arg, msg);
13584         return ret;
13585 }
13586 inline LDK::CResult_COption_OnionMessageContentsZDecodeErrorZ CustomOnionMessageHandler::read_custom_message(uint64_t message_type, struct LDKu8slice buffer) {
13587         LDK::CResult_COption_OnionMessageContentsZDecodeErrorZ ret = (self.read_custom_message)(self.this_arg, message_type, buffer);
13588         return ret;
13589 }
13590 inline LDK::CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ CustomOnionMessageHandler::release_pending_custom_messages() {
13591         LDK::CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ ret = (self.release_pending_custom_messages)(self.this_arg);
13592         return ret;
13593 }
13594 inline LDKPublicKey NodeIdLookUp::next_node_id(uint64_t short_channel_id) {
13595         LDKPublicKey ret = (self.next_node_id)(self.this_arg, short_channel_id);
13596         return ret;
13597 }
13598 inline LDK::ChannelMonitorUpdateStatus Persist::persist_new_channel(struct LDKOutPoint channel_funding_outpoint, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
13599         LDK::ChannelMonitorUpdateStatus ret = (self.persist_new_channel)(self.this_arg, channel_funding_outpoint, data, update_id);
13600         return ret;
13601 }
13602 inline LDK::ChannelMonitorUpdateStatus Persist::update_persisted_channel(struct LDKOutPoint channel_funding_outpoint, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
13603         LDK::ChannelMonitorUpdateStatus ret = (self.update_persisted_channel)(self.this_arg, channel_funding_outpoint, update, data, update_id);
13604         return ret;
13605 }
13606 inline void Persist::archive_persisted_channel(struct LDKOutPoint channel_funding_outpoint) {
13607         (self.archive_persisted_channel)(self.this_arg, channel_funding_outpoint);
13608 }
13609 }