]> git.bitcoin.ninja Git - ldk-c-bindings/blob - lightning-c-bindings/include/lightningpp.hpp
afff0ed382aa7f463dc9a357fb11d5685246964b
[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 Offer;
86 class Amount;
87 class Quantity;
88 class NodeId;
89 class NetworkGraph;
90 class ReadOnlyNetworkGraph;
91 class NetworkUpdate;
92 class P2PGossipSync;
93 class ChannelUpdateInfo;
94 class ChannelInfo;
95 class DirectedChannelInfo;
96 class EffectiveCapacity;
97 class RoutingFees;
98 class NodeAnnouncementInfo;
99 class NodeAlias;
100 class NodeInfo;
101 class ShortChannelIdError;
102 class InboundHTLCErr;
103 class AnchorDescriptor;
104 class BumpTransactionEvent;
105 class Input;
106 class Utxo;
107 class CoinSelection;
108 class CoinSelectionSource;
109 class WalletSource;
110 class Wallet;
111 class BumpTransactionEventHandler;
112 class PendingHTLCRouting;
113 class BlindedForward;
114 class PendingHTLCInfo;
115 class BlindedFailure;
116 class FailureCode;
117 class ChannelManager;
118 class ChainParameters;
119 class CounterpartyForwardingInfo;
120 class ChannelCounterparty;
121 class ChannelDetails;
122 class ChannelShutdownState;
123 class RecentPaymentDetails;
124 class PhantomRouteHints;
125 class ChannelManagerReadArgs;
126 class ChannelHandshakeConfig;
127 class ChannelHandshakeLimits;
128 class MaxDustHTLCExposure;
129 class ChannelConfig;
130 class ChannelConfigUpdate;
131 class UserConfig;
132 class APIError;
133 class TaggedHash;
134 class SignError;
135 class EcdsaChannelSigner;
136 class WriteableEcdsaChannelSigner;
137 class ChannelMonitorUpdate;
138 class MonitorEvent;
139 class HTLCUpdate;
140 class Balance;
141 class ChannelMonitor;
142 class ExpandedKey;
143 class CustomMessageHandler;
144 class IgnoringMessageHandler;
145 class ErroringMessageHandler;
146 class MessageHandler;
147 class SocketDescriptor;
148 class PeerDetails;
149 class PeerHandleError;
150 class PeerManager;
151 class GraphSyncError;
152 class RapidGossipSync;
153 class KVStore;
154 class Persister;
155 class MonitorUpdatingPersister;
156 class InvoiceRequestWithExplicitPayerIdBuilder;
157 class InvoiceRequestWithDerivedPayerIdBuilder;
158 class UnsignedInvoiceRequest;
159 class SignInvoiceRequestFn;
160 class InvoiceRequest;
161 class VerifiedInvoiceRequest;
162 class InvoiceRequestFields;
163 class DecodeError;
164 class Init;
165 class ErrorMessage;
166 class WarningMessage;
167 class Ping;
168 class Pong;
169 class CommonOpenChannelFields;
170 class OpenChannel;
171 class OpenChannelV2;
172 class CommonAcceptChannelFields;
173 class AcceptChannel;
174 class AcceptChannelV2;
175 class FundingCreated;
176 class FundingSigned;
177 class ChannelReady;
178 class Stfu;
179 class Splice;
180 class SpliceAck;
181 class SpliceLocked;
182 class TxAddInput;
183 class TxAddOutput;
184 class TxRemoveInput;
185 class TxRemoveOutput;
186 class TxComplete;
187 class TxSignatures;
188 class TxInitRbf;
189 class TxAckRbf;
190 class TxAbort;
191 class Shutdown;
192 class ClosingSignedFeeRange;
193 class ClosingSigned;
194 class UpdateAddHTLC;
195 class OnionMessage;
196 class UpdateFulfillHTLC;
197 class UpdateFailHTLC;
198 class UpdateFailMalformedHTLC;
199 class CommitmentSigned;
200 class RevokeAndACK;
201 class UpdateFee;
202 class ChannelReestablish;
203 class AnnouncementSignatures;
204 class SocketAddress;
205 class SocketAddressParseError;
206 class UnsignedGossipMessage;
207 class UnsignedNodeAnnouncement;
208 class NodeAnnouncement;
209 class UnsignedChannelAnnouncement;
210 class ChannelAnnouncement;
211 class UnsignedChannelUpdate;
212 class ChannelUpdate;
213 class QueryChannelRange;
214 class ReplyChannelRange;
215 class QueryShortChannelIds;
216 class ReplyShortChannelIdsEnd;
217 class GossipTimestampFilter;
218 class ErrorAction;
219 class LightningError;
220 class CommitmentUpdate;
221 class ChannelMessageHandler;
222 class RoutingMessageHandler;
223 class OnionMessageHandler;
224 class FinalOnionHopData;
225 class OnionPacket;
226 class TrampolineOnionPacket;
227 class Level;
228 class Record;
229 class Logger;
230 class FutureCallback;
231 class Future;
232 class Sleeper;
233 class OffersMessageHandler;
234 class OffersMessage;
235 class HTLCClaim;
236 class CounterpartyCommitmentSecrets;
237 class TxCreationKeys;
238 class ChannelPublicKeys;
239 class HTLCOutputInCommitment;
240 class ChannelTransactionParameters;
241 class CounterpartyChannelTransactionParameters;
242 class DirectedChannelTransactionParameters;
243 class HolderCommitmentTransaction;
244 class BuiltCommitmentTransaction;
245 class ClosingTransaction;
246 class TrustedClosingTransaction;
247 class CommitmentTransaction;
248 class TrustedCommitmentTransaction;
249 class ShutdownScript;
250 class InvalidShutdownScript;
251 class Bolt12ParseError;
252 class Bolt12SemanticError;
253 class BroadcasterInterface;
254 class ConfirmationTarget;
255 class FeeEstimator;
256 class Packet;
257 class ParsedOnionMessageContents;
258 class OnionMessageContents;
259 class PaymentPurpose;
260 class ClaimedHTLC;
261 class PathFailure;
262 class ClosureReason;
263 class HTLCDestination;
264 class PaymentFailureReason;
265 class Event;
266 class MessageSendEvent;
267 class MessageSendEventsProvider;
268 class EventsProvider;
269 class EventHandler;
270 class Bolt11ParseError;
271 class ParseOrSemanticError;
272 class Bolt11Invoice;
273 class SignedRawBolt11Invoice;
274 class RawBolt11Invoice;
275 class RawDataPart;
276 class PositiveTimestamp;
277 class SiPrefix;
278 class Currency;
279 class Sha256;
280 class Description;
281 class PayeePubKey;
282 class ExpiryTime;
283 class MinFinalCltvExpiryDelta;
284 class Fallback;
285 class Bolt11InvoiceSignature;
286 class PrivateRoute;
287 class CreationError;
288 class Bolt11SemanticError;
289 class SignOrCreationError;
290 class OutPoint;
291 class BigSize;
292 class Hostname;
293 class TransactionU16LenLimited;
294 class UntrustedString;
295 class PrintableString;
296 class ChannelId;
297 class CustomMessageReader;
298 class Type;
299 class ForwardNode;
300 class ForwardTlvs;
301 class ReceiveTlvs;
302 class PaymentRelay;
303 class PaymentConstraints;
304 class PaymentContext;
305 class UnknownPaymentContext;
306 class Bolt12OfferContext;
307 class Bolt12RefundContext;
308 class UtxoLookupError;
309 class UtxoResult;
310 class UtxoLookup;
311 class UtxoFuture;
312 class OnionMessenger;
313 class MessageRouter;
314 class DefaultMessageRouter;
315 class OnionMessagePath;
316 class Destination;
317 class SendSuccess;
318 class SendError;
319 class CustomOnionMessageHandler;
320 class PeeledOnion;
321 class FilesystemStore;
322 class NextMessageHop;
323 class BlindedPath;
324 class IntroductionNode;
325 class Direction;
326 class NodeIdLookUp;
327 class EmptyNodeIdLookUp;
328 class BlindedHop;
329 class InvoiceError;
330 class ErroneousField;
331 class TrackedSpendableOutput;
332 class OutputSpendStatus;
333 class OutputSweeper;
334 class SpendingDelay;
335 class DelayedPaymentBasepoint;
336 class DelayedPaymentKey;
337 class HtlcBasepoint;
338 class HtlcKey;
339 class RevocationBasepoint;
340 class RevocationKey;
341 class MonitorUpdateId;
342 class Persist;
343 class LockedChannelMonitor;
344 class ChainMonitor;
345 class CResult_HtlcKeyDecodeErrorZ;
346 class CResult_TransactionU16LenLimitedNoneZ;
347 class CVec_TrackedSpendableOutputZ;
348 class CResult_LockedChannelMonitorNoneZ;
349 class CVec_C2Tuple_BlindedPayInfoBlindedPathZZ;
350 class CResult_PhantomRouteHintsDecodeErrorZ;
351 class CResult_FundingCreatedDecodeErrorZ;
352 class CVec_C2Tuple_u32TxOutZZ;
353 class CResult_RetryDecodeErrorZ;
354 class CResult_BlindedForwardDecodeErrorZ;
355 class CResult_ChannelInfoDecodeErrorZ;
356 class COption_PaymentContextZ;
357 class COption_MaxDustHTLCExposureZ;
358 class COption_OffersMessageZ;
359 class CResult_CVec_u8ZPeerHandleErrorZ;
360 class COption_NetworkUpdateZ;
361 class COption_u64Z;
362 class CResult_OnionPacketDecodeErrorZ;
363 class CResult_GossipTimestampFilterDecodeErrorZ;
364 class CResult_RouteHintDecodeErrorZ;
365 class COption_FilterZ;
366 class C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ;
367 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
368 class CResult_COption_APIErrorZDecodeErrorZ;
369 class CVec_UpdateAddHTLCZ;
370 class CResult_TxAbortDecodeErrorZ;
371 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
372 class COption_u32Z;
373 class CResult_RecipientOnionFieldsNoneZ;
374 class C2Tuple__u1632_u1632Z;
375 class CResult_CVec_StrZIOErrorZ;
376 class COption_ECDSASignatureZ;
377 class CResult_TransactionNoneZ;
378 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
379 class CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ;
380 class CResult_CommitmentSignedDecodeErrorZ;
381 class CResult_CommitmentTransactionDecodeErrorZ;
382 class CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ;
383 class CResult_StfuDecodeErrorZ;
384 class CResult_OpenChannelDecodeErrorZ;
385 class CResult_ErrorMessageDecodeErrorZ;
386 class COption_APIErrorZ;
387 class CVec_PeerDetailsZ;
388 class CResult_u64ShortChannelIdErrorZ;
389 class CResult_QueryChannelRangeDecodeErrorZ;
390 class CVec_InputZ;
391 class CResult_ChannelFeaturesDecodeErrorZ;
392 class CResult_ChannelReadyDecodeErrorZ;
393 class CVec_TransactionZ;
394 class CResult_UpdateFeeDecodeErrorZ;
395 class CResult_NoneBolt11SemanticErrorZ;
396 class CResult_RevocationBasepointDecodeErrorZ;
397 class COption_OnionMessageContentsZ;
398 class CResult_NoneRetryableSendFailureZ;
399 class CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ;
400 class CResult_NodeIdDecodeErrorZ;
401 class CResult_boolLightningErrorZ;
402 class CResult_ChannelShutdownStateDecodeErrorZ;
403 class CResult_NodeAnnouncementInfoDecodeErrorZ;
404 class CResult_InvoiceRequestBolt12SemanticErrorZ;
405 class CResult_COption_NetworkUpdateZDecodeErrorZ;
406 class CVec_UpdateFailMalformedHTLCZ;
407 class CResult_ShutdownScriptNoneZ;
408 class CResult_PendingHTLCInfoInboundHTLCErrZ;
409 class CResult_PendingHTLCInfoDecodeErrorZ;
410 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
411 class CResult_ShutdownScriptInvalidShutdownScriptZ;
412 class COption_HTLCDestinationZ;
413 class CVec_RouteHopZ;
414 class C2Tuple_PublicKeyCVec_SocketAddressZZ;
415 class CResult_CVec_UtxoZNoneZ;
416 class CResult_CVec_u8ZIOErrorZ;
417 class CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ;
418 class CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ;
419 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ;
420 class C3Tuple_OffersMessageDestinationBlindedPathZ;
421 class CVec_ThirtyTwoBytesZ;
422 class CResult_ChannelMonitorUpdateStatusNoneZ;
423 class CResult_ClosingSignedDecodeErrorZ;
424 class CVec_CResult_NoneAPIErrorZZ;
425 class CResult_SchnorrSignatureNoneZ;
426 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
427 class CResult_HTLCDescriptorDecodeErrorZ;
428 class CVec_RecentPaymentDetailsZ;
429 class CVec_RouteHintHopZ;
430 class CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ;
431 class CResult_UntrustedStringDecodeErrorZ;
432 class CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ;
433 class CVec_U5Z;
434 class CResult_PaymentParametersDecodeErrorZ;
435 class C2Tuple_ThirtyTwoBytesChannelMonitorZ;
436 class COption_U128Z;
437 class CResult_DelayedPaymentBasepointDecodeErrorZ;
438 class C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ;
439 class CResult_TxAckRbfDecodeErrorZ;
440 class CResult_Bolt11InvoiceBolt11SemanticErrorZ;
441 class COption_UtxoLookupZ;
442 class CResult_PongDecodeErrorZ;
443 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
444 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ;
445 class CResult_ChannelIdAPIErrorZ;
446 class CResult_CVec_u8ZNoneZ;
447 class CVec_C2Tuple_ChannelIdPublicKeyZZ;
448 class C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ;
449 class CResult_ChannelTransactionParametersDecodeErrorZ;
450 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ;
451 class CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ;
452 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
453 class CResult_InFlightHtlcsDecodeErrorZ;
454 class CResult_COption_HTLCDestinationZDecodeErrorZ;
455 class CResult_Bolt12OfferContextDecodeErrorZ;
456 class CResult_ThirtyTwoBytesNoneZ;
457 class C3Tuple_OnionMessageContentsDestinationBlindedPathZ;
458 class C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ;
459 class CResult_SendSuccessSendErrorZ;
460 class CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ;
461 class C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ;
462 class CResult_BlindedHopDecodeErrorZ;
463 class CResult_NoneLightningErrorZ;
464 class CResult_FixedPenaltyScorerDecodeErrorZ;
465 class CVec_BlindedPathZ;
466 class CResult_NonePeerHandleErrorZ;
467 class CResult_FinalOnionHopDataDecodeErrorZ;
468 class CResult_TrustedCommitmentTransactionNoneZ;
469 class CResult_COption_EventZDecodeErrorZ;
470 class CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ;
471 class CResult_PaymentFailureReasonDecodeErrorZ;
472 class COption_SocketAddressZ;
473 class CResult_COption_MonitorEventZDecodeErrorZ;
474 class COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ;
475 class CResult_DescriptionCreationErrorZ;
476 class CResult_RoutingFeesDecodeErrorZ;
477 class CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ;
478 class CResult_PaymentRelayDecodeErrorZ;
479 class CResult_QueryShortChannelIdsDecodeErrorZ;
480 class CResult_VerifiedInvoiceRequestNoneZ;
481 class CResult_UpdateAddHTLCDecodeErrorZ;
482 class COption_MonitorEventZ;
483 class COption_TypeZ;
484 class CResult_COption_TypeZDecodeErrorZ;
485 class CResult_COption_PathFailureZDecodeErrorZ;
486 class CResult_Bolt11InvoiceSignOrCreationErrorZ;
487 class CResult_UpdateFailHTLCDecodeErrorZ;
488 class CResult_CVec_BlindedPathZNoneZ;
489 class CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ;
490 class CResult_RevokeAndACKDecodeErrorZ;
491 class CResult_SpendableOutputDescriptorDecodeErrorZ;
492 class CResult_UnsignedChannelUpdateDecodeErrorZ;
493 class C2Tuple__u832u16Z;
494 class CResult_PayeePubKeySecp256k1ErrorZ;
495 class COption_BigEndianScalarZ;
496 class CVec_ChannelIdZ;
497 class CResult_PublicKeySecp256k1ErrorZ;
498 class CResult_CVec_ECDSASignatureZNoneZ;
499 class CVec_BlindedHopZ;
500 class CResult_COption_ClosureReasonZDecodeErrorZ;
501 class CResult_InvoiceErrorDecodeErrorZ;
502 class C2Tuple_BestBlockOutputSweeperZ;
503 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
504 class CResult_RouteParametersDecodeErrorZ;
505 class CResult_PrivateRouteCreationErrorZ;
506 class CResult_NodeAliasDecodeErrorZ;
507 class CVec_UpdateFulfillHTLCZ;
508 class CVec_C2Tuple_u32CVec_u8ZZZ;
509 class C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ;
510 class CResult_AnnouncementSignaturesDecodeErrorZ;
511 class CResult_TxCompleteDecodeErrorZ;
512 class CResult_UpdateFulfillHTLCDecodeErrorZ;
513 class CResult_NodeFeaturesDecodeErrorZ;
514 class CResult_InMemorySignerDecodeErrorZ;
515 class CResult_TxSignaturesDecodeErrorZ;
516 class CVec_HTLCDescriptorZ;
517 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
518 class COption_PathFailureZ;
519 class CResult_StrSecp256k1ErrorZ;
520 class CVec_ECDSASignatureZ;
521 class CResult_ChannelUpdateInfoDecodeErrorZ;
522 class CVec_UpdateFailHTLCZ;
523 class CVec_TxOutZ;
524 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
525 class CResult_TrackedSpendableOutputDecodeErrorZ;
526 class CVec_SpendableOutputDescriptorZ;
527 class C2Tuple_OutPointCVec_u8ZZ;
528 class CResult_WitnessNoneZ;
529 class COption_C2Tuple_u64u64ZZ;
530 class CResult_ChannelAnnouncementDecodeErrorZ;
531 class CResult_HTLCUpdateDecodeErrorZ;
532 class CResult_TxAddInputDecodeErrorZ;
533 class CResult_PeeledOnionNoneZ;
534 class CResult_TxInitRbfDecodeErrorZ;
535 class COption_WriteableScoreZ;
536 class CVec_StrZ;
537 class CResult_SpliceAckDecodeErrorZ;
538 class CResult_PositiveTimestampCreationErrorZ;
539 class CVec_C2Tuple_OutPointChannelIdZZ;
540 class CResult_ChannelMonitorUpdateDecodeErrorZ;
541 class C2Tuple_BlindedPayInfoBlindedPathZ;
542 class CResult_ReplyChannelRangeDecodeErrorZ;
543 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
544 class CResult_TrustedClosingTransactionNoneZ;
545 class CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ;
546 class C2Tuple_PublicKeyTypeZ;
547 class CResult_TxRemoveOutputDecodeErrorZ;
548 class CResult_ChannelReestablishDecodeErrorZ;
549 class CResult_OnionMessageDecodeErrorZ;
550 class CResult_Bolt11InvoiceParseOrSemanticErrorZ;
551 class CResult_InitFeaturesDecodeErrorZ;
552 class CResult_PublicKeyNoneZ;
553 class CResult_PingDecodeErrorZ;
554 class CResult_RevocationKeyDecodeErrorZ;
555 class CResult_ChannelIdDecodeErrorZ;
556 class CResult_BlindedHopFeaturesDecodeErrorZ;
557 class CVec_TransactionOutputsZ;
558 class COption_HTLCClaimZ;
559 class COption_boolZ;
560 class COption_StrZ;
561 class CResult_ProbabilisticScorerDecodeErrorZ;
562 class CResult_ShutdownScriptDecodeErrorZ;
563 class CResult_SiPrefixBolt11ParseErrorZ;
564 class C2Tuple_usizeTransactionZ;
565 class CResult_NodeAnnouncementDecodeErrorZ;
566 class CVec_FutureZ;
567 class CVec_ChannelMonitorZ;
568 class CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ;
569 class CResult_AcceptChannelV2DecodeErrorZ;
570 class CResult_RouteHopDecodeErrorZ;
571 class CResult_OfferIdDecodeErrorZ;
572 class CVec_HTLCOutputInCommitmentZ;
573 class CResult_CoinSelectionNoneZ;
574 class CResult_TxCreationKeysDecodeErrorZ;
575 class CResult_BlindedPathDecodeErrorZ;
576 class CResult_RefundBolt12SemanticErrorZ;
577 class CResult_NoneIOErrorZ;
578 class CResult_MaxDustHTLCExposureDecodeErrorZ;
579 class CVec_BalanceZ;
580 class CVec_CommitmentTransactionZ;
581 class CResult_FundingSignedDecodeErrorZ;
582 class CResult_RecoverableSignatureNoneZ;
583 class CResult_SocketAddressDecodeErrorZ;
584 class C2Tuple_Z;
585 class C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ;
586 class CVec_PathZ;
587 class CResult_NetworkGraphDecodeErrorZ;
588 class CResult_NodeInfoDecodeErrorZ;
589 class CVec_NodeIdZ;
590 class CVec_u8Z;
591 class CResult_RouteLightningErrorZ;
592 class CResult_NonePaymentSendFailureZ;
593 class CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ;
594 class CResult_ChannelPublicKeysDecodeErrorZ;
595 class CVec_ClaimedHTLCZ;
596 class COption_CVec_ThirtyTwoBytesZZ;
597 class CVec_SocketAddressZ;
598 class CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ;
599 class CResult_ThirtyTwoBytesPaymentSendFailureZ;
600 class CResult_WarningMessageDecodeErrorZ;
601 class CResult_ChannelCounterpartyDecodeErrorZ;
602 class CResult_HolderCommitmentTransactionDecodeErrorZ;
603 class CVec_ForwardNodeZ;
604 class CResult_DelayedPaymentKeyDecodeErrorZ;
605 class CResult_InitDecodeErrorZ;
606 class CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ;
607 class CResult_SpliceDecodeErrorZ;
608 class CResult_PaymentPurposeDecodeErrorZ;
609 class CResult_ClaimedHTLCDecodeErrorZ;
610 class C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ;
611 class CResult_OutPointDecodeErrorZ;
612 class CVec_ChannelDetailsZ;
613 class CVec_MonitorUpdateIdZ;
614 class CResult_Bolt11InvoiceFeaturesDecodeErrorZ;
615 class CVec_MessageSendEventZ;
616 class CResult_RouteHintHopDecodeErrorZ;
617 class CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ;
618 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
619 class CResult_BlindedPayInfoDecodeErrorZ;
620 class CResult_ThirtyTwoBytesAPIErrorZ;
621 class COption_ChannelShutdownStateZ;
622 class CResult_Bolt12InvoiceBolt12SemanticErrorZ;
623 class CResult_InvoiceRequestFieldsDecodeErrorZ;
624 class CResult_AcceptChannelDecodeErrorZ;
625 class CResult_HostnameDecodeErrorZ;
626 class C2Tuple_u64u16Z;
627 class COption_ThirtyTwoBytesZ;
628 class CVec_u64Z;
629 class CResult_NoneBolt12SemanticErrorZ;
630 class COption_SecretKeyZ;
631 class CResult_UnknownPaymentContextDecodeErrorZ;
632 class CResult_OutputSweeperDecodeErrorZ;
633 class CResult_C2Tuple_CVec_u8Zu64ZNoneZ;
634 class COption_EventZ;
635 class CResult_ChannelTypeFeaturesDecodeErrorZ;
636 class COption_CVec_SocketAddressZZ;
637 class CVec_RouteHintZ;
638 class COption_u16Z;
639 class COption_PaymentFailureReasonZ;
640 class CResult_Bolt12RefundContextDecodeErrorZ;
641 class CResult_ECDSASignatureNoneZ;
642 class CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ;
643 class C2Tuple_ChannelIdPublicKeyZ;
644 class CVec_WitnessZ;
645 class CResult_BlindedTailDecodeErrorZ;
646 class CResult_SocketAddressSocketAddressParseErrorZ;
647 class COption_C2Tuple_u64u16ZZ;
648 class CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ;
649 class CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ;
650 class CResult_ChannelDerivationParametersDecodeErrorZ;
651 class CResult_PaymentConstraintsDecodeErrorZ;
652 class CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ;
653 class CResult_OnionMessagePathNoneZ;
654 class C2Tuple_u32CVec_u8ZZ;
655 class CVec_C2Tuple_PublicKeyTypeZZ;
656 class CResult_RefundBolt12ParseErrorZ;
657 class CResult_u32GraphSyncErrorZ;
658 class CVec_C2Tuple_u64CVec_u8ZZZ;
659 class CVec_PhantomRouteHintsZ;
660 class CResult_OffersMessageDecodeErrorZ;
661 class CResult_NoneAPIErrorZ;
662 class CResult_Bolt12InvoiceFeaturesDecodeErrorZ;
663 class COption_f64Z;
664 class CResult_ChannelDetailsDecodeErrorZ;
665 class CVec_PublicKeyZ;
666 class C2Tuple_CVec_u8Zu64Z;
667 class CVec_C2Tuple_usizeTransactionZZ;
668 class CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ;
669 class CResult_PendingHTLCRoutingDecodeErrorZ;
670 class C2Tuple_u64u64Z;
671 class CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ;
672 class CResult_TxRemoveInputDecodeErrorZ;
673 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
674 class CResult_RecipientOnionFieldsDecodeErrorZ;
675 class C2Tuple_u32TxOutZ;
676 class CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ;
677 class CResult_PaymentContextDecodeErrorZ;
678 class CVec_UtxoZ;
679 class CResult_ChannelConfigDecodeErrorZ;
680 class CVec_PrivateRouteZ;
681 class COption_i64Z;
682 class C2Tuple_ThirtyTwoBytesChannelManagerZ;
683 class CResult_COption_OnionMessageContentsZDecodeErrorZ;
684 class C2Tuple_u64CVec_u8ZZ;
685 class CResult_OfferBolt12ParseErrorZ;
686 class CResult_ThirtyTwoBytesRetryableSendFailureZ;
687 class CVec_MonitorEventZ;
688 class CResult_ShutdownDecodeErrorZ;
689 class CResult_BigSizeDecodeErrorZ;
690 class CResult_TxOutUtxoLookupErrorZ;
691 class CResult_BlindedPathNoneZ;
692 class COption_usizeZ;
693 class CResult_NoneNoneZ;
694 class CResult_boolPeerHandleErrorZ;
695 class CResult_ChannelUpdateDecodeErrorZ;
696 class CVec_APIErrorZ;
697 class COption_TxOutZ;
698 class COption_ClosureReasonZ;
699 class CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ;
700 class CResult_TransactionU16LenLimitedDecodeErrorZ;
701 class COption_AmountZ;
702 class CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ;
703 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
704 class CResult_BestBlockDecodeErrorZ;
705 class CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ;
706 class CResult_OpenChannelV2DecodeErrorZ;
707 class CResult_OutputSpendStatusDecodeErrorZ;
708 class C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ;
709 class CResult_RouteDecodeErrorZ;
710 class CResult_BlindedFailureDecodeErrorZ;
711 class CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ;
712 class COption_NoneZ;
713 class CResult_SpliceLockedDecodeErrorZ;
714 class COption_CVec_u8ZZ;
715 class COption_QuantityZ;
716 class CResult_TxAddOutputDecodeErrorZ;
717 class CResult_HtlcBasepointDecodeErrorZ;
718 class C2Tuple_OutPointChannelIdZ;
719
720 class Str {
721 private:
722         LDKStr self;
723 public:
724         Str(const Str&) = delete;
725         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
726         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
727         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
728         ~Str() { Str_free(self); }
729         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
730         LDKStr* operator &() { return &self; }
731         LDKStr* operator ->() { return &self; }
732         const LDKStr* operator &() const { return &self; }
733         const LDKStr* operator ->() const { return &self; }
734 };
735 class RefundMaybeWithDerivedMetadataBuilder {
736 private:
737         LDKRefundMaybeWithDerivedMetadataBuilder self;
738 public:
739         RefundMaybeWithDerivedMetadataBuilder(const RefundMaybeWithDerivedMetadataBuilder&) = delete;
740         RefundMaybeWithDerivedMetadataBuilder(RefundMaybeWithDerivedMetadataBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(RefundMaybeWithDerivedMetadataBuilder)); }
741         RefundMaybeWithDerivedMetadataBuilder(LDKRefundMaybeWithDerivedMetadataBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRefundMaybeWithDerivedMetadataBuilder)); }
742         operator LDKRefundMaybeWithDerivedMetadataBuilder() && { LDKRefundMaybeWithDerivedMetadataBuilder res = self; memset(&self, 0, sizeof(LDKRefundMaybeWithDerivedMetadataBuilder)); return res; }
743         ~RefundMaybeWithDerivedMetadataBuilder() { RefundMaybeWithDerivedMetadataBuilder_free(self); }
744         RefundMaybeWithDerivedMetadataBuilder& operator=(RefundMaybeWithDerivedMetadataBuilder&& o) { RefundMaybeWithDerivedMetadataBuilder_free(self); self = o.self; memset(&o, 0, sizeof(RefundMaybeWithDerivedMetadataBuilder)); return *this; }
745         LDKRefundMaybeWithDerivedMetadataBuilder* operator &() { return &self; }
746         LDKRefundMaybeWithDerivedMetadataBuilder* operator ->() { return &self; }
747         const LDKRefundMaybeWithDerivedMetadataBuilder* operator &() const { return &self; }
748         const LDKRefundMaybeWithDerivedMetadataBuilder* operator ->() const { return &self; }
749 };
750 class Refund {
751 private:
752         LDKRefund self;
753 public:
754         Refund(const Refund&) = delete;
755         Refund(Refund&& o) : self(o.self) { memset(&o, 0, sizeof(Refund)); }
756         Refund(LDKRefund&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRefund)); }
757         operator LDKRefund() && { LDKRefund res = self; memset(&self, 0, sizeof(LDKRefund)); return res; }
758         ~Refund() { Refund_free(self); }
759         Refund& operator=(Refund&& o) { Refund_free(self); self = o.self; memset(&o, 0, sizeof(Refund)); return *this; }
760         LDKRefund* operator &() { return &self; }
761         LDKRefund* operator ->() { return &self; }
762         const LDKRefund* operator &() const { return &self; }
763         const LDKRefund* operator ->() const { return &self; }
764 };
765 class Retry {
766 private:
767         LDKRetry self;
768 public:
769         Retry(const Retry&) = delete;
770         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
771         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
772         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
773         ~Retry() { Retry_free(self); }
774         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
775         LDKRetry* operator &() { return &self; }
776         LDKRetry* operator ->() { return &self; }
777         const LDKRetry* operator &() const { return &self; }
778         const LDKRetry* operator ->() const { return &self; }
779 };
780 class RetryableSendFailure {
781 private:
782         LDKRetryableSendFailure self;
783 public:
784         RetryableSendFailure(const RetryableSendFailure&) = delete;
785         RetryableSendFailure(RetryableSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(RetryableSendFailure)); }
786         RetryableSendFailure(LDKRetryableSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetryableSendFailure)); }
787         operator LDKRetryableSendFailure() && { LDKRetryableSendFailure res = self; memset(&self, 0, sizeof(LDKRetryableSendFailure)); return res; }
788         RetryableSendFailure& operator=(RetryableSendFailure&& o) { self = o.self; memset(&o, 0, sizeof(RetryableSendFailure)); return *this; }
789         LDKRetryableSendFailure* operator &() { return &self; }
790         LDKRetryableSendFailure* operator ->() { return &self; }
791         const LDKRetryableSendFailure* operator &() const { return &self; }
792         const LDKRetryableSendFailure* operator ->() const { return &self; }
793 };
794 class PaymentSendFailure {
795 private:
796         LDKPaymentSendFailure self;
797 public:
798         PaymentSendFailure(const PaymentSendFailure&) = delete;
799         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
800         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
801         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
802         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
803         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
804         LDKPaymentSendFailure* operator &() { return &self; }
805         LDKPaymentSendFailure* operator ->() { return &self; }
806         const LDKPaymentSendFailure* operator &() const { return &self; }
807         const LDKPaymentSendFailure* operator ->() const { return &self; }
808 };
809 class ProbeSendFailure {
810 private:
811         LDKProbeSendFailure self;
812 public:
813         ProbeSendFailure(const ProbeSendFailure&) = delete;
814         ProbeSendFailure(ProbeSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(ProbeSendFailure)); }
815         ProbeSendFailure(LDKProbeSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbeSendFailure)); }
816         operator LDKProbeSendFailure() && { LDKProbeSendFailure res = self; memset(&self, 0, sizeof(LDKProbeSendFailure)); return res; }
817         ~ProbeSendFailure() { ProbeSendFailure_free(self); }
818         ProbeSendFailure& operator=(ProbeSendFailure&& o) { ProbeSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(ProbeSendFailure)); return *this; }
819         LDKProbeSendFailure* operator &() { return &self; }
820         LDKProbeSendFailure* operator ->() { return &self; }
821         const LDKProbeSendFailure* operator &() const { return &self; }
822         const LDKProbeSendFailure* operator ->() const { return &self; }
823 };
824 class RecipientOnionFields {
825 private:
826         LDKRecipientOnionFields self;
827 public:
828         RecipientOnionFields(const RecipientOnionFields&) = delete;
829         RecipientOnionFields(RecipientOnionFields&& o) : self(o.self) { memset(&o, 0, sizeof(RecipientOnionFields)); }
830         RecipientOnionFields(LDKRecipientOnionFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipientOnionFields)); }
831         operator LDKRecipientOnionFields() && { LDKRecipientOnionFields res = self; memset(&self, 0, sizeof(LDKRecipientOnionFields)); return res; }
832         ~RecipientOnionFields() { RecipientOnionFields_free(self); }
833         RecipientOnionFields& operator=(RecipientOnionFields&& o) { RecipientOnionFields_free(self); self = o.self; memset(&o, 0, sizeof(RecipientOnionFields)); return *this; }
834         LDKRecipientOnionFields* operator &() { return &self; }
835         LDKRecipientOnionFields* operator ->() { return &self; }
836         const LDKRecipientOnionFields* operator &() const { return &self; }
837         const LDKRecipientOnionFields* operator ->() const { return &self; }
838 };
839 class InvoiceWithExplicitSigningPubkeyBuilder {
840 private:
841         LDKInvoiceWithExplicitSigningPubkeyBuilder self;
842 public:
843         InvoiceWithExplicitSigningPubkeyBuilder(const InvoiceWithExplicitSigningPubkeyBuilder&) = delete;
844         InvoiceWithExplicitSigningPubkeyBuilder(InvoiceWithExplicitSigningPubkeyBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceWithExplicitSigningPubkeyBuilder)); }
845         InvoiceWithExplicitSigningPubkeyBuilder(LDKInvoiceWithExplicitSigningPubkeyBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceWithExplicitSigningPubkeyBuilder)); }
846         operator LDKInvoiceWithExplicitSigningPubkeyBuilder() && { LDKInvoiceWithExplicitSigningPubkeyBuilder res = self; memset(&self, 0, sizeof(LDKInvoiceWithExplicitSigningPubkeyBuilder)); return res; }
847         ~InvoiceWithExplicitSigningPubkeyBuilder() { InvoiceWithExplicitSigningPubkeyBuilder_free(self); }
848         InvoiceWithExplicitSigningPubkeyBuilder& operator=(InvoiceWithExplicitSigningPubkeyBuilder&& o) { InvoiceWithExplicitSigningPubkeyBuilder_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceWithExplicitSigningPubkeyBuilder)); return *this; }
849         LDKInvoiceWithExplicitSigningPubkeyBuilder* operator &() { return &self; }
850         LDKInvoiceWithExplicitSigningPubkeyBuilder* operator ->() { return &self; }
851         const LDKInvoiceWithExplicitSigningPubkeyBuilder* operator &() const { return &self; }
852         const LDKInvoiceWithExplicitSigningPubkeyBuilder* operator ->() const { return &self; }
853 };
854 class InvoiceWithDerivedSigningPubkeyBuilder {
855 private:
856         LDKInvoiceWithDerivedSigningPubkeyBuilder self;
857 public:
858         InvoiceWithDerivedSigningPubkeyBuilder(const InvoiceWithDerivedSigningPubkeyBuilder&) = delete;
859         InvoiceWithDerivedSigningPubkeyBuilder(InvoiceWithDerivedSigningPubkeyBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceWithDerivedSigningPubkeyBuilder)); }
860         InvoiceWithDerivedSigningPubkeyBuilder(LDKInvoiceWithDerivedSigningPubkeyBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceWithDerivedSigningPubkeyBuilder)); }
861         operator LDKInvoiceWithDerivedSigningPubkeyBuilder() && { LDKInvoiceWithDerivedSigningPubkeyBuilder res = self; memset(&self, 0, sizeof(LDKInvoiceWithDerivedSigningPubkeyBuilder)); return res; }
862         ~InvoiceWithDerivedSigningPubkeyBuilder() { InvoiceWithDerivedSigningPubkeyBuilder_free(self); }
863         InvoiceWithDerivedSigningPubkeyBuilder& operator=(InvoiceWithDerivedSigningPubkeyBuilder&& o) { InvoiceWithDerivedSigningPubkeyBuilder_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceWithDerivedSigningPubkeyBuilder)); return *this; }
864         LDKInvoiceWithDerivedSigningPubkeyBuilder* operator &() { return &self; }
865         LDKInvoiceWithDerivedSigningPubkeyBuilder* operator ->() { return &self; }
866         const LDKInvoiceWithDerivedSigningPubkeyBuilder* operator &() const { return &self; }
867         const LDKInvoiceWithDerivedSigningPubkeyBuilder* operator ->() const { return &self; }
868 };
869 class UnsignedBolt12Invoice {
870 private:
871         LDKUnsignedBolt12Invoice self;
872 public:
873         UnsignedBolt12Invoice(const UnsignedBolt12Invoice&) = delete;
874         UnsignedBolt12Invoice(UnsignedBolt12Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedBolt12Invoice)); }
875         UnsignedBolt12Invoice(LDKUnsignedBolt12Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedBolt12Invoice)); }
876         operator LDKUnsignedBolt12Invoice() && { LDKUnsignedBolt12Invoice res = self; memset(&self, 0, sizeof(LDKUnsignedBolt12Invoice)); return res; }
877         ~UnsignedBolt12Invoice() { UnsignedBolt12Invoice_free(self); }
878         UnsignedBolt12Invoice& operator=(UnsignedBolt12Invoice&& o) { UnsignedBolt12Invoice_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedBolt12Invoice)); return *this; }
879         LDKUnsignedBolt12Invoice* operator &() { return &self; }
880         LDKUnsignedBolt12Invoice* operator ->() { return &self; }
881         const LDKUnsignedBolt12Invoice* operator &() const { return &self; }
882         const LDKUnsignedBolt12Invoice* operator ->() const { return &self; }
883 };
884 class SignBolt12InvoiceFn {
885 private:
886         LDKSignBolt12InvoiceFn self;
887 public:
888         SignBolt12InvoiceFn(const SignBolt12InvoiceFn&) = delete;
889         SignBolt12InvoiceFn(SignBolt12InvoiceFn&& o) : self(o.self) { memset(&o, 0, sizeof(SignBolt12InvoiceFn)); }
890         SignBolt12InvoiceFn(LDKSignBolt12InvoiceFn&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignBolt12InvoiceFn)); }
891         operator LDKSignBolt12InvoiceFn() && { LDKSignBolt12InvoiceFn res = self; memset(&self, 0, sizeof(LDKSignBolt12InvoiceFn)); return res; }
892         ~SignBolt12InvoiceFn() { SignBolt12InvoiceFn_free(self); }
893         SignBolt12InvoiceFn& operator=(SignBolt12InvoiceFn&& o) { SignBolt12InvoiceFn_free(self); self = o.self; memset(&o, 0, sizeof(SignBolt12InvoiceFn)); return *this; }
894         LDKSignBolt12InvoiceFn* operator &() { return &self; }
895         LDKSignBolt12InvoiceFn* operator ->() { return &self; }
896         const LDKSignBolt12InvoiceFn* operator &() const { return &self; }
897         const LDKSignBolt12InvoiceFn* operator ->() const { return &self; }
898         /**
899          *  Signs a [`TaggedHash`] computed over the merkle root of `message`'s TLV stream.
900          */
901         inline LDK::CResult_SchnorrSignatureNoneZ sign_invoice(const struct LDKUnsignedBolt12Invoice *NONNULL_PTR message);
902 };
903 class Bolt12Invoice {
904 private:
905         LDKBolt12Invoice self;
906 public:
907         Bolt12Invoice(const Bolt12Invoice&) = delete;
908         Bolt12Invoice(Bolt12Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12Invoice)); }
909         Bolt12Invoice(LDKBolt12Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12Invoice)); }
910         operator LDKBolt12Invoice() && { LDKBolt12Invoice res = self; memset(&self, 0, sizeof(LDKBolt12Invoice)); return res; }
911         ~Bolt12Invoice() { Bolt12Invoice_free(self); }
912         Bolt12Invoice& operator=(Bolt12Invoice&& o) { Bolt12Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12Invoice)); return *this; }
913         LDKBolt12Invoice* operator &() { return &self; }
914         LDKBolt12Invoice* operator ->() { return &self; }
915         const LDKBolt12Invoice* operator &() const { return &self; }
916         const LDKBolt12Invoice* operator ->() const { return &self; }
917 };
918 class BlindedPayInfo {
919 private:
920         LDKBlindedPayInfo self;
921 public:
922         BlindedPayInfo(const BlindedPayInfo&) = delete;
923         BlindedPayInfo(BlindedPayInfo&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPayInfo)); }
924         BlindedPayInfo(LDKBlindedPayInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPayInfo)); }
925         operator LDKBlindedPayInfo() && { LDKBlindedPayInfo res = self; memset(&self, 0, sizeof(LDKBlindedPayInfo)); return res; }
926         ~BlindedPayInfo() { BlindedPayInfo_free(self); }
927         BlindedPayInfo& operator=(BlindedPayInfo&& o) { BlindedPayInfo_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPayInfo)); return *this; }
928         LDKBlindedPayInfo* operator &() { return &self; }
929         LDKBlindedPayInfo* operator ->() { return &self; }
930         const LDKBlindedPayInfo* operator &() const { return &self; }
931         const LDKBlindedPayInfo* operator ->() const { return &self; }
932 };
933 class DelayedPaymentOutputDescriptor {
934 private:
935         LDKDelayedPaymentOutputDescriptor self;
936 public:
937         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
938         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
939         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
940         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
941         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
942         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
943         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
944         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
945         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
946         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
947 };
948 class StaticPaymentOutputDescriptor {
949 private:
950         LDKStaticPaymentOutputDescriptor self;
951 public:
952         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
953         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
954         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
955         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
956         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
957         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
958         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
959         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
960         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
961         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
962 };
963 class SpendableOutputDescriptor {
964 private:
965         LDKSpendableOutputDescriptor self;
966 public:
967         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
968         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
969         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
970         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
971         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
972         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
973         LDKSpendableOutputDescriptor* operator &() { return &self; }
974         LDKSpendableOutputDescriptor* operator ->() { return &self; }
975         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
976         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
977 };
978 class ChannelDerivationParameters {
979 private:
980         LDKChannelDerivationParameters self;
981 public:
982         ChannelDerivationParameters(const ChannelDerivationParameters&) = delete;
983         ChannelDerivationParameters(ChannelDerivationParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDerivationParameters)); }
984         ChannelDerivationParameters(LDKChannelDerivationParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDerivationParameters)); }
985         operator LDKChannelDerivationParameters() && { LDKChannelDerivationParameters res = self; memset(&self, 0, sizeof(LDKChannelDerivationParameters)); return res; }
986         ~ChannelDerivationParameters() { ChannelDerivationParameters_free(self); }
987         ChannelDerivationParameters& operator=(ChannelDerivationParameters&& o) { ChannelDerivationParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDerivationParameters)); return *this; }
988         LDKChannelDerivationParameters* operator &() { return &self; }
989         LDKChannelDerivationParameters* operator ->() { return &self; }
990         const LDKChannelDerivationParameters* operator &() const { return &self; }
991         const LDKChannelDerivationParameters* operator ->() const { return &self; }
992 };
993 class HTLCDescriptor {
994 private:
995         LDKHTLCDescriptor self;
996 public:
997         HTLCDescriptor(const HTLCDescriptor&) = delete;
998         HTLCDescriptor(HTLCDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDescriptor)); }
999         HTLCDescriptor(LDKHTLCDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDescriptor)); }
1000         operator LDKHTLCDescriptor() && { LDKHTLCDescriptor res = self; memset(&self, 0, sizeof(LDKHTLCDescriptor)); return res; }
1001         ~HTLCDescriptor() { HTLCDescriptor_free(self); }
1002         HTLCDescriptor& operator=(HTLCDescriptor&& o) { HTLCDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDescriptor)); return *this; }
1003         LDKHTLCDescriptor* operator &() { return &self; }
1004         LDKHTLCDescriptor* operator ->() { return &self; }
1005         const LDKHTLCDescriptor* operator &() const { return &self; }
1006         const LDKHTLCDescriptor* operator ->() const { return &self; }
1007 };
1008 class ChannelSigner {
1009 private:
1010         LDKChannelSigner self;
1011 public:
1012         ChannelSigner(const ChannelSigner&) = delete;
1013         ChannelSigner(ChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelSigner)); }
1014         ChannelSigner(LDKChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelSigner)); }
1015         operator LDKChannelSigner() && { LDKChannelSigner res = self; memset(&self, 0, sizeof(LDKChannelSigner)); return res; }
1016         ~ChannelSigner() { ChannelSigner_free(self); }
1017         ChannelSigner& operator=(ChannelSigner&& o) { ChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(ChannelSigner)); return *this; }
1018         LDKChannelSigner* operator &() { return &self; }
1019         LDKChannelSigner* operator ->() { return &self; }
1020         const LDKChannelSigner* operator &() const { return &self; }
1021         const LDKChannelSigner* operator ->() const { return &self; }
1022         /**
1023          *  Gets the per-commitment point for a specific commitment number
1024          * 
1025          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
1026          */
1027         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1028         /**
1029          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1030          * 
1031          *  An external signer implementation should error here if the commitment was already signed
1032          *  and should refuse to sign it in the future.
1033          * 
1034          *  May be called more than once for the same index.
1035          * 
1036          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
1037          */
1038         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1039         /**
1040          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1041          * 
1042          *  This is required in order for the signer to make sure that releasing a commitment
1043          *  secret won't leave us without a broadcastable holder transaction.
1044          *  Policy checks should be implemented in this function, including checking the amount
1045          *  sent to us and checking the HTLCs.
1046          * 
1047          *  The preimages of outbound HTLCs that were fulfilled since the last commitment are provided.
1048          *  A validating signer should ensure that an HTLC output is removed only when the matching
1049          *  preimage is provided, or when the value to holder is restored.
1050          * 
1051          *  Note that all the relevant preimages will be provided, but there may also be additional
1052          *  irrelevant or duplicate preimages.
1053          */
1054         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_ThirtyTwoBytesZ outbound_htlc_preimages);
1055         /**
1056          *  Validate the counterparty's revocation.
1057          * 
1058          *  This is required in order for the signer to make sure that the state has moved
1059          *  forward and it is safe to sign the next counterparty commitment.
1060          */
1061         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
1062         /**
1063          *  Returns an arbitrary identifier describing the set of keys which are provided back to you in
1064          *  some [`SpendableOutputDescriptor`] types. This should be sufficient to identify this
1065          *  [`EcdsaChannelSigner`] object uniquely and lookup or re-derive its keys.
1066          */
1067         inline LDKThirtyTwoBytes channel_keys_id();
1068         /**
1069          *  Set the counterparty static channel data, including basepoints,
1070          *  `counterparty_selected`/`holder_selected_contest_delay` and funding outpoint.
1071          * 
1072          *  This data is static, and will never change for a channel once set. For a given [`ChannelSigner`]
1073          *  instance, LDK will call this method exactly once - either immediately after construction
1074          *  (not including if done via [`SignerProvider::read_chan_signer`]) or when the funding
1075          *  information has been generated.
1076          * 
1077          *  channel_parameters.is_populated() MUST be true.
1078          */
1079         inline void provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
1080 };
1081 class Recipient {
1082 private:
1083         LDKRecipient self;
1084 public:
1085         Recipient(const Recipient&) = delete;
1086         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
1087         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
1088         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
1089         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
1090         LDKRecipient* operator &() { return &self; }
1091         LDKRecipient* operator ->() { return &self; }
1092         const LDKRecipient* operator &() const { return &self; }
1093         const LDKRecipient* operator ->() const { return &self; }
1094 };
1095 class EntropySource {
1096 private:
1097         LDKEntropySource self;
1098 public:
1099         EntropySource(const EntropySource&) = delete;
1100         EntropySource(EntropySource&& o) : self(o.self) { memset(&o, 0, sizeof(EntropySource)); }
1101         EntropySource(LDKEntropySource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEntropySource)); }
1102         operator LDKEntropySource() && { LDKEntropySource res = self; memset(&self, 0, sizeof(LDKEntropySource)); return res; }
1103         ~EntropySource() { EntropySource_free(self); }
1104         EntropySource& operator=(EntropySource&& o) { EntropySource_free(self); self = o.self; memset(&o, 0, sizeof(EntropySource)); return *this; }
1105         LDKEntropySource* operator &() { return &self; }
1106         LDKEntropySource* operator ->() { return &self; }
1107         const LDKEntropySource* operator &() const { return &self; }
1108         const LDKEntropySource* operator ->() const { return &self; }
1109         /**
1110          *  Gets a unique, cryptographically-secure, random 32-byte value. This method must return a
1111          *  different value each time it is called.
1112          */
1113         inline LDKThirtyTwoBytes get_secure_random_bytes();
1114 };
1115 class NodeSigner {
1116 private:
1117         LDKNodeSigner self;
1118 public:
1119         NodeSigner(const NodeSigner&) = delete;
1120         NodeSigner(NodeSigner&& o) : self(o.self) { memset(&o, 0, sizeof(NodeSigner)); }
1121         NodeSigner(LDKNodeSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeSigner)); }
1122         operator LDKNodeSigner() && { LDKNodeSigner res = self; memset(&self, 0, sizeof(LDKNodeSigner)); return res; }
1123         ~NodeSigner() { NodeSigner_free(self); }
1124         NodeSigner& operator=(NodeSigner&& o) { NodeSigner_free(self); self = o.self; memset(&o, 0, sizeof(NodeSigner)); return *this; }
1125         LDKNodeSigner* operator &() { return &self; }
1126         LDKNodeSigner* operator ->() { return &self; }
1127         const LDKNodeSigner* operator &() const { return &self; }
1128         const LDKNodeSigner* operator ->() const { return &self; }
1129         /**
1130          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
1131          * 
1132          *  If the implementor of this trait supports [phantom node payments], then every node that is
1133          *  intended to be included in the phantom invoice route hints must return the same value from
1134          *  this method.
1135          * 
1136          *  This method must return the same value each time it is called.
1137          * 
1138          *  [phantom node payments]: PhantomKeysManager
1139          */
1140         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
1141         /**
1142          *  Get node id based on the provided [`Recipient`].
1143          * 
1144          *  This method must return the same value each time it is called with a given [`Recipient`]
1145          *  parameter.
1146          * 
1147          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1148          */
1149         inline LDK::CResult_PublicKeyNoneZ get_node_id(enum LDKRecipient recipient);
1150         /**
1151          *  Gets the ECDH shared secret of our node secret and `other_key`, multiplying by `tweak` if
1152          *  one is provided. Note that this tweak can be applied to `other_key` instead of our node
1153          *  secret, though this is less efficient.
1154          * 
1155          *  Note that if this fails while attempting to forward an HTLC, LDK will panic. The error
1156          *  should be resolved to allow LDK to resume forwarding HTLCs.
1157          * 
1158          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1159          */
1160         inline LDK::CResult_ThirtyTwoBytesNoneZ ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_BigEndianScalarZ tweak);
1161         /**
1162          *  Sign an invoice.
1163          * 
1164          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
1165          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
1166          *  blindly signing the hash.
1167          * 
1168          *  The `hrp_bytes` are ASCII bytes, while the `invoice_data` is base32.
1169          * 
1170          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
1171          * 
1172          *  Errors if the [`Recipient`] variant is not supported by the implementation.
1173          */
1174         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient);
1175         /**
1176          *  Signs the [`TaggedHash`] of a BOLT 12 invoice request.
1177          * 
1178          *  May be called by a function passed to [`UnsignedInvoiceRequest::sign`] where
1179          *  `invoice_request` is the callee.
1180          * 
1181          *  Implementors may check that the `invoice_request` is expected rather than blindly signing
1182          *  the tagged hash. An `Ok` result should sign `invoice_request.tagged_hash().as_digest()` with
1183          *  the node's signing key or an ephemeral key to preserve privacy, whichever is associated with
1184          *  [`UnsignedInvoiceRequest::payer_id`].
1185          * 
1186          *  [`TaggedHash`]: crate::offers::merkle::TaggedHash
1187          */
1188         inline LDK::CResult_SchnorrSignatureNoneZ sign_bolt12_invoice_request(const struct LDKUnsignedInvoiceRequest *NONNULL_PTR invoice_request);
1189         /**
1190          *  Signs the [`TaggedHash`] of a BOLT 12 invoice.
1191          * 
1192          *  May be called by a function passed to [`UnsignedBolt12Invoice::sign`] where `invoice` is the
1193          *  callee.
1194          * 
1195          *  Implementors may check that the `invoice` is expected rather than blindly signing the tagged
1196          *  hash. An `Ok` result should sign `invoice.tagged_hash().as_digest()` with the node's signing
1197          *  key or an ephemeral key to preserve privacy, whichever is associated with
1198          *  [`UnsignedBolt12Invoice::signing_pubkey`].
1199          * 
1200          *  [`TaggedHash`]: crate::offers::merkle::TaggedHash
1201          */
1202         inline LDK::CResult_SchnorrSignatureNoneZ sign_bolt12_invoice(const struct LDKUnsignedBolt12Invoice *NONNULL_PTR invoice);
1203         /**
1204          *  Sign a gossip message.
1205          * 
1206          *  Note that if this fails, LDK may panic and the message will not be broadcast to the network
1207          *  or a possible channel counterparty. If LDK panics, the error should be resolved to allow the
1208          *  message to be broadcast, as otherwise it may prevent one from receiving funds over the
1209          *  corresponding channel.
1210          */
1211         inline LDK::CResult_ECDSASignatureNoneZ sign_gossip_message(struct LDKUnsignedGossipMessage msg);
1212 };
1213 class OutputSpender {
1214 private:
1215         LDKOutputSpender self;
1216 public:
1217         OutputSpender(const OutputSpender&) = delete;
1218         OutputSpender(OutputSpender&& o) : self(o.self) { memset(&o, 0, sizeof(OutputSpender)); }
1219         OutputSpender(LDKOutputSpender&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutputSpender)); }
1220         operator LDKOutputSpender() && { LDKOutputSpender res = self; memset(&self, 0, sizeof(LDKOutputSpender)); return res; }
1221         ~OutputSpender() { OutputSpender_free(self); }
1222         OutputSpender& operator=(OutputSpender&& o) { OutputSpender_free(self); self = o.self; memset(&o, 0, sizeof(OutputSpender)); return *this; }
1223         LDKOutputSpender* operator &() { return &self; }
1224         LDKOutputSpender* operator ->() { return &self; }
1225         const LDKOutputSpender* operator &() const { return &self; }
1226         const LDKOutputSpender* operator ->() const { return &self; }
1227         /**
1228          *  Creates a [`Transaction`] which spends the given descriptors to the given outputs, plus an
1229          *  output to the given change destination (if sufficient change value remains). The
1230          *  transaction will have a feerate, at least, of the given value.
1231          * 
1232          *  The `locktime` argument is used to set the transaction's locktime. If `None`, the
1233          *  transaction will have a locktime of 0. It it recommended to set this to the current block
1234          *  height to avoid fee sniping, unless you have some specific reason to use a different
1235          *  locktime.
1236          * 
1237          *  Returns `Err(())` if the output value is greater than the input value minus required fee,
1238          *  if a descriptor was duplicated, or if an output descriptor `script_pubkey`
1239          *  does not match the one we can spend.
1240          */
1241         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);
1242 };
1243 class SignerProvider {
1244 private:
1245         LDKSignerProvider self;
1246 public:
1247         SignerProvider(const SignerProvider&) = delete;
1248         SignerProvider(SignerProvider&& o) : self(o.self) { memset(&o, 0, sizeof(SignerProvider)); }
1249         SignerProvider(LDKSignerProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignerProvider)); }
1250         operator LDKSignerProvider() && { LDKSignerProvider res = self; memset(&self, 0, sizeof(LDKSignerProvider)); return res; }
1251         ~SignerProvider() { SignerProvider_free(self); }
1252         SignerProvider& operator=(SignerProvider&& o) { SignerProvider_free(self); self = o.self; memset(&o, 0, sizeof(SignerProvider)); return *this; }
1253         LDKSignerProvider* operator &() { return &self; }
1254         LDKSignerProvider* operator ->() { return &self; }
1255         const LDKSignerProvider* operator &() const { return &self; }
1256         const LDKSignerProvider* operator ->() const { return &self; }
1257         /**
1258          *  Generates a unique `channel_keys_id` that can be used to obtain a [`Self::EcdsaSigner`] through
1259          *  [`SignerProvider::derive_channel_signer`]. The `user_channel_id` is provided to allow
1260          *  implementations of [`SignerProvider`] to maintain a mapping between itself and the generated
1261          *  `channel_keys_id`.
1262          * 
1263          *  This method must return a different value each time it is called.
1264          */
1265         inline LDKThirtyTwoBytes generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id);
1266         /**
1267          *  Derives the private key material backing a `Signer`.
1268          * 
1269          *  To derive a new `Signer`, a fresh `channel_keys_id` should be obtained through
1270          *  [`SignerProvider::generate_channel_keys_id`]. Otherwise, an existing `Signer` can be
1271          *  re-derived from its `channel_keys_id`, which can be obtained through its trait method
1272          *  [`ChannelSigner::channel_keys_id`].
1273          */
1274         inline LDK::WriteableEcdsaChannelSigner derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
1275         /**
1276          *  Reads a [`Signer`] for this [`SignerProvider`] from the given input stream.
1277          *  This is only called during deserialization of other objects which contain
1278          *  [`WriteableEcdsaChannelSigner`]-implementing objects (i.e., [`ChannelMonitor`]s and [`ChannelManager`]s).
1279          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
1280          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
1281          *  you've read all of the provided bytes to ensure no corruption occurred.
1282          * 
1283          *  This method is slowly being phased out -- it will only be called when reading objects
1284          *  written by LDK versions prior to 0.0.113.
1285          * 
1286          *  [`Signer`]: Self::EcdsaSigner
1287          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
1288          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
1289          */
1290         inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
1291         /**
1292          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
1293          * 
1294          *  If this function returns an error, this will result in a channel failing to open.
1295          * 
1296          *  This method should return a different value each time it is called, to avoid linking
1297          *  on-chain funds across channels as controlled to the same user. `channel_keys_id` may be
1298          *  used to derive a unique value for each channel.
1299          */
1300         inline LDK::CResult_CVec_u8ZNoneZ get_destination_script(struct LDKThirtyTwoBytes channel_keys_id);
1301         /**
1302          *  Get a script pubkey which we will send funds to when closing a channel.
1303          * 
1304          *  If this function returns an error, this will result in a channel failing to open or close.
1305          *  In the event of a failure when the counterparty is initiating a close, this can result in a
1306          *  channel force close.
1307          * 
1308          *  This method should return a different value each time it is called, to avoid linking
1309          *  on-chain funds across channels as controlled to the same user.
1310          */
1311         inline LDK::CResult_ShutdownScriptNoneZ get_shutdown_scriptpubkey();
1312 };
1313 class ChangeDestinationSource {
1314 private:
1315         LDKChangeDestinationSource self;
1316 public:
1317         ChangeDestinationSource(const ChangeDestinationSource&) = delete;
1318         ChangeDestinationSource(ChangeDestinationSource&& o) : self(o.self) { memset(&o, 0, sizeof(ChangeDestinationSource)); }
1319         ChangeDestinationSource(LDKChangeDestinationSource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChangeDestinationSource)); }
1320         operator LDKChangeDestinationSource() && { LDKChangeDestinationSource res = self; memset(&self, 0, sizeof(LDKChangeDestinationSource)); return res; }
1321         ~ChangeDestinationSource() { ChangeDestinationSource_free(self); }
1322         ChangeDestinationSource& operator=(ChangeDestinationSource&& o) { ChangeDestinationSource_free(self); self = o.self; memset(&o, 0, sizeof(ChangeDestinationSource)); return *this; }
1323         LDKChangeDestinationSource* operator &() { return &self; }
1324         LDKChangeDestinationSource* operator ->() { return &self; }
1325         const LDKChangeDestinationSource* operator &() const { return &self; }
1326         const LDKChangeDestinationSource* operator ->() const { return &self; }
1327         /**
1328          *  Returns a script pubkey which can be used as a change destination for
1329          *  [`OutputSpender::spend_spendable_outputs`].
1330          * 
1331          *  This method should return a different value each time it is called, to avoid linking
1332          *  on-chain funds controlled to the same user.
1333          */
1334         inline LDK::CResult_CVec_u8ZNoneZ get_change_destination_script();
1335 };
1336 class InMemorySigner {
1337 private:
1338         LDKInMemorySigner self;
1339 public:
1340         InMemorySigner(const InMemorySigner&) = delete;
1341         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
1342         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
1343         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
1344         ~InMemorySigner() { InMemorySigner_free(self); }
1345         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
1346         LDKInMemorySigner* operator &() { return &self; }
1347         LDKInMemorySigner* operator ->() { return &self; }
1348         const LDKInMemorySigner* operator &() const { return &self; }
1349         const LDKInMemorySigner* operator ->() const { return &self; }
1350 };
1351 class KeysManager {
1352 private:
1353         LDKKeysManager self;
1354 public:
1355         KeysManager(const KeysManager&) = delete;
1356         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
1357         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
1358         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
1359         ~KeysManager() { KeysManager_free(self); }
1360         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
1361         LDKKeysManager* operator &() { return &self; }
1362         LDKKeysManager* operator ->() { return &self; }
1363         const LDKKeysManager* operator &() const { return &self; }
1364         const LDKKeysManager* operator ->() const { return &self; }
1365 };
1366 class PhantomKeysManager {
1367 private:
1368         LDKPhantomKeysManager self;
1369 public:
1370         PhantomKeysManager(const PhantomKeysManager&) = delete;
1371         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
1372         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
1373         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
1374         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
1375         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
1376         LDKPhantomKeysManager* operator &() { return &self; }
1377         LDKPhantomKeysManager* operator ->() { return &self; }
1378         const LDKPhantomKeysManager* operator &() const { return &self; }
1379         const LDKPhantomKeysManager* operator ->() const { return &self; }
1380 };
1381 class RandomBytes {
1382 private:
1383         LDKRandomBytes self;
1384 public:
1385         RandomBytes(const RandomBytes&) = delete;
1386         RandomBytes(RandomBytes&& o) : self(o.self) { memset(&o, 0, sizeof(RandomBytes)); }
1387         RandomBytes(LDKRandomBytes&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRandomBytes)); }
1388         operator LDKRandomBytes() && { LDKRandomBytes res = self; memset(&self, 0, sizeof(LDKRandomBytes)); return res; }
1389         ~RandomBytes() { RandomBytes_free(self); }
1390         RandomBytes& operator=(RandomBytes&& o) { RandomBytes_free(self); self = o.self; memset(&o, 0, sizeof(RandomBytes)); return *this; }
1391         LDKRandomBytes* operator &() { return &self; }
1392         LDKRandomBytes* operator ->() { return &self; }
1393         const LDKRandomBytes* operator &() const { return &self; }
1394         const LDKRandomBytes* operator ->() const { return &self; }
1395 };
1396 class BackgroundProcessor {
1397 private:
1398         LDKBackgroundProcessor self;
1399 public:
1400         BackgroundProcessor(const BackgroundProcessor&) = delete;
1401         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
1402         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
1403         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
1404         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
1405         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
1406         LDKBackgroundProcessor* operator &() { return &self; }
1407         LDKBackgroundProcessor* operator ->() { return &self; }
1408         const LDKBackgroundProcessor* operator &() const { return &self; }
1409         const LDKBackgroundProcessor* operator ->() const { return &self; }
1410 };
1411 class GossipSync {
1412 private:
1413         LDKGossipSync self;
1414 public:
1415         GossipSync(const GossipSync&) = delete;
1416         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
1417         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
1418         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
1419         ~GossipSync() { GossipSync_free(self); }
1420         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
1421         LDKGossipSync* operator &() { return &self; }
1422         LDKGossipSync* operator ->() { return &self; }
1423         const LDKGossipSync* operator &() const { return &self; }
1424         const LDKGossipSync* operator ->() const { return &self; }
1425 };
1426 class DefaultRouter {
1427 private:
1428         LDKDefaultRouter self;
1429 public:
1430         DefaultRouter(const DefaultRouter&) = delete;
1431         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
1432         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
1433         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
1434         ~DefaultRouter() { DefaultRouter_free(self); }
1435         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
1436         LDKDefaultRouter* operator &() { return &self; }
1437         LDKDefaultRouter* operator ->() { return &self; }
1438         const LDKDefaultRouter* operator &() const { return &self; }
1439         const LDKDefaultRouter* operator ->() const { return &self; }
1440 };
1441 class Router {
1442 private:
1443         LDKRouter self;
1444 public:
1445         Router(const Router&) = delete;
1446         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
1447         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
1448         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
1449         ~Router() { Router_free(self); }
1450         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
1451         LDKRouter* operator &() { return &self; }
1452         LDKRouter* operator ->() { return &self; }
1453         const LDKRouter* operator &() const { return &self; }
1454         const LDKRouter* operator ->() const { return &self; }
1455         /**
1456          *  Finds a [`Route`] for a payment between the given `payer` and a payee.
1457          * 
1458          *  The `payee` and the payment's value are given in [`RouteParameters::payment_params`]
1459          *  and [`RouteParameters::final_value_msat`], respectively.
1460          * 
1461          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
1462          */
1463         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);
1464         /**
1465          *  Finds a [`Route`] for a payment between the given `payer` and a payee.
1466          * 
1467          *  The `payee` and the payment's value are given in [`RouteParameters::payment_params`]
1468          *  and [`RouteParameters::final_value_msat`], respectively.
1469          * 
1470          *  Includes a [`PaymentHash`] and a [`PaymentId`] to be able to correlate the request with a specific
1471          *  payment.
1472          * 
1473          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
1474          */
1475         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);
1476         /**
1477          *  Creates [`BlindedPath`]s for payment to the `recipient` node. The channels in `first_hops`
1478          *  are assumed to be with the `recipient`'s peers. The payment secret and any constraints are
1479          *  given in `tlvs`.
1480          */
1481         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);
1482 };
1483 class ScorerAccountingForInFlightHtlcs {
1484 private:
1485         LDKScorerAccountingForInFlightHtlcs self;
1486 public:
1487         ScorerAccountingForInFlightHtlcs(const ScorerAccountingForInFlightHtlcs&) = delete;
1488         ScorerAccountingForInFlightHtlcs(ScorerAccountingForInFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); }
1489         ScorerAccountingForInFlightHtlcs(LDKScorerAccountingForInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); }
1490         operator LDKScorerAccountingForInFlightHtlcs() && { LDKScorerAccountingForInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); return res; }
1491         ~ScorerAccountingForInFlightHtlcs() { ScorerAccountingForInFlightHtlcs_free(self); }
1492         ScorerAccountingForInFlightHtlcs& operator=(ScorerAccountingForInFlightHtlcs&& o) { ScorerAccountingForInFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); return *this; }
1493         LDKScorerAccountingForInFlightHtlcs* operator &() { return &self; }
1494         LDKScorerAccountingForInFlightHtlcs* operator ->() { return &self; }
1495         const LDKScorerAccountingForInFlightHtlcs* operator &() const { return &self; }
1496         const LDKScorerAccountingForInFlightHtlcs* operator ->() const { return &self; }
1497 };
1498 class InFlightHtlcs {
1499 private:
1500         LDKInFlightHtlcs self;
1501 public:
1502         InFlightHtlcs(const InFlightHtlcs&) = delete;
1503         InFlightHtlcs(InFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(InFlightHtlcs)); }
1504         InFlightHtlcs(LDKInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInFlightHtlcs)); }
1505         operator LDKInFlightHtlcs() && { LDKInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKInFlightHtlcs)); return res; }
1506         ~InFlightHtlcs() { InFlightHtlcs_free(self); }
1507         InFlightHtlcs& operator=(InFlightHtlcs&& o) { InFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(InFlightHtlcs)); return *this; }
1508         LDKInFlightHtlcs* operator &() { return &self; }
1509         LDKInFlightHtlcs* operator ->() { return &self; }
1510         const LDKInFlightHtlcs* operator &() const { return &self; }
1511         const LDKInFlightHtlcs* operator ->() const { return &self; }
1512 };
1513 class RouteHop {
1514 private:
1515         LDKRouteHop self;
1516 public:
1517         RouteHop(const RouteHop&) = delete;
1518         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
1519         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
1520         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
1521         ~RouteHop() { RouteHop_free(self); }
1522         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
1523         LDKRouteHop* operator &() { return &self; }
1524         LDKRouteHop* operator ->() { return &self; }
1525         const LDKRouteHop* operator &() const { return &self; }
1526         const LDKRouteHop* operator ->() const { return &self; }
1527 };
1528 class BlindedTail {
1529 private:
1530         LDKBlindedTail self;
1531 public:
1532         BlindedTail(const BlindedTail&) = delete;
1533         BlindedTail(BlindedTail&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedTail)); }
1534         BlindedTail(LDKBlindedTail&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedTail)); }
1535         operator LDKBlindedTail() && { LDKBlindedTail res = self; memset(&self, 0, sizeof(LDKBlindedTail)); return res; }
1536         ~BlindedTail() { BlindedTail_free(self); }
1537         BlindedTail& operator=(BlindedTail&& o) { BlindedTail_free(self); self = o.self; memset(&o, 0, sizeof(BlindedTail)); return *this; }
1538         LDKBlindedTail* operator &() { return &self; }
1539         LDKBlindedTail* operator ->() { return &self; }
1540         const LDKBlindedTail* operator &() const { return &self; }
1541         const LDKBlindedTail* operator ->() const { return &self; }
1542 };
1543 class Path {
1544 private:
1545         LDKPath self;
1546 public:
1547         Path(const Path&) = delete;
1548         Path(Path&& o) : self(o.self) { memset(&o, 0, sizeof(Path)); }
1549         Path(LDKPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPath)); }
1550         operator LDKPath() && { LDKPath res = self; memset(&self, 0, sizeof(LDKPath)); return res; }
1551         ~Path() { Path_free(self); }
1552         Path& operator=(Path&& o) { Path_free(self); self = o.self; memset(&o, 0, sizeof(Path)); return *this; }
1553         LDKPath* operator &() { return &self; }
1554         LDKPath* operator ->() { return &self; }
1555         const LDKPath* operator &() const { return &self; }
1556         const LDKPath* operator ->() const { return &self; }
1557 };
1558 class Route {
1559 private:
1560         LDKRoute self;
1561 public:
1562         Route(const Route&) = delete;
1563         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
1564         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
1565         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
1566         ~Route() { Route_free(self); }
1567         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
1568         LDKRoute* operator &() { return &self; }
1569         LDKRoute* operator ->() { return &self; }
1570         const LDKRoute* operator &() const { return &self; }
1571         const LDKRoute* operator ->() const { return &self; }
1572 };
1573 class RouteParameters {
1574 private:
1575         LDKRouteParameters self;
1576 public:
1577         RouteParameters(const RouteParameters&) = delete;
1578         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
1579         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
1580         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
1581         ~RouteParameters() { RouteParameters_free(self); }
1582         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
1583         LDKRouteParameters* operator &() { return &self; }
1584         LDKRouteParameters* operator ->() { return &self; }
1585         const LDKRouteParameters* operator &() const { return &self; }
1586         const LDKRouteParameters* operator ->() const { return &self; }
1587 };
1588 class PaymentParameters {
1589 private:
1590         LDKPaymentParameters self;
1591 public:
1592         PaymentParameters(const PaymentParameters&) = delete;
1593         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
1594         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
1595         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
1596         ~PaymentParameters() { PaymentParameters_free(self); }
1597         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
1598         LDKPaymentParameters* operator &() { return &self; }
1599         LDKPaymentParameters* operator ->() { return &self; }
1600         const LDKPaymentParameters* operator &() const { return &self; }
1601         const LDKPaymentParameters* operator ->() const { return &self; }
1602 };
1603 class Payee {
1604 private:
1605         LDKPayee self;
1606 public:
1607         Payee(const Payee&) = delete;
1608         Payee(Payee&& o) : self(o.self) { memset(&o, 0, sizeof(Payee)); }
1609         Payee(LDKPayee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayee)); }
1610         operator LDKPayee() && { LDKPayee res = self; memset(&self, 0, sizeof(LDKPayee)); return res; }
1611         ~Payee() { Payee_free(self); }
1612         Payee& operator=(Payee&& o) { Payee_free(self); self = o.self; memset(&o, 0, sizeof(Payee)); return *this; }
1613         LDKPayee* operator &() { return &self; }
1614         LDKPayee* operator ->() { return &self; }
1615         const LDKPayee* operator &() const { return &self; }
1616         const LDKPayee* operator ->() const { return &self; }
1617 };
1618 class RouteHint {
1619 private:
1620         LDKRouteHint self;
1621 public:
1622         RouteHint(const RouteHint&) = delete;
1623         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
1624         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
1625         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
1626         ~RouteHint() { RouteHint_free(self); }
1627         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
1628         LDKRouteHint* operator &() { return &self; }
1629         LDKRouteHint* operator ->() { return &self; }
1630         const LDKRouteHint* operator &() const { return &self; }
1631         const LDKRouteHint* operator ->() const { return &self; }
1632 };
1633 class RouteHintHop {
1634 private:
1635         LDKRouteHintHop self;
1636 public:
1637         RouteHintHop(const RouteHintHop&) = delete;
1638         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
1639         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
1640         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
1641         ~RouteHintHop() { RouteHintHop_free(self); }
1642         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
1643         LDKRouteHintHop* operator &() { return &self; }
1644         LDKRouteHintHop* operator ->() { return &self; }
1645         const LDKRouteHintHop* operator &() const { return &self; }
1646         const LDKRouteHintHop* operator ->() const { return &self; }
1647 };
1648 class FirstHopCandidate {
1649 private:
1650         LDKFirstHopCandidate self;
1651 public:
1652         FirstHopCandidate(const FirstHopCandidate&) = delete;
1653         FirstHopCandidate(FirstHopCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(FirstHopCandidate)); }
1654         FirstHopCandidate(LDKFirstHopCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFirstHopCandidate)); }
1655         operator LDKFirstHopCandidate() && { LDKFirstHopCandidate res = self; memset(&self, 0, sizeof(LDKFirstHopCandidate)); return res; }
1656         ~FirstHopCandidate() { FirstHopCandidate_free(self); }
1657         FirstHopCandidate& operator=(FirstHopCandidate&& o) { FirstHopCandidate_free(self); self = o.self; memset(&o, 0, sizeof(FirstHopCandidate)); return *this; }
1658         LDKFirstHopCandidate* operator &() { return &self; }
1659         LDKFirstHopCandidate* operator ->() { return &self; }
1660         const LDKFirstHopCandidate* operator &() const { return &self; }
1661         const LDKFirstHopCandidate* operator ->() const { return &self; }
1662 };
1663 class PublicHopCandidate {
1664 private:
1665         LDKPublicHopCandidate self;
1666 public:
1667         PublicHopCandidate(const PublicHopCandidate&) = delete;
1668         PublicHopCandidate(PublicHopCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(PublicHopCandidate)); }
1669         PublicHopCandidate(LDKPublicHopCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPublicHopCandidate)); }
1670         operator LDKPublicHopCandidate() && { LDKPublicHopCandidate res = self; memset(&self, 0, sizeof(LDKPublicHopCandidate)); return res; }
1671         ~PublicHopCandidate() { PublicHopCandidate_free(self); }
1672         PublicHopCandidate& operator=(PublicHopCandidate&& o) { PublicHopCandidate_free(self); self = o.self; memset(&o, 0, sizeof(PublicHopCandidate)); return *this; }
1673         LDKPublicHopCandidate* operator &() { return &self; }
1674         LDKPublicHopCandidate* operator ->() { return &self; }
1675         const LDKPublicHopCandidate* operator &() const { return &self; }
1676         const LDKPublicHopCandidate* operator ->() const { return &self; }
1677 };
1678 class PrivateHopCandidate {
1679 private:
1680         LDKPrivateHopCandidate self;
1681 public:
1682         PrivateHopCandidate(const PrivateHopCandidate&) = delete;
1683         PrivateHopCandidate(PrivateHopCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateHopCandidate)); }
1684         PrivateHopCandidate(LDKPrivateHopCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateHopCandidate)); }
1685         operator LDKPrivateHopCandidate() && { LDKPrivateHopCandidate res = self; memset(&self, 0, sizeof(LDKPrivateHopCandidate)); return res; }
1686         ~PrivateHopCandidate() { PrivateHopCandidate_free(self); }
1687         PrivateHopCandidate& operator=(PrivateHopCandidate&& o) { PrivateHopCandidate_free(self); self = o.self; memset(&o, 0, sizeof(PrivateHopCandidate)); return *this; }
1688         LDKPrivateHopCandidate* operator &() { return &self; }
1689         LDKPrivateHopCandidate* operator ->() { return &self; }
1690         const LDKPrivateHopCandidate* operator &() const { return &self; }
1691         const LDKPrivateHopCandidate* operator ->() const { return &self; }
1692 };
1693 class BlindedPathCandidate {
1694 private:
1695         LDKBlindedPathCandidate self;
1696 public:
1697         BlindedPathCandidate(const BlindedPathCandidate&) = delete;
1698         BlindedPathCandidate(BlindedPathCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPathCandidate)); }
1699         BlindedPathCandidate(LDKBlindedPathCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPathCandidate)); }
1700         operator LDKBlindedPathCandidate() && { LDKBlindedPathCandidate res = self; memset(&self, 0, sizeof(LDKBlindedPathCandidate)); return res; }
1701         ~BlindedPathCandidate() { BlindedPathCandidate_free(self); }
1702         BlindedPathCandidate& operator=(BlindedPathCandidate&& o) { BlindedPathCandidate_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPathCandidate)); return *this; }
1703         LDKBlindedPathCandidate* operator &() { return &self; }
1704         LDKBlindedPathCandidate* operator ->() { return &self; }
1705         const LDKBlindedPathCandidate* operator &() const { return &self; }
1706         const LDKBlindedPathCandidate* operator ->() const { return &self; }
1707 };
1708 class OneHopBlindedPathCandidate {
1709 private:
1710         LDKOneHopBlindedPathCandidate self;
1711 public:
1712         OneHopBlindedPathCandidate(const OneHopBlindedPathCandidate&) = delete;
1713         OneHopBlindedPathCandidate(OneHopBlindedPathCandidate&& o) : self(o.self) { memset(&o, 0, sizeof(OneHopBlindedPathCandidate)); }
1714         OneHopBlindedPathCandidate(LDKOneHopBlindedPathCandidate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOneHopBlindedPathCandidate)); }
1715         operator LDKOneHopBlindedPathCandidate() && { LDKOneHopBlindedPathCandidate res = self; memset(&self, 0, sizeof(LDKOneHopBlindedPathCandidate)); return res; }
1716         ~OneHopBlindedPathCandidate() { OneHopBlindedPathCandidate_free(self); }
1717         OneHopBlindedPathCandidate& operator=(OneHopBlindedPathCandidate&& o) { OneHopBlindedPathCandidate_free(self); self = o.self; memset(&o, 0, sizeof(OneHopBlindedPathCandidate)); return *this; }
1718         LDKOneHopBlindedPathCandidate* operator &() { return &self; }
1719         LDKOneHopBlindedPathCandidate* operator ->() { return &self; }
1720         const LDKOneHopBlindedPathCandidate* operator &() const { return &self; }
1721         const LDKOneHopBlindedPathCandidate* operator ->() const { return &self; }
1722 };
1723 class CandidateRouteHop {
1724 private:
1725         LDKCandidateRouteHop self;
1726 public:
1727         CandidateRouteHop(const CandidateRouteHop&) = delete;
1728         CandidateRouteHop(CandidateRouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(CandidateRouteHop)); }
1729         CandidateRouteHop(LDKCandidateRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCandidateRouteHop)); }
1730         operator LDKCandidateRouteHop() && { LDKCandidateRouteHop res = self; memset(&self, 0, sizeof(LDKCandidateRouteHop)); return res; }
1731         ~CandidateRouteHop() { CandidateRouteHop_free(self); }
1732         CandidateRouteHop& operator=(CandidateRouteHop&& o) { CandidateRouteHop_free(self); self = o.self; memset(&o, 0, sizeof(CandidateRouteHop)); return *this; }
1733         LDKCandidateRouteHop* operator &() { return &self; }
1734         LDKCandidateRouteHop* operator ->() { return &self; }
1735         const LDKCandidateRouteHop* operator &() const { return &self; }
1736         const LDKCandidateRouteHop* operator ->() const { return &self; }
1737 };
1738 class ScoreLookUp {
1739 private:
1740         LDKScoreLookUp self;
1741 public:
1742         ScoreLookUp(const ScoreLookUp&) = delete;
1743         ScoreLookUp(ScoreLookUp&& o) : self(o.self) { memset(&o, 0, sizeof(ScoreLookUp)); }
1744         ScoreLookUp(LDKScoreLookUp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScoreLookUp)); }
1745         operator LDKScoreLookUp() && { LDKScoreLookUp res = self; memset(&self, 0, sizeof(LDKScoreLookUp)); return res; }
1746         ~ScoreLookUp() { ScoreLookUp_free(self); }
1747         ScoreLookUp& operator=(ScoreLookUp&& o) { ScoreLookUp_free(self); self = o.self; memset(&o, 0, sizeof(ScoreLookUp)); return *this; }
1748         LDKScoreLookUp* operator &() { return &self; }
1749         LDKScoreLookUp* operator ->() { return &self; }
1750         const LDKScoreLookUp* operator &() const { return &self; }
1751         const LDKScoreLookUp* operator ->() const { return &self; }
1752         /**
1753          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1754          *  given channel in the direction from `source` to `target`.
1755          * 
1756          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1757          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1758          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1759          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1760          *  Thus, implementations should be overflow-safe.
1761          */
1762         inline uint64_t channel_penalty_msat(const struct LDKCandidateRouteHop *NONNULL_PTR candidate, struct LDKChannelUsage usage, const struct LDKProbabilisticScoringFeeParameters *NONNULL_PTR score_params);
1763 };
1764 class ScoreUpdate {
1765 private:
1766         LDKScoreUpdate self;
1767 public:
1768         ScoreUpdate(const ScoreUpdate&) = delete;
1769         ScoreUpdate(ScoreUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ScoreUpdate)); }
1770         ScoreUpdate(LDKScoreUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScoreUpdate)); }
1771         operator LDKScoreUpdate() && { LDKScoreUpdate res = self; memset(&self, 0, sizeof(LDKScoreUpdate)); return res; }
1772         ~ScoreUpdate() { ScoreUpdate_free(self); }
1773         ScoreUpdate& operator=(ScoreUpdate&& o) { ScoreUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ScoreUpdate)); return *this; }
1774         LDKScoreUpdate* operator &() { return &self; }
1775         LDKScoreUpdate* operator ->() { return &self; }
1776         const LDKScoreUpdate* operator &() const { return &self; }
1777         const LDKScoreUpdate* operator ->() const { return &self; }
1778         /**
1779          *  Handles updating channel penalties after failing to route through a channel.
1780          */
1781         inline void payment_path_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id, uint64_t duration_since_epoch);
1782         /**
1783          *  Handles updating channel penalties after successfully routing along a path.
1784          */
1785         inline void payment_path_successful(const struct LDKPath *NONNULL_PTR path, uint64_t duration_since_epoch);
1786         /**
1787          *  Handles updating channel penalties after a probe over the given path failed.
1788          */
1789         inline void probe_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id, uint64_t duration_since_epoch);
1790         /**
1791          *  Handles updating channel penalties after a probe over the given path succeeded.
1792          */
1793         inline void probe_successful(const struct LDKPath *NONNULL_PTR path, uint64_t duration_since_epoch);
1794         /**
1795          *  Scorers may wish to reduce their certainty of channel liquidity information over time.
1796          *  Thus, this method is provided to allow scorers to observe the passage of time - the holder
1797          *  of this object should call this method regularly (generally via the
1798          *  `lightning-background-processor` crate).
1799          */
1800         inline void time_passed(uint64_t duration_since_epoch);
1801 };
1802 class Score {
1803 private:
1804         LDKScore self;
1805 public:
1806         Score(const Score&) = delete;
1807         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1808         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1809         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1810         ~Score() { Score_free(self); }
1811         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1812         LDKScore* operator &() { return &self; }
1813         LDKScore* operator ->() { return &self; }
1814         const LDKScore* operator &() const { return &self; }
1815         const LDKScore* operator ->() const { return &self; }
1816 };
1817 class LockableScore {
1818 private:
1819         LDKLockableScore self;
1820 public:
1821         LockableScore(const LockableScore&) = delete;
1822         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1823         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1824         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1825         ~LockableScore() { LockableScore_free(self); }
1826         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1827         LDKLockableScore* operator &() { return &self; }
1828         LDKLockableScore* operator ->() { return &self; }
1829         const LDKLockableScore* operator &() const { return &self; }
1830         const LDKLockableScore* operator ->() const { return &self; }
1831         /**
1832          *  Returns read locked scorer.
1833          */
1834         inline LDK::ScoreLookUp read_lock();
1835         /**
1836          *  Returns write locked scorer.
1837          */
1838         inline LDK::ScoreUpdate write_lock();
1839 };
1840 class WriteableScore {
1841 private:
1842         LDKWriteableScore self;
1843 public:
1844         WriteableScore(const WriteableScore&) = delete;
1845         WriteableScore(WriteableScore&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableScore)); }
1846         WriteableScore(LDKWriteableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableScore)); }
1847         operator LDKWriteableScore() && { LDKWriteableScore res = self; memset(&self, 0, sizeof(LDKWriteableScore)); return res; }
1848         ~WriteableScore() { WriteableScore_free(self); }
1849         WriteableScore& operator=(WriteableScore&& o) { WriteableScore_free(self); self = o.self; memset(&o, 0, sizeof(WriteableScore)); return *this; }
1850         LDKWriteableScore* operator &() { return &self; }
1851         LDKWriteableScore* operator ->() { return &self; }
1852         const LDKWriteableScore* operator &() const { return &self; }
1853         const LDKWriteableScore* operator ->() const { return &self; }
1854 };
1855 class MultiThreadedLockableScore {
1856 private:
1857         LDKMultiThreadedLockableScore self;
1858 public:
1859         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1860         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1861         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1862         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1863         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1864         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1865         LDKMultiThreadedLockableScore* operator &() { return &self; }
1866         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1867         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1868         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1869 };
1870 class MultiThreadedScoreLockRead {
1871 private:
1872         LDKMultiThreadedScoreLockRead self;
1873 public:
1874         MultiThreadedScoreLockRead(const MultiThreadedScoreLockRead&) = delete;
1875         MultiThreadedScoreLockRead(MultiThreadedScoreLockRead&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLockRead)); }
1876         MultiThreadedScoreLockRead(LDKMultiThreadedScoreLockRead&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLockRead)); }
1877         operator LDKMultiThreadedScoreLockRead() && { LDKMultiThreadedScoreLockRead res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLockRead)); return res; }
1878         ~MultiThreadedScoreLockRead() { MultiThreadedScoreLockRead_free(self); }
1879         MultiThreadedScoreLockRead& operator=(MultiThreadedScoreLockRead&& o) { MultiThreadedScoreLockRead_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLockRead)); return *this; }
1880         LDKMultiThreadedScoreLockRead* operator &() { return &self; }
1881         LDKMultiThreadedScoreLockRead* operator ->() { return &self; }
1882         const LDKMultiThreadedScoreLockRead* operator &() const { return &self; }
1883         const LDKMultiThreadedScoreLockRead* operator ->() const { return &self; }
1884 };
1885 class MultiThreadedScoreLockWrite {
1886 private:
1887         LDKMultiThreadedScoreLockWrite self;
1888 public:
1889         MultiThreadedScoreLockWrite(const MultiThreadedScoreLockWrite&) = delete;
1890         MultiThreadedScoreLockWrite(MultiThreadedScoreLockWrite&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLockWrite)); }
1891         MultiThreadedScoreLockWrite(LDKMultiThreadedScoreLockWrite&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLockWrite)); }
1892         operator LDKMultiThreadedScoreLockWrite() && { LDKMultiThreadedScoreLockWrite res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLockWrite)); return res; }
1893         ~MultiThreadedScoreLockWrite() { MultiThreadedScoreLockWrite_free(self); }
1894         MultiThreadedScoreLockWrite& operator=(MultiThreadedScoreLockWrite&& o) { MultiThreadedScoreLockWrite_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLockWrite)); return *this; }
1895         LDKMultiThreadedScoreLockWrite* operator &() { return &self; }
1896         LDKMultiThreadedScoreLockWrite* operator ->() { return &self; }
1897         const LDKMultiThreadedScoreLockWrite* operator &() const { return &self; }
1898         const LDKMultiThreadedScoreLockWrite* operator ->() const { return &self; }
1899 };
1900 class ChannelUsage {
1901 private:
1902         LDKChannelUsage self;
1903 public:
1904         ChannelUsage(const ChannelUsage&) = delete;
1905         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1906         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1907         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1908         ~ChannelUsage() { ChannelUsage_free(self); }
1909         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1910         LDKChannelUsage* operator &() { return &self; }
1911         LDKChannelUsage* operator ->() { return &self; }
1912         const LDKChannelUsage* operator &() const { return &self; }
1913         const LDKChannelUsage* operator ->() const { return &self; }
1914 };
1915 class FixedPenaltyScorer {
1916 private:
1917         LDKFixedPenaltyScorer self;
1918 public:
1919         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1920         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1921         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1922         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1923         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1924         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1925         LDKFixedPenaltyScorer* operator &() { return &self; }
1926         LDKFixedPenaltyScorer* operator ->() { return &self; }
1927         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1928         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1929 };
1930 class ProbabilisticScorer {
1931 private:
1932         LDKProbabilisticScorer self;
1933 public:
1934         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1935         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1936         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1937         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1938         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1939         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1940         LDKProbabilisticScorer* operator &() { return &self; }
1941         LDKProbabilisticScorer* operator ->() { return &self; }
1942         const LDKProbabilisticScorer* operator &() const { return &self; }
1943         const LDKProbabilisticScorer* operator ->() const { return &self; }
1944 };
1945 class ProbabilisticScoringFeeParameters {
1946 private:
1947         LDKProbabilisticScoringFeeParameters self;
1948 public:
1949         ProbabilisticScoringFeeParameters(const ProbabilisticScoringFeeParameters&) = delete;
1950         ProbabilisticScoringFeeParameters(ProbabilisticScoringFeeParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringFeeParameters)); }
1951         ProbabilisticScoringFeeParameters(LDKProbabilisticScoringFeeParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringFeeParameters)); }
1952         operator LDKProbabilisticScoringFeeParameters() && { LDKProbabilisticScoringFeeParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringFeeParameters)); return res; }
1953         ~ProbabilisticScoringFeeParameters() { ProbabilisticScoringFeeParameters_free(self); }
1954         ProbabilisticScoringFeeParameters& operator=(ProbabilisticScoringFeeParameters&& o) { ProbabilisticScoringFeeParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringFeeParameters)); return *this; }
1955         LDKProbabilisticScoringFeeParameters* operator &() { return &self; }
1956         LDKProbabilisticScoringFeeParameters* operator ->() { return &self; }
1957         const LDKProbabilisticScoringFeeParameters* operator &() const { return &self; }
1958         const LDKProbabilisticScoringFeeParameters* operator ->() const { return &self; }
1959 };
1960 class ProbabilisticScoringDecayParameters {
1961 private:
1962         LDKProbabilisticScoringDecayParameters self;
1963 public:
1964         ProbabilisticScoringDecayParameters(const ProbabilisticScoringDecayParameters&) = delete;
1965         ProbabilisticScoringDecayParameters(ProbabilisticScoringDecayParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringDecayParameters)); }
1966         ProbabilisticScoringDecayParameters(LDKProbabilisticScoringDecayParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringDecayParameters)); }
1967         operator LDKProbabilisticScoringDecayParameters() && { LDKProbabilisticScoringDecayParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringDecayParameters)); return res; }
1968         ~ProbabilisticScoringDecayParameters() { ProbabilisticScoringDecayParameters_free(self); }
1969         ProbabilisticScoringDecayParameters& operator=(ProbabilisticScoringDecayParameters&& o) { ProbabilisticScoringDecayParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringDecayParameters)); return *this; }
1970         LDKProbabilisticScoringDecayParameters* operator &() { return &self; }
1971         LDKProbabilisticScoringDecayParameters* operator ->() { return &self; }
1972         const LDKProbabilisticScoringDecayParameters* operator &() const { return &self; }
1973         const LDKProbabilisticScoringDecayParameters* operator ->() const { return &self; }
1974 };
1975 class BestBlock {
1976 private:
1977         LDKBestBlock self;
1978 public:
1979         BestBlock(const BestBlock&) = delete;
1980         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
1981         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
1982         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
1983         ~BestBlock() { BestBlock_free(self); }
1984         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
1985         LDKBestBlock* operator &() { return &self; }
1986         LDKBestBlock* operator ->() { return &self; }
1987         const LDKBestBlock* operator &() const { return &self; }
1988         const LDKBestBlock* operator ->() const { return &self; }
1989 };
1990 class Listen {
1991 private:
1992         LDKListen self;
1993 public:
1994         Listen(const Listen&) = delete;
1995         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
1996         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
1997         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1998         ~Listen() { Listen_free(self); }
1999         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
2000         LDKListen* operator &() { return &self; }
2001         LDKListen* operator ->() { return &self; }
2002         const LDKListen* operator &() const { return &self; }
2003         const LDKListen* operator ->() const { return &self; }
2004         /**
2005          *  Notifies the listener that a block was added at the given height, with the transaction data
2006          *  possibly filtered.
2007          */
2008         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
2009         /**
2010          *  Notifies the listener that a block was added at the given height.
2011          */
2012         inline void block_connected(struct LDKu8slice block, uint32_t height);
2013         /**
2014          *  Notifies the listener that a block was removed at the given height.
2015          */
2016         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
2017 };
2018 class Confirm {
2019 private:
2020         LDKConfirm self;
2021 public:
2022         Confirm(const Confirm&) = delete;
2023         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
2024         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
2025         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
2026         ~Confirm() { Confirm_free(self); }
2027         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
2028         LDKConfirm* operator &() { return &self; }
2029         LDKConfirm* operator ->() { return &self; }
2030         const LDKConfirm* operator &() const { return &self; }
2031         const LDKConfirm* operator ->() const { return &self; }
2032         /**
2033          *  Notifies LDK of transactions confirmed in a block with a given header and height.
2034          * 
2035          *  Must be called for any transactions registered by [`Filter::register_tx`] or any
2036          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
2037          *  appearing in the same block do not need to be included in the same call; instead, multiple
2038          *  calls with additional transactions may be made so long as they are made in [chain order].
2039          * 
2040          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
2041          *  in the event of a chain reorganization, it must not be called with a `header` that is no
2042          *  longer in the chain as of the last call to [`best_block_updated`].
2043          * 
2044          *  [chain order]: Confirm#order
2045          *  [`best_block_updated`]: Self::best_block_updated
2046          */
2047         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
2048         /**
2049          *  Notifies LDK of a transaction that is no longer confirmed as result of a chain reorganization.
2050          * 
2051          *  Must be called for any transaction returned by [`get_relevant_txids`] if it has been
2052          *  reorganized out of the best chain or if it is no longer confirmed in the block with the
2053          *  given block hash. Once called, the given transaction will not be returned
2054          *  by [`get_relevant_txids`], unless it has been reconfirmed via [`transactions_confirmed`].
2055          * 
2056          *  [`get_relevant_txids`]: Self::get_relevant_txids
2057          *  [`transactions_confirmed`]: Self::transactions_confirmed
2058          */
2059         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
2060         /**
2061          *  Notifies LDK of an update to the best header connected at the given height.
2062          * 
2063          *  Must be called whenever a new chain tip becomes available. May be skipped for intermediary
2064          *  blocks.
2065          */
2066         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
2067         /**
2068          *  Returns transactions that must be monitored for reorganization out of the chain along
2069          *  with the height and the hash of the block as part of which it had been previously confirmed.
2070          * 
2071          *  Note that the returned `Option<BlockHash>` might be `None` for channels created with LDK
2072          *  0.0.112 and prior, in which case you need to manually track previous confirmations.
2073          * 
2074          *  Will include any transactions passed to [`transactions_confirmed`] that have insufficient
2075          *  confirmations to be safe from a chain reorganization. Will not include any transactions
2076          *  passed to [`transaction_unconfirmed`], unless later reconfirmed.
2077          * 
2078          *  Must be called to determine the subset of transactions that must be monitored for
2079          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
2080          *  other interface methods. Thus, this is useful to determine which transactions must be
2081          *  given to [`transaction_unconfirmed`].
2082          * 
2083          *  If any of the returned transactions are confirmed in a block other than the one with the
2084          *  given hash at the given height, they need to be unconfirmed and reconfirmed via
2085          *  [`transaction_unconfirmed`] and [`transactions_confirmed`], respectively.
2086          * 
2087          *  [`transactions_confirmed`]: Self::transactions_confirmed
2088          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
2089          */
2090         inline LDK::CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ get_relevant_txids();
2091 };
2092 class ChannelMonitorUpdateStatus {
2093 private:
2094         LDKChannelMonitorUpdateStatus self;
2095 public:
2096         ChannelMonitorUpdateStatus(const ChannelMonitorUpdateStatus&) = delete;
2097         ChannelMonitorUpdateStatus(ChannelMonitorUpdateStatus&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); }
2098         ChannelMonitorUpdateStatus(LDKChannelMonitorUpdateStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateStatus)); }
2099         operator LDKChannelMonitorUpdateStatus() && { LDKChannelMonitorUpdateStatus res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateStatus)); return res; }
2100         ChannelMonitorUpdateStatus& operator=(ChannelMonitorUpdateStatus&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); return *this; }
2101         LDKChannelMonitorUpdateStatus* operator &() { return &self; }
2102         LDKChannelMonitorUpdateStatus* operator ->() { return &self; }
2103         const LDKChannelMonitorUpdateStatus* operator &() const { return &self; }
2104         const LDKChannelMonitorUpdateStatus* operator ->() const { return &self; }
2105 };
2106 class Watch {
2107 private:
2108         LDKWatch self;
2109 public:
2110         Watch(const Watch&) = delete;
2111         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
2112         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
2113         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
2114         ~Watch() { Watch_free(self); }
2115         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
2116         LDKWatch* operator &() { return &self; }
2117         LDKWatch* operator ->() { return &self; }
2118         const LDKWatch* operator &() const { return &self; }
2119         const LDKWatch* operator ->() const { return &self; }
2120         /**
2121          *  Watches a channel identified by `funding_txo` using `monitor`.
2122          * 
2123          *  Implementations are responsible for watching the chain for the funding transaction along
2124          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
2125          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
2126          * 
2127          *  A return of `Err(())` indicates that the channel should immediately be force-closed without
2128          *  broadcasting the funding transaction.
2129          * 
2130          *  If the given `funding_txo` has previously been registered via `watch_channel`, `Err(())`
2131          *  must be returned.
2132          * 
2133          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
2134          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
2135          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
2136          */
2137         inline LDK::CResult_ChannelMonitorUpdateStatusNoneZ watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
2138         /**
2139          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
2140          * 
2141          *  Implementations must call [`ChannelMonitor::update_monitor`] with the given update. This
2142          *  may fail (returning an `Err(())`), in which case this should return
2143          *  [`ChannelMonitorUpdateStatus::InProgress`] (and the update should never complete). This
2144          *  generally implies the channel has been closed (either by the funding outpoint being spent
2145          *  on-chain or the [`ChannelMonitor`] having decided to do so and broadcasted a transaction),
2146          *  and the [`ChannelManager`] state will be updated once it sees the funding spend on-chain.
2147          * 
2148          *  In general, persistence failures should be retried after returning
2149          *  [`ChannelMonitorUpdateStatus::InProgress`] and eventually complete. If a failure truly
2150          *  cannot be retried, the node should shut down immediately after returning
2151          *  [`ChannelMonitorUpdateStatus::UnrecoverableError`], see its documentation for more info.
2152          * 
2153          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2154          */
2155         inline LDK::ChannelMonitorUpdateStatus update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update);
2156         /**
2157          *  Returns any monitor events since the last call. Subsequent calls must only return new
2158          *  events.
2159          * 
2160          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
2161          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
2162          *  to disk.
2163          * 
2164          *  For details on asynchronous [`ChannelMonitor`] updating and returning
2165          *  [`MonitorEvent::Completed`] here, see [`ChannelMonitorUpdateStatus::InProgress`].
2166          */
2167         inline LDK::CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ release_pending_monitor_events();
2168 };
2169 class Filter {
2170 private:
2171         LDKFilter self;
2172 public:
2173         Filter(const Filter&) = delete;
2174         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
2175         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
2176         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
2177         ~Filter() { Filter_free(self); }
2178         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
2179         LDKFilter* operator &() { return &self; }
2180         LDKFilter* operator ->() { return &self; }
2181         const LDKFilter* operator &() const { return &self; }
2182         const LDKFilter* operator ->() const { return &self; }
2183         /**
2184          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
2185          *  a spending condition.
2186          */
2187         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
2188         /**
2189          *  Registers interest in spends of a transaction output.
2190          * 
2191          *  Note that this method might be called during processing of a new block. You therefore need
2192          *  to ensure that also dependent output spents within an already connected block are correctly
2193          *  handled, e.g., by re-scanning the block in question whenever new outputs have been
2194          *  registered mid-processing.
2195          */
2196         inline void register_output(struct LDKWatchedOutput output);
2197 };
2198 class WatchedOutput {
2199 private:
2200         LDKWatchedOutput self;
2201 public:
2202         WatchedOutput(const WatchedOutput&) = delete;
2203         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
2204         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
2205         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
2206         ~WatchedOutput() { WatchedOutput_free(self); }
2207         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
2208         LDKWatchedOutput* operator &() { return &self; }
2209         LDKWatchedOutput* operator ->() { return &self; }
2210         const LDKWatchedOutput* operator &() const { return &self; }
2211         const LDKWatchedOutput* operator ->() const { return &self; }
2212 };
2213 class InitFeatures {
2214 private:
2215         LDKInitFeatures self;
2216 public:
2217         InitFeatures(const InitFeatures&) = delete;
2218         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
2219         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
2220         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
2221         ~InitFeatures() { InitFeatures_free(self); }
2222         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
2223         LDKInitFeatures* operator &() { return &self; }
2224         LDKInitFeatures* operator ->() { return &self; }
2225         const LDKInitFeatures* operator &() const { return &self; }
2226         const LDKInitFeatures* operator ->() const { return &self; }
2227 };
2228 class NodeFeatures {
2229 private:
2230         LDKNodeFeatures self;
2231 public:
2232         NodeFeatures(const NodeFeatures&) = delete;
2233         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
2234         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
2235         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
2236         ~NodeFeatures() { NodeFeatures_free(self); }
2237         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
2238         LDKNodeFeatures* operator &() { return &self; }
2239         LDKNodeFeatures* operator ->() { return &self; }
2240         const LDKNodeFeatures* operator &() const { return &self; }
2241         const LDKNodeFeatures* operator ->() const { return &self; }
2242 };
2243 class ChannelFeatures {
2244 private:
2245         LDKChannelFeatures self;
2246 public:
2247         ChannelFeatures(const ChannelFeatures&) = delete;
2248         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
2249         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
2250         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
2251         ~ChannelFeatures() { ChannelFeatures_free(self); }
2252         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
2253         LDKChannelFeatures* operator &() { return &self; }
2254         LDKChannelFeatures* operator ->() { return &self; }
2255         const LDKChannelFeatures* operator &() const { return &self; }
2256         const LDKChannelFeatures* operator ->() const { return &self; }
2257 };
2258 class Bolt11InvoiceFeatures {
2259 private:
2260         LDKBolt11InvoiceFeatures self;
2261 public:
2262         Bolt11InvoiceFeatures(const Bolt11InvoiceFeatures&) = delete;
2263         Bolt11InvoiceFeatures(Bolt11InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11InvoiceFeatures)); }
2264         Bolt11InvoiceFeatures(LDKBolt11InvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11InvoiceFeatures)); }
2265         operator LDKBolt11InvoiceFeatures() && { LDKBolt11InvoiceFeatures res = self; memset(&self, 0, sizeof(LDKBolt11InvoiceFeatures)); return res; }
2266         ~Bolt11InvoiceFeatures() { Bolt11InvoiceFeatures_free(self); }
2267         Bolt11InvoiceFeatures& operator=(Bolt11InvoiceFeatures&& o) { Bolt11InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11InvoiceFeatures)); return *this; }
2268         LDKBolt11InvoiceFeatures* operator &() { return &self; }
2269         LDKBolt11InvoiceFeatures* operator ->() { return &self; }
2270         const LDKBolt11InvoiceFeatures* operator &() const { return &self; }
2271         const LDKBolt11InvoiceFeatures* operator ->() const { return &self; }
2272 };
2273 class OfferFeatures {
2274 private:
2275         LDKOfferFeatures self;
2276 public:
2277         OfferFeatures(const OfferFeatures&) = delete;
2278         OfferFeatures(OfferFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(OfferFeatures)); }
2279         OfferFeatures(LDKOfferFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferFeatures)); }
2280         operator LDKOfferFeatures() && { LDKOfferFeatures res = self; memset(&self, 0, sizeof(LDKOfferFeatures)); return res; }
2281         ~OfferFeatures() { OfferFeatures_free(self); }
2282         OfferFeatures& operator=(OfferFeatures&& o) { OfferFeatures_free(self); self = o.self; memset(&o, 0, sizeof(OfferFeatures)); return *this; }
2283         LDKOfferFeatures* operator &() { return &self; }
2284         LDKOfferFeatures* operator ->() { return &self; }
2285         const LDKOfferFeatures* operator &() const { return &self; }
2286         const LDKOfferFeatures* operator ->() const { return &self; }
2287 };
2288 class InvoiceRequestFeatures {
2289 private:
2290         LDKInvoiceRequestFeatures self;
2291 public:
2292         InvoiceRequestFeatures(const InvoiceRequestFeatures&) = delete;
2293         InvoiceRequestFeatures(InvoiceRequestFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestFeatures)); }
2294         InvoiceRequestFeatures(LDKInvoiceRequestFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestFeatures)); }
2295         operator LDKInvoiceRequestFeatures() && { LDKInvoiceRequestFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceRequestFeatures)); return res; }
2296         ~InvoiceRequestFeatures() { InvoiceRequestFeatures_free(self); }
2297         InvoiceRequestFeatures& operator=(InvoiceRequestFeatures&& o) { InvoiceRequestFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestFeatures)); return *this; }
2298         LDKInvoiceRequestFeatures* operator &() { return &self; }
2299         LDKInvoiceRequestFeatures* operator ->() { return &self; }
2300         const LDKInvoiceRequestFeatures* operator &() const { return &self; }
2301         const LDKInvoiceRequestFeatures* operator ->() const { return &self; }
2302 };
2303 class Bolt12InvoiceFeatures {
2304 private:
2305         LDKBolt12InvoiceFeatures self;
2306 public:
2307         Bolt12InvoiceFeatures(const Bolt12InvoiceFeatures&) = delete;
2308         Bolt12InvoiceFeatures(Bolt12InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); }
2309         Bolt12InvoiceFeatures(LDKBolt12InvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12InvoiceFeatures)); }
2310         operator LDKBolt12InvoiceFeatures() && { LDKBolt12InvoiceFeatures res = self; memset(&self, 0, sizeof(LDKBolt12InvoiceFeatures)); return res; }
2311         ~Bolt12InvoiceFeatures() { Bolt12InvoiceFeatures_free(self); }
2312         Bolt12InvoiceFeatures& operator=(Bolt12InvoiceFeatures&& o) { Bolt12InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); return *this; }
2313         LDKBolt12InvoiceFeatures* operator &() { return &self; }
2314         LDKBolt12InvoiceFeatures* operator ->() { return &self; }
2315         const LDKBolt12InvoiceFeatures* operator &() const { return &self; }
2316         const LDKBolt12InvoiceFeatures* operator ->() const { return &self; }
2317 };
2318 class BlindedHopFeatures {
2319 private:
2320         LDKBlindedHopFeatures self;
2321 public:
2322         BlindedHopFeatures(const BlindedHopFeatures&) = delete;
2323         BlindedHopFeatures(BlindedHopFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHopFeatures)); }
2324         BlindedHopFeatures(LDKBlindedHopFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHopFeatures)); }
2325         operator LDKBlindedHopFeatures() && { LDKBlindedHopFeatures res = self; memset(&self, 0, sizeof(LDKBlindedHopFeatures)); return res; }
2326         ~BlindedHopFeatures() { BlindedHopFeatures_free(self); }
2327         BlindedHopFeatures& operator=(BlindedHopFeatures&& o) { BlindedHopFeatures_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHopFeatures)); return *this; }
2328         LDKBlindedHopFeatures* operator &() { return &self; }
2329         LDKBlindedHopFeatures* operator ->() { return &self; }
2330         const LDKBlindedHopFeatures* operator &() const { return &self; }
2331         const LDKBlindedHopFeatures* operator ->() const { return &self; }
2332 };
2333 class ChannelTypeFeatures {
2334 private:
2335         LDKChannelTypeFeatures self;
2336 public:
2337         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
2338         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
2339         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
2340         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
2341         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
2342         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
2343         LDKChannelTypeFeatures* operator &() { return &self; }
2344         LDKChannelTypeFeatures* operator ->() { return &self; }
2345         const LDKChannelTypeFeatures* operator &() const { return &self; }
2346         const LDKChannelTypeFeatures* operator ->() const { return &self; }
2347 };
2348 class OfferId {
2349 private:
2350         LDKOfferId self;
2351 public:
2352         OfferId(const OfferId&) = delete;
2353         OfferId(OfferId&& o) : self(o.self) { memset(&o, 0, sizeof(OfferId)); }
2354         OfferId(LDKOfferId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferId)); }
2355         operator LDKOfferId() && { LDKOfferId res = self; memset(&self, 0, sizeof(LDKOfferId)); return res; }
2356         ~OfferId() { OfferId_free(self); }
2357         OfferId& operator=(OfferId&& o) { OfferId_free(self); self = o.self; memset(&o, 0, sizeof(OfferId)); return *this; }
2358         LDKOfferId* operator &() { return &self; }
2359         LDKOfferId* operator ->() { return &self; }
2360         const LDKOfferId* operator &() const { return &self; }
2361         const LDKOfferId* operator ->() const { return &self; }
2362 };
2363 class Offer {
2364 private:
2365         LDKOffer self;
2366 public:
2367         Offer(const Offer&) = delete;
2368         Offer(Offer&& o) : self(o.self) { memset(&o, 0, sizeof(Offer)); }
2369         Offer(LDKOffer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffer)); }
2370         operator LDKOffer() && { LDKOffer res = self; memset(&self, 0, sizeof(LDKOffer)); return res; }
2371         ~Offer() { Offer_free(self); }
2372         Offer& operator=(Offer&& o) { Offer_free(self); self = o.self; memset(&o, 0, sizeof(Offer)); return *this; }
2373         LDKOffer* operator &() { return &self; }
2374         LDKOffer* operator ->() { return &self; }
2375         const LDKOffer* operator &() const { return &self; }
2376         const LDKOffer* operator ->() const { return &self; }
2377 };
2378 class Amount {
2379 private:
2380         LDKAmount self;
2381 public:
2382         Amount(const Amount&) = delete;
2383         Amount(Amount&& o) : self(o.self) { memset(&o, 0, sizeof(Amount)); }
2384         Amount(LDKAmount&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAmount)); }
2385         operator LDKAmount() && { LDKAmount res = self; memset(&self, 0, sizeof(LDKAmount)); return res; }
2386         ~Amount() { Amount_free(self); }
2387         Amount& operator=(Amount&& o) { Amount_free(self); self = o.self; memset(&o, 0, sizeof(Amount)); return *this; }
2388         LDKAmount* operator &() { return &self; }
2389         LDKAmount* operator ->() { return &self; }
2390         const LDKAmount* operator &() const { return &self; }
2391         const LDKAmount* operator ->() const { return &self; }
2392 };
2393 class Quantity {
2394 private:
2395         LDKQuantity self;
2396 public:
2397         Quantity(const Quantity&) = delete;
2398         Quantity(Quantity&& o) : self(o.self) { memset(&o, 0, sizeof(Quantity)); }
2399         Quantity(LDKQuantity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQuantity)); }
2400         operator LDKQuantity() && { LDKQuantity res = self; memset(&self, 0, sizeof(LDKQuantity)); return res; }
2401         ~Quantity() { Quantity_free(self); }
2402         Quantity& operator=(Quantity&& o) { Quantity_free(self); self = o.self; memset(&o, 0, sizeof(Quantity)); return *this; }
2403         LDKQuantity* operator &() { return &self; }
2404         LDKQuantity* operator ->() { return &self; }
2405         const LDKQuantity* operator &() const { return &self; }
2406         const LDKQuantity* operator ->() const { return &self; }
2407 };
2408 class NodeId {
2409 private:
2410         LDKNodeId self;
2411 public:
2412         NodeId(const NodeId&) = delete;
2413         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
2414         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
2415         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
2416         ~NodeId() { NodeId_free(self); }
2417         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
2418         LDKNodeId* operator &() { return &self; }
2419         LDKNodeId* operator ->() { return &self; }
2420         const LDKNodeId* operator &() const { return &self; }
2421         const LDKNodeId* operator ->() const { return &self; }
2422 };
2423 class NetworkGraph {
2424 private:
2425         LDKNetworkGraph self;
2426 public:
2427         NetworkGraph(const NetworkGraph&) = delete;
2428         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
2429         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
2430         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
2431         ~NetworkGraph() { NetworkGraph_free(self); }
2432         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
2433         LDKNetworkGraph* operator &() { return &self; }
2434         LDKNetworkGraph* operator ->() { return &self; }
2435         const LDKNetworkGraph* operator &() const { return &self; }
2436         const LDKNetworkGraph* operator ->() const { return &self; }
2437 };
2438 class ReadOnlyNetworkGraph {
2439 private:
2440         LDKReadOnlyNetworkGraph self;
2441 public:
2442         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
2443         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
2444         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
2445         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
2446         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
2447         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
2448         LDKReadOnlyNetworkGraph* operator &() { return &self; }
2449         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
2450         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
2451         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
2452 };
2453 class NetworkUpdate {
2454 private:
2455         LDKNetworkUpdate self;
2456 public:
2457         NetworkUpdate(const NetworkUpdate&) = delete;
2458         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
2459         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
2460         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
2461         ~NetworkUpdate() { NetworkUpdate_free(self); }
2462         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
2463         LDKNetworkUpdate* operator &() { return &self; }
2464         LDKNetworkUpdate* operator ->() { return &self; }
2465         const LDKNetworkUpdate* operator &() const { return &self; }
2466         const LDKNetworkUpdate* operator ->() const { return &self; }
2467 };
2468 class P2PGossipSync {
2469 private:
2470         LDKP2PGossipSync self;
2471 public:
2472         P2PGossipSync(const P2PGossipSync&) = delete;
2473         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
2474         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
2475         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
2476         ~P2PGossipSync() { P2PGossipSync_free(self); }
2477         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
2478         LDKP2PGossipSync* operator &() { return &self; }
2479         LDKP2PGossipSync* operator ->() { return &self; }
2480         const LDKP2PGossipSync* operator &() const { return &self; }
2481         const LDKP2PGossipSync* operator ->() const { return &self; }
2482 };
2483 class ChannelUpdateInfo {
2484 private:
2485         LDKChannelUpdateInfo self;
2486 public:
2487         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
2488         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
2489         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
2490         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
2491         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
2492         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
2493         LDKChannelUpdateInfo* operator &() { return &self; }
2494         LDKChannelUpdateInfo* operator ->() { return &self; }
2495         const LDKChannelUpdateInfo* operator &() const { return &self; }
2496         const LDKChannelUpdateInfo* operator ->() const { return &self; }
2497 };
2498 class ChannelInfo {
2499 private:
2500         LDKChannelInfo self;
2501 public:
2502         ChannelInfo(const ChannelInfo&) = delete;
2503         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
2504         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
2505         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
2506         ~ChannelInfo() { ChannelInfo_free(self); }
2507         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
2508         LDKChannelInfo* operator &() { return &self; }
2509         LDKChannelInfo* operator ->() { return &self; }
2510         const LDKChannelInfo* operator &() const { return &self; }
2511         const LDKChannelInfo* operator ->() const { return &self; }
2512 };
2513 class DirectedChannelInfo {
2514 private:
2515         LDKDirectedChannelInfo self;
2516 public:
2517         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
2518         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
2519         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
2520         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
2521         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
2522         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
2523         LDKDirectedChannelInfo* operator &() { return &self; }
2524         LDKDirectedChannelInfo* operator ->() { return &self; }
2525         const LDKDirectedChannelInfo* operator &() const { return &self; }
2526         const LDKDirectedChannelInfo* operator ->() const { return &self; }
2527 };
2528 class EffectiveCapacity {
2529 private:
2530         LDKEffectiveCapacity self;
2531 public:
2532         EffectiveCapacity(const EffectiveCapacity&) = delete;
2533         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
2534         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
2535         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
2536         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
2537         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
2538         LDKEffectiveCapacity* operator &() { return &self; }
2539         LDKEffectiveCapacity* operator ->() { return &self; }
2540         const LDKEffectiveCapacity* operator &() const { return &self; }
2541         const LDKEffectiveCapacity* operator ->() const { return &self; }
2542 };
2543 class RoutingFees {
2544 private:
2545         LDKRoutingFees self;
2546 public:
2547         RoutingFees(const RoutingFees&) = delete;
2548         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
2549         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
2550         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
2551         ~RoutingFees() { RoutingFees_free(self); }
2552         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
2553         LDKRoutingFees* operator &() { return &self; }
2554         LDKRoutingFees* operator ->() { return &self; }
2555         const LDKRoutingFees* operator &() const { return &self; }
2556         const LDKRoutingFees* operator ->() const { return &self; }
2557 };
2558 class NodeAnnouncementInfo {
2559 private:
2560         LDKNodeAnnouncementInfo self;
2561 public:
2562         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
2563         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
2564         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
2565         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
2566         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
2567         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
2568         LDKNodeAnnouncementInfo* operator &() { return &self; }
2569         LDKNodeAnnouncementInfo* operator ->() { return &self; }
2570         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
2571         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
2572 };
2573 class NodeAlias {
2574 private:
2575         LDKNodeAlias self;
2576 public:
2577         NodeAlias(const NodeAlias&) = delete;
2578         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
2579         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
2580         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
2581         ~NodeAlias() { NodeAlias_free(self); }
2582         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
2583         LDKNodeAlias* operator &() { return &self; }
2584         LDKNodeAlias* operator ->() { return &self; }
2585         const LDKNodeAlias* operator &() const { return &self; }
2586         const LDKNodeAlias* operator ->() const { return &self; }
2587 };
2588 class NodeInfo {
2589 private:
2590         LDKNodeInfo self;
2591 public:
2592         NodeInfo(const NodeInfo&) = delete;
2593         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
2594         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
2595         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
2596         ~NodeInfo() { NodeInfo_free(self); }
2597         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
2598         LDKNodeInfo* operator &() { return &self; }
2599         LDKNodeInfo* operator ->() { return &self; }
2600         const LDKNodeInfo* operator &() const { return &self; }
2601         const LDKNodeInfo* operator ->() const { return &self; }
2602 };
2603 class ShortChannelIdError {
2604 private:
2605         LDKShortChannelIdError self;
2606 public:
2607         ShortChannelIdError(const ShortChannelIdError&) = delete;
2608         ShortChannelIdError(ShortChannelIdError&& o) : self(o.self) { memset(&o, 0, sizeof(ShortChannelIdError)); }
2609         ShortChannelIdError(LDKShortChannelIdError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShortChannelIdError)); }
2610         operator LDKShortChannelIdError() && { LDKShortChannelIdError res = self; memset(&self, 0, sizeof(LDKShortChannelIdError)); return res; }
2611         ShortChannelIdError& operator=(ShortChannelIdError&& o) { self = o.self; memset(&o, 0, sizeof(ShortChannelIdError)); return *this; }
2612         LDKShortChannelIdError* operator &() { return &self; }
2613         LDKShortChannelIdError* operator ->() { return &self; }
2614         const LDKShortChannelIdError* operator &() const { return &self; }
2615         const LDKShortChannelIdError* operator ->() const { return &self; }
2616 };
2617 class InboundHTLCErr {
2618 private:
2619         LDKInboundHTLCErr self;
2620 public:
2621         InboundHTLCErr(const InboundHTLCErr&) = delete;
2622         InboundHTLCErr(InboundHTLCErr&& o) : self(o.self) { memset(&o, 0, sizeof(InboundHTLCErr)); }
2623         InboundHTLCErr(LDKInboundHTLCErr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInboundHTLCErr)); }
2624         operator LDKInboundHTLCErr() && { LDKInboundHTLCErr res = self; memset(&self, 0, sizeof(LDKInboundHTLCErr)); return res; }
2625         ~InboundHTLCErr() { InboundHTLCErr_free(self); }
2626         InboundHTLCErr& operator=(InboundHTLCErr&& o) { InboundHTLCErr_free(self); self = o.self; memset(&o, 0, sizeof(InboundHTLCErr)); return *this; }
2627         LDKInboundHTLCErr* operator &() { return &self; }
2628         LDKInboundHTLCErr* operator ->() { return &self; }
2629         const LDKInboundHTLCErr* operator &() const { return &self; }
2630         const LDKInboundHTLCErr* operator ->() const { return &self; }
2631 };
2632 class AnchorDescriptor {
2633 private:
2634         LDKAnchorDescriptor self;
2635 public:
2636         AnchorDescriptor(const AnchorDescriptor&) = delete;
2637         AnchorDescriptor(AnchorDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(AnchorDescriptor)); }
2638         AnchorDescriptor(LDKAnchorDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnchorDescriptor)); }
2639         operator LDKAnchorDescriptor() && { LDKAnchorDescriptor res = self; memset(&self, 0, sizeof(LDKAnchorDescriptor)); return res; }
2640         ~AnchorDescriptor() { AnchorDescriptor_free(self); }
2641         AnchorDescriptor& operator=(AnchorDescriptor&& o) { AnchorDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(AnchorDescriptor)); return *this; }
2642         LDKAnchorDescriptor* operator &() { return &self; }
2643         LDKAnchorDescriptor* operator ->() { return &self; }
2644         const LDKAnchorDescriptor* operator &() const { return &self; }
2645         const LDKAnchorDescriptor* operator ->() const { return &self; }
2646 };
2647 class BumpTransactionEvent {
2648 private:
2649         LDKBumpTransactionEvent self;
2650 public:
2651         BumpTransactionEvent(const BumpTransactionEvent&) = delete;
2652         BumpTransactionEvent(BumpTransactionEvent&& o) : self(o.self) { memset(&o, 0, sizeof(BumpTransactionEvent)); }
2653         BumpTransactionEvent(LDKBumpTransactionEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBumpTransactionEvent)); }
2654         operator LDKBumpTransactionEvent() && { LDKBumpTransactionEvent res = self; memset(&self, 0, sizeof(LDKBumpTransactionEvent)); return res; }
2655         ~BumpTransactionEvent() { BumpTransactionEvent_free(self); }
2656         BumpTransactionEvent& operator=(BumpTransactionEvent&& o) { BumpTransactionEvent_free(self); self = o.self; memset(&o, 0, sizeof(BumpTransactionEvent)); return *this; }
2657         LDKBumpTransactionEvent* operator &() { return &self; }
2658         LDKBumpTransactionEvent* operator ->() { return &self; }
2659         const LDKBumpTransactionEvent* operator &() const { return &self; }
2660         const LDKBumpTransactionEvent* operator ->() const { return &self; }
2661 };
2662 class Input {
2663 private:
2664         LDKInput self;
2665 public:
2666         Input(const Input&) = delete;
2667         Input(Input&& o) : self(o.self) { memset(&o, 0, sizeof(Input)); }
2668         Input(LDKInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInput)); }
2669         operator LDKInput() && { LDKInput res = self; memset(&self, 0, sizeof(LDKInput)); return res; }
2670         ~Input() { Input_free(self); }
2671         Input& operator=(Input&& o) { Input_free(self); self = o.self; memset(&o, 0, sizeof(Input)); return *this; }
2672         LDKInput* operator &() { return &self; }
2673         LDKInput* operator ->() { return &self; }
2674         const LDKInput* operator &() const { return &self; }
2675         const LDKInput* operator ->() const { return &self; }
2676 };
2677 class Utxo {
2678 private:
2679         LDKUtxo self;
2680 public:
2681         Utxo(const Utxo&) = delete;
2682         Utxo(Utxo&& o) : self(o.self) { memset(&o, 0, sizeof(Utxo)); }
2683         Utxo(LDKUtxo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxo)); }
2684         operator LDKUtxo() && { LDKUtxo res = self; memset(&self, 0, sizeof(LDKUtxo)); return res; }
2685         ~Utxo() { Utxo_free(self); }
2686         Utxo& operator=(Utxo&& o) { Utxo_free(self); self = o.self; memset(&o, 0, sizeof(Utxo)); return *this; }
2687         LDKUtxo* operator &() { return &self; }
2688         LDKUtxo* operator ->() { return &self; }
2689         const LDKUtxo* operator &() const { return &self; }
2690         const LDKUtxo* operator ->() const { return &self; }
2691 };
2692 class CoinSelection {
2693 private:
2694         LDKCoinSelection self;
2695 public:
2696         CoinSelection(const CoinSelection&) = delete;
2697         CoinSelection(CoinSelection&& o) : self(o.self) { memset(&o, 0, sizeof(CoinSelection)); }
2698         CoinSelection(LDKCoinSelection&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCoinSelection)); }
2699         operator LDKCoinSelection() && { LDKCoinSelection res = self; memset(&self, 0, sizeof(LDKCoinSelection)); return res; }
2700         ~CoinSelection() { CoinSelection_free(self); }
2701         CoinSelection& operator=(CoinSelection&& o) { CoinSelection_free(self); self = o.self; memset(&o, 0, sizeof(CoinSelection)); return *this; }
2702         LDKCoinSelection* operator &() { return &self; }
2703         LDKCoinSelection* operator ->() { return &self; }
2704         const LDKCoinSelection* operator &() const { return &self; }
2705         const LDKCoinSelection* operator ->() const { return &self; }
2706 };
2707 class CoinSelectionSource {
2708 private:
2709         LDKCoinSelectionSource self;
2710 public:
2711         CoinSelectionSource(const CoinSelectionSource&) = delete;
2712         CoinSelectionSource(CoinSelectionSource&& o) : self(o.self) { memset(&o, 0, sizeof(CoinSelectionSource)); }
2713         CoinSelectionSource(LDKCoinSelectionSource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCoinSelectionSource)); }
2714         operator LDKCoinSelectionSource() && { LDKCoinSelectionSource res = self; memset(&self, 0, sizeof(LDKCoinSelectionSource)); return res; }
2715         ~CoinSelectionSource() { CoinSelectionSource_free(self); }
2716         CoinSelectionSource& operator=(CoinSelectionSource&& o) { CoinSelectionSource_free(self); self = o.self; memset(&o, 0, sizeof(CoinSelectionSource)); return *this; }
2717         LDKCoinSelectionSource* operator &() { return &self; }
2718         LDKCoinSelectionSource* operator ->() { return &self; }
2719         const LDKCoinSelectionSource* operator &() const { return &self; }
2720         const LDKCoinSelectionSource* operator ->() const { return &self; }
2721         /**
2722          *  Performs coin selection of a set of UTXOs, with at least 1 confirmation each, that are
2723          *  available to spend. Implementations are free to pick their coin selection algorithm of
2724          *  choice, as long as the following requirements are met:
2725          * 
2726          *  1. `must_spend` contains a set of [`Input`]s that must be included in the transaction
2727          *     throughout coin selection, but must not be returned as part of the result.
2728          *  2. `must_pay_to` contains a set of [`TxOut`]s that must be included in the transaction
2729          *     throughout coin selection. In some cases, like when funding an anchor transaction, this
2730          *     set is empty. Implementations should ensure they handle this correctly on their end,
2731          *     e.g., Bitcoin Core's `fundrawtransaction` RPC requires at least one output to be
2732          *     provided, in which case a zero-value empty OP_RETURN output can be used instead.
2733          *  3. Enough inputs must be selected/contributed for the resulting transaction (including the
2734          *     inputs and outputs noted above) to meet `target_feerate_sat_per_1000_weight`.
2735          * 
2736          *  Implementations must take note that [`Input::satisfaction_weight`] only tracks the weight of
2737          *  the input's `script_sig` and `witness`. Some wallets, like Bitcoin Core's, may require
2738          *  providing the full input weight. Failing to do so may lead to underestimating fee bumps and
2739          *  delaying block inclusion.
2740          * 
2741          *  The `claim_id` must map to the set of external UTXOs assigned to the claim, such that they
2742          *  can be re-used within new fee-bumped iterations of the original claiming transaction,
2743          *  ensuring that claims don't double spend each other. If a specific `claim_id` has never had a
2744          *  transaction associated with it, and all of the available UTXOs have already been assigned to
2745          *  other claims, implementations must be willing to double spend their UTXOs. The choice of
2746          *  which UTXOs to double spend is left to the implementation, but it must strive to keep the
2747          *  set of other claims being double spent to a minimum.
2748          */
2749         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);
2750         /**
2751          *  Signs and provides the full witness for all inputs within the transaction known to the
2752          *  trait (i.e., any provided via [`CoinSelectionSource::select_confirmed_utxos`]).
2753          * 
2754          *  If your wallet does not support signing PSBTs you can call `psbt.extract_tx()` to get the
2755          *  unsigned transaction and then sign it with your wallet.
2756          */
2757         inline LDK::CResult_TransactionNoneZ sign_psbt(struct LDKCVec_u8Z psbt);
2758 };
2759 class WalletSource {
2760 private:
2761         LDKWalletSource self;
2762 public:
2763         WalletSource(const WalletSource&) = delete;
2764         WalletSource(WalletSource&& o) : self(o.self) { memset(&o, 0, sizeof(WalletSource)); }
2765         WalletSource(LDKWalletSource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWalletSource)); }
2766         operator LDKWalletSource() && { LDKWalletSource res = self; memset(&self, 0, sizeof(LDKWalletSource)); return res; }
2767         ~WalletSource() { WalletSource_free(self); }
2768         WalletSource& operator=(WalletSource&& o) { WalletSource_free(self); self = o.self; memset(&o, 0, sizeof(WalletSource)); return *this; }
2769         LDKWalletSource* operator &() { return &self; }
2770         LDKWalletSource* operator ->() { return &self; }
2771         const LDKWalletSource* operator &() const { return &self; }
2772         const LDKWalletSource* operator ->() const { return &self; }
2773         /**
2774          *  Returns all UTXOs, with at least 1 confirmation each, that are available to spend.
2775          */
2776         inline LDK::CResult_CVec_UtxoZNoneZ list_confirmed_utxos();
2777         /**
2778          *  Returns a script to use for change above dust resulting from a successful coin selection
2779          *  attempt.
2780          */
2781         inline LDK::CResult_CVec_u8ZNoneZ get_change_script();
2782         /**
2783          *  Signs and provides the full [`TxIn::script_sig`] and [`TxIn::witness`] for all inputs within
2784          *  the transaction known to the wallet (i.e., any provided via
2785          *  [`WalletSource::list_confirmed_utxos`]).
2786          * 
2787          *  If your wallet does not support signing PSBTs you can call `psbt.extract_tx()` to get the
2788          *  unsigned transaction and then sign it with your wallet.
2789          */
2790         inline LDK::CResult_TransactionNoneZ sign_psbt(struct LDKCVec_u8Z psbt);
2791 };
2792 class Wallet {
2793 private:
2794         LDKWallet self;
2795 public:
2796         Wallet(const Wallet&) = delete;
2797         Wallet(Wallet&& o) : self(o.self) { memset(&o, 0, sizeof(Wallet)); }
2798         Wallet(LDKWallet&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWallet)); }
2799         operator LDKWallet() && { LDKWallet res = self; memset(&self, 0, sizeof(LDKWallet)); return res; }
2800         ~Wallet() { Wallet_free(self); }
2801         Wallet& operator=(Wallet&& o) { Wallet_free(self); self = o.self; memset(&o, 0, sizeof(Wallet)); return *this; }
2802         LDKWallet* operator &() { return &self; }
2803         LDKWallet* operator ->() { return &self; }
2804         const LDKWallet* operator &() const { return &self; }
2805         const LDKWallet* operator ->() const { return &self; }
2806 };
2807 class BumpTransactionEventHandler {
2808 private:
2809         LDKBumpTransactionEventHandler self;
2810 public:
2811         BumpTransactionEventHandler(const BumpTransactionEventHandler&) = delete;
2812         BumpTransactionEventHandler(BumpTransactionEventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(BumpTransactionEventHandler)); }
2813         BumpTransactionEventHandler(LDKBumpTransactionEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBumpTransactionEventHandler)); }
2814         operator LDKBumpTransactionEventHandler() && { LDKBumpTransactionEventHandler res = self; memset(&self, 0, sizeof(LDKBumpTransactionEventHandler)); return res; }
2815         ~BumpTransactionEventHandler() { BumpTransactionEventHandler_free(self); }
2816         BumpTransactionEventHandler& operator=(BumpTransactionEventHandler&& o) { BumpTransactionEventHandler_free(self); self = o.self; memset(&o, 0, sizeof(BumpTransactionEventHandler)); return *this; }
2817         LDKBumpTransactionEventHandler* operator &() { return &self; }
2818         LDKBumpTransactionEventHandler* operator ->() { return &self; }
2819         const LDKBumpTransactionEventHandler* operator &() const { return &self; }
2820         const LDKBumpTransactionEventHandler* operator ->() const { return &self; }
2821 };
2822 class PendingHTLCRouting {
2823 private:
2824         LDKPendingHTLCRouting self;
2825 public:
2826         PendingHTLCRouting(const PendingHTLCRouting&) = delete;
2827         PendingHTLCRouting(PendingHTLCRouting&& o) : self(o.self) { memset(&o, 0, sizeof(PendingHTLCRouting)); }
2828         PendingHTLCRouting(LDKPendingHTLCRouting&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPendingHTLCRouting)); }
2829         operator LDKPendingHTLCRouting() && { LDKPendingHTLCRouting res = self; memset(&self, 0, sizeof(LDKPendingHTLCRouting)); return res; }
2830         ~PendingHTLCRouting() { PendingHTLCRouting_free(self); }
2831         PendingHTLCRouting& operator=(PendingHTLCRouting&& o) { PendingHTLCRouting_free(self); self = o.self; memset(&o, 0, sizeof(PendingHTLCRouting)); return *this; }
2832         LDKPendingHTLCRouting* operator &() { return &self; }
2833         LDKPendingHTLCRouting* operator ->() { return &self; }
2834         const LDKPendingHTLCRouting* operator &() const { return &self; }
2835         const LDKPendingHTLCRouting* operator ->() const { return &self; }
2836 };
2837 class BlindedForward {
2838 private:
2839         LDKBlindedForward self;
2840 public:
2841         BlindedForward(const BlindedForward&) = delete;
2842         BlindedForward(BlindedForward&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedForward)); }
2843         BlindedForward(LDKBlindedForward&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedForward)); }
2844         operator LDKBlindedForward() && { LDKBlindedForward res = self; memset(&self, 0, sizeof(LDKBlindedForward)); return res; }
2845         ~BlindedForward() { BlindedForward_free(self); }
2846         BlindedForward& operator=(BlindedForward&& o) { BlindedForward_free(self); self = o.self; memset(&o, 0, sizeof(BlindedForward)); return *this; }
2847         LDKBlindedForward* operator &() { return &self; }
2848         LDKBlindedForward* operator ->() { return &self; }
2849         const LDKBlindedForward* operator &() const { return &self; }
2850         const LDKBlindedForward* operator ->() const { return &self; }
2851 };
2852 class PendingHTLCInfo {
2853 private:
2854         LDKPendingHTLCInfo self;
2855 public:
2856         PendingHTLCInfo(const PendingHTLCInfo&) = delete;
2857         PendingHTLCInfo(PendingHTLCInfo&& o) : self(o.self) { memset(&o, 0, sizeof(PendingHTLCInfo)); }
2858         PendingHTLCInfo(LDKPendingHTLCInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPendingHTLCInfo)); }
2859         operator LDKPendingHTLCInfo() && { LDKPendingHTLCInfo res = self; memset(&self, 0, sizeof(LDKPendingHTLCInfo)); return res; }
2860         ~PendingHTLCInfo() { PendingHTLCInfo_free(self); }
2861         PendingHTLCInfo& operator=(PendingHTLCInfo&& o) { PendingHTLCInfo_free(self); self = o.self; memset(&o, 0, sizeof(PendingHTLCInfo)); return *this; }
2862         LDKPendingHTLCInfo* operator &() { return &self; }
2863         LDKPendingHTLCInfo* operator ->() { return &self; }
2864         const LDKPendingHTLCInfo* operator &() const { return &self; }
2865         const LDKPendingHTLCInfo* operator ->() const { return &self; }
2866 };
2867 class BlindedFailure {
2868 private:
2869         LDKBlindedFailure self;
2870 public:
2871         BlindedFailure(const BlindedFailure&) = delete;
2872         BlindedFailure(BlindedFailure&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedFailure)); }
2873         BlindedFailure(LDKBlindedFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedFailure)); }
2874         operator LDKBlindedFailure() && { LDKBlindedFailure res = self; memset(&self, 0, sizeof(LDKBlindedFailure)); return res; }
2875         BlindedFailure& operator=(BlindedFailure&& o) { self = o.self; memset(&o, 0, sizeof(BlindedFailure)); return *this; }
2876         LDKBlindedFailure* operator &() { return &self; }
2877         LDKBlindedFailure* operator ->() { return &self; }
2878         const LDKBlindedFailure* operator &() const { return &self; }
2879         const LDKBlindedFailure* operator ->() const { return &self; }
2880 };
2881 class FailureCode {
2882 private:
2883         LDKFailureCode self;
2884 public:
2885         FailureCode(const FailureCode&) = delete;
2886         FailureCode(FailureCode&& o) : self(o.self) { memset(&o, 0, sizeof(FailureCode)); }
2887         FailureCode(LDKFailureCode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFailureCode)); }
2888         operator LDKFailureCode() && { LDKFailureCode res = self; memset(&self, 0, sizeof(LDKFailureCode)); return res; }
2889         ~FailureCode() { FailureCode_free(self); }
2890         FailureCode& operator=(FailureCode&& o) { FailureCode_free(self); self = o.self; memset(&o, 0, sizeof(FailureCode)); return *this; }
2891         LDKFailureCode* operator &() { return &self; }
2892         LDKFailureCode* operator ->() { return &self; }
2893         const LDKFailureCode* operator &() const { return &self; }
2894         const LDKFailureCode* operator ->() const { return &self; }
2895 };
2896 class ChannelManager {
2897 private:
2898         LDKChannelManager self;
2899 public:
2900         ChannelManager(const ChannelManager&) = delete;
2901         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2902         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2903         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2904         ~ChannelManager() { ChannelManager_free(self); }
2905         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2906         LDKChannelManager* operator &() { return &self; }
2907         LDKChannelManager* operator ->() { return &self; }
2908         const LDKChannelManager* operator &() const { return &self; }
2909         const LDKChannelManager* operator ->() const { return &self; }
2910 };
2911 class ChainParameters {
2912 private:
2913         LDKChainParameters self;
2914 public:
2915         ChainParameters(const ChainParameters&) = delete;
2916         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2917         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2918         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2919         ~ChainParameters() { ChainParameters_free(self); }
2920         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2921         LDKChainParameters* operator &() { return &self; }
2922         LDKChainParameters* operator ->() { return &self; }
2923         const LDKChainParameters* operator &() const { return &self; }
2924         const LDKChainParameters* operator ->() const { return &self; }
2925 };
2926 class CounterpartyForwardingInfo {
2927 private:
2928         LDKCounterpartyForwardingInfo self;
2929 public:
2930         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2931         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2932         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2933         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2934         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2935         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2936         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2937         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2938         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2939         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2940 };
2941 class ChannelCounterparty {
2942 private:
2943         LDKChannelCounterparty self;
2944 public:
2945         ChannelCounterparty(const ChannelCounterparty&) = delete;
2946         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2947         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2948         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2949         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2950         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2951         LDKChannelCounterparty* operator &() { return &self; }
2952         LDKChannelCounterparty* operator ->() { return &self; }
2953         const LDKChannelCounterparty* operator &() const { return &self; }
2954         const LDKChannelCounterparty* operator ->() const { return &self; }
2955 };
2956 class ChannelDetails {
2957 private:
2958         LDKChannelDetails self;
2959 public:
2960         ChannelDetails(const ChannelDetails&) = delete;
2961         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2962         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2963         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2964         ~ChannelDetails() { ChannelDetails_free(self); }
2965         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2966         LDKChannelDetails* operator &() { return &self; }
2967         LDKChannelDetails* operator ->() { return &self; }
2968         const LDKChannelDetails* operator &() const { return &self; }
2969         const LDKChannelDetails* operator ->() const { return &self; }
2970 };
2971 class ChannelShutdownState {
2972 private:
2973         LDKChannelShutdownState self;
2974 public:
2975         ChannelShutdownState(const ChannelShutdownState&) = delete;
2976         ChannelShutdownState(ChannelShutdownState&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelShutdownState)); }
2977         ChannelShutdownState(LDKChannelShutdownState&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelShutdownState)); }
2978         operator LDKChannelShutdownState() && { LDKChannelShutdownState res = self; memset(&self, 0, sizeof(LDKChannelShutdownState)); return res; }
2979         ChannelShutdownState& operator=(ChannelShutdownState&& o) { self = o.self; memset(&o, 0, sizeof(ChannelShutdownState)); return *this; }
2980         LDKChannelShutdownState* operator &() { return &self; }
2981         LDKChannelShutdownState* operator ->() { return &self; }
2982         const LDKChannelShutdownState* operator &() const { return &self; }
2983         const LDKChannelShutdownState* operator ->() const { return &self; }
2984 };
2985 class RecentPaymentDetails {
2986 private:
2987         LDKRecentPaymentDetails self;
2988 public:
2989         RecentPaymentDetails(const RecentPaymentDetails&) = delete;
2990         RecentPaymentDetails(RecentPaymentDetails&& o) : self(o.self) { memset(&o, 0, sizeof(RecentPaymentDetails)); }
2991         RecentPaymentDetails(LDKRecentPaymentDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecentPaymentDetails)); }
2992         operator LDKRecentPaymentDetails() && { LDKRecentPaymentDetails res = self; memset(&self, 0, sizeof(LDKRecentPaymentDetails)); return res; }
2993         ~RecentPaymentDetails() { RecentPaymentDetails_free(self); }
2994         RecentPaymentDetails& operator=(RecentPaymentDetails&& o) { RecentPaymentDetails_free(self); self = o.self; memset(&o, 0, sizeof(RecentPaymentDetails)); return *this; }
2995         LDKRecentPaymentDetails* operator &() { return &self; }
2996         LDKRecentPaymentDetails* operator ->() { return &self; }
2997         const LDKRecentPaymentDetails* operator &() const { return &self; }
2998         const LDKRecentPaymentDetails* operator ->() const { return &self; }
2999 };
3000 class PhantomRouteHints {
3001 private:
3002         LDKPhantomRouteHints self;
3003 public:
3004         PhantomRouteHints(const PhantomRouteHints&) = delete;
3005         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
3006         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
3007         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
3008         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
3009         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
3010         LDKPhantomRouteHints* operator &() { return &self; }
3011         LDKPhantomRouteHints* operator ->() { return &self; }
3012         const LDKPhantomRouteHints* operator &() const { return &self; }
3013         const LDKPhantomRouteHints* operator ->() const { return &self; }
3014 };
3015 class ChannelManagerReadArgs {
3016 private:
3017         LDKChannelManagerReadArgs self;
3018 public:
3019         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
3020         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
3021         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
3022         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
3023         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
3024         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
3025         LDKChannelManagerReadArgs* operator &() { return &self; }
3026         LDKChannelManagerReadArgs* operator ->() { return &self; }
3027         const LDKChannelManagerReadArgs* operator &() const { return &self; }
3028         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
3029 };
3030 class ChannelHandshakeConfig {
3031 private:
3032         LDKChannelHandshakeConfig self;
3033 public:
3034         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
3035         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
3036         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
3037         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
3038         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
3039         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
3040         LDKChannelHandshakeConfig* operator &() { return &self; }
3041         LDKChannelHandshakeConfig* operator ->() { return &self; }
3042         const LDKChannelHandshakeConfig* operator &() const { return &self; }
3043         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
3044 };
3045 class ChannelHandshakeLimits {
3046 private:
3047         LDKChannelHandshakeLimits self;
3048 public:
3049         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
3050         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
3051         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
3052         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
3053         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
3054         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
3055         LDKChannelHandshakeLimits* operator &() { return &self; }
3056         LDKChannelHandshakeLimits* operator ->() { return &self; }
3057         const LDKChannelHandshakeLimits* operator &() const { return &self; }
3058         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
3059 };
3060 class MaxDustHTLCExposure {
3061 private:
3062         LDKMaxDustHTLCExposure self;
3063 public:
3064         MaxDustHTLCExposure(const MaxDustHTLCExposure&) = delete;
3065         MaxDustHTLCExposure(MaxDustHTLCExposure&& o) : self(o.self) { memset(&o, 0, sizeof(MaxDustHTLCExposure)); }
3066         MaxDustHTLCExposure(LDKMaxDustHTLCExposure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMaxDustHTLCExposure)); }
3067         operator LDKMaxDustHTLCExposure() && { LDKMaxDustHTLCExposure res = self; memset(&self, 0, sizeof(LDKMaxDustHTLCExposure)); return res; }
3068         ~MaxDustHTLCExposure() { MaxDustHTLCExposure_free(self); }
3069         MaxDustHTLCExposure& operator=(MaxDustHTLCExposure&& o) { MaxDustHTLCExposure_free(self); self = o.self; memset(&o, 0, sizeof(MaxDustHTLCExposure)); return *this; }
3070         LDKMaxDustHTLCExposure* operator &() { return &self; }
3071         LDKMaxDustHTLCExposure* operator ->() { return &self; }
3072         const LDKMaxDustHTLCExposure* operator &() const { return &self; }
3073         const LDKMaxDustHTLCExposure* operator ->() const { return &self; }
3074 };
3075 class ChannelConfig {
3076 private:
3077         LDKChannelConfig self;
3078 public:
3079         ChannelConfig(const ChannelConfig&) = delete;
3080         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
3081         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
3082         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
3083         ~ChannelConfig() { ChannelConfig_free(self); }
3084         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
3085         LDKChannelConfig* operator &() { return &self; }
3086         LDKChannelConfig* operator ->() { return &self; }
3087         const LDKChannelConfig* operator &() const { return &self; }
3088         const LDKChannelConfig* operator ->() const { return &self; }
3089 };
3090 class ChannelConfigUpdate {
3091 private:
3092         LDKChannelConfigUpdate self;
3093 public:
3094         ChannelConfigUpdate(const ChannelConfigUpdate&) = delete;
3095         ChannelConfigUpdate(ChannelConfigUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfigUpdate)); }
3096         ChannelConfigUpdate(LDKChannelConfigUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfigUpdate)); }
3097         operator LDKChannelConfigUpdate() && { LDKChannelConfigUpdate res = self; memset(&self, 0, sizeof(LDKChannelConfigUpdate)); return res; }
3098         ~ChannelConfigUpdate() { ChannelConfigUpdate_free(self); }
3099         ChannelConfigUpdate& operator=(ChannelConfigUpdate&& o) { ChannelConfigUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfigUpdate)); return *this; }
3100         LDKChannelConfigUpdate* operator &() { return &self; }
3101         LDKChannelConfigUpdate* operator ->() { return &self; }
3102         const LDKChannelConfigUpdate* operator &() const { return &self; }
3103         const LDKChannelConfigUpdate* operator ->() const { return &self; }
3104 };
3105 class UserConfig {
3106 private:
3107         LDKUserConfig self;
3108 public:
3109         UserConfig(const UserConfig&) = delete;
3110         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
3111         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
3112         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
3113         ~UserConfig() { UserConfig_free(self); }
3114         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
3115         LDKUserConfig* operator &() { return &self; }
3116         LDKUserConfig* operator ->() { return &self; }
3117         const LDKUserConfig* operator &() const { return &self; }
3118         const LDKUserConfig* operator ->() const { return &self; }
3119 };
3120 class APIError {
3121 private:
3122         LDKAPIError self;
3123 public:
3124         APIError(const APIError&) = delete;
3125         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
3126         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
3127         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
3128         ~APIError() { APIError_free(self); }
3129         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
3130         LDKAPIError* operator &() { return &self; }
3131         LDKAPIError* operator ->() { return &self; }
3132         const LDKAPIError* operator &() const { return &self; }
3133         const LDKAPIError* operator ->() const { return &self; }
3134 };
3135 class TaggedHash {
3136 private:
3137         LDKTaggedHash self;
3138 public:
3139         TaggedHash(const TaggedHash&) = delete;
3140         TaggedHash(TaggedHash&& o) : self(o.self) { memset(&o, 0, sizeof(TaggedHash)); }
3141         TaggedHash(LDKTaggedHash&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTaggedHash)); }
3142         operator LDKTaggedHash() && { LDKTaggedHash res = self; memset(&self, 0, sizeof(LDKTaggedHash)); return res; }
3143         ~TaggedHash() { TaggedHash_free(self); }
3144         TaggedHash& operator=(TaggedHash&& o) { TaggedHash_free(self); self = o.self; memset(&o, 0, sizeof(TaggedHash)); return *this; }
3145         LDKTaggedHash* operator &() { return &self; }
3146         LDKTaggedHash* operator ->() { return &self; }
3147         const LDKTaggedHash* operator &() const { return &self; }
3148         const LDKTaggedHash* operator ->() const { return &self; }
3149 };
3150 class SignError {
3151 private:
3152         LDKSignError self;
3153 public:
3154         SignError(const SignError&) = delete;
3155         SignError(SignError&& o) : self(o.self) { memset(&o, 0, sizeof(SignError)); }
3156         SignError(LDKSignError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignError)); }
3157         operator LDKSignError() && { LDKSignError res = self; memset(&self, 0, sizeof(LDKSignError)); return res; }
3158         ~SignError() { SignError_free(self); }
3159         SignError& operator=(SignError&& o) { SignError_free(self); self = o.self; memset(&o, 0, sizeof(SignError)); return *this; }
3160         LDKSignError* operator &() { return &self; }
3161         LDKSignError* operator ->() { return &self; }
3162         const LDKSignError* operator &() const { return &self; }
3163         const LDKSignError* operator ->() const { return &self; }
3164 };
3165 class EcdsaChannelSigner {
3166 private:
3167         LDKEcdsaChannelSigner self;
3168 public:
3169         EcdsaChannelSigner(const EcdsaChannelSigner&) = delete;
3170         EcdsaChannelSigner(EcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(EcdsaChannelSigner)); }
3171         EcdsaChannelSigner(LDKEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEcdsaChannelSigner)); }
3172         operator LDKEcdsaChannelSigner() && { LDKEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKEcdsaChannelSigner)); return res; }
3173         ~EcdsaChannelSigner() { EcdsaChannelSigner_free(self); }
3174         EcdsaChannelSigner& operator=(EcdsaChannelSigner&& o) { EcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(EcdsaChannelSigner)); return *this; }
3175         LDKEcdsaChannelSigner* operator &() { return &self; }
3176         LDKEcdsaChannelSigner* operator ->() { return &self; }
3177         const LDKEcdsaChannelSigner* operator &() const { return &self; }
3178         const LDKEcdsaChannelSigner* operator ->() const { return &self; }
3179         /**
3180          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
3181          * 
3182          *  Note that if signing fails or is rejected, the channel will be force-closed.
3183          * 
3184          *  Policy checks should be implemented in this function, including checking the amount
3185          *  sent to us and checking the HTLCs.
3186          * 
3187          *  The preimages of outbound and inbound HTLCs that were fulfilled since the last commitment
3188          *  are provided. A validating signer should ensure that an outbound HTLC output is removed
3189          *  only when the matching preimage is provided and after the corresponding inbound HTLC has
3190          *  been removed for forwarded payments.
3191          * 
3192          *  Note that all the relevant preimages will be provided, but there may also be additional
3193          *  irrelevant or duplicate preimages.
3194          */
3195         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);
3196         /**
3197          *  Creates a signature for a holder's commitment transaction.
3198          * 
3199          *  This will be called
3200          *  - with a non-revoked `commitment_tx`.
3201          *  - with the latest `commitment_tx` when we initiate a force-close.
3202          * 
3203          *  This may be called multiple times for the same transaction.
3204          * 
3205          *  An external signer implementation should check that the commitment has not been revoked.
3206          * 
3207          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3208          *  signature and should be retried later. Once the signer is ready to provide a signature after
3209          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3210          *  monitor.
3211          * 
3212          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3213          */
3214         inline LDK::CResult_ECDSASignatureNoneZ sign_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
3215         /**
3216          *  Create a signature for the given input in a transaction spending an HTLC transaction output
3217          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
3218          * 
3219          *  A justice transaction may claim multiple outputs at the same time if timelocks are
3220          *  similar, but only a signature for the input at index `input` should be signed for here.
3221          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
3222          *  to an upcoming timelock expiration.
3223          * 
3224          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3225          * 
3226          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
3227          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3228          *  not allow the spending of any funds by itself (you need our holder `revocation_secret` to do
3229          *  so).
3230          * 
3231          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3232          *  signature and should be retried later. Once the signer is ready to provide a signature after
3233          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3234          *  monitor.
3235          * 
3236          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3237          */
3238         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]);
3239         /**
3240          *  Create a signature for the given input in a transaction spending a commitment transaction
3241          *  HTLC output when our counterparty broadcasts an old state.
3242          * 
3243          *  A justice transaction may claim multiple outputs at the same time if timelocks are
3244          *  similar, but only a signature for the input at index `input` should be signed for here.
3245          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
3246          *  to an upcoming timelock expiration.
3247          * 
3248          *  `amount` is the value of the output spent by this input, committed to in the BIP 143
3249          *  signature.
3250          * 
3251          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
3252          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3253          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
3254          *  so).
3255          * 
3256          *  `htlc` holds HTLC elements (hash, timelock), thus changing the format of the witness script
3257          *  (which is committed to in the BIP 143 signatures).
3258          * 
3259          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3260          *  signature and should be retried later. Once the signer is ready to provide a signature after
3261          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3262          *  monitor.
3263          * 
3264          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3265          */
3266         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);
3267         /**
3268          *  Computes the signature for a commitment transaction's HTLC output used as an input within
3269          *  `htlc_tx`, which spends the commitment transaction at index `input`. The signature returned
3270          *  must be be computed using [`EcdsaSighashType::All`].
3271          * 
3272          *  Note that this may be called for HTLCs in the penultimate commitment transaction if a
3273          *  [`ChannelMonitor`] [replica](https://github.com/lightningdevkit/rust-lightning/blob/main/GLOSSARY.md#monitor-replicas)
3274          *  broadcasts it before receiving the update for the latest commitment transaction.
3275          * 
3276          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3277          *  signature and should be retried later. Once the signer is ready to provide a signature after
3278          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3279          *  monitor.
3280          * 
3281          *  [`EcdsaSighashType::All`]: bitcoin::sighash::EcdsaSighashType::All
3282          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
3283          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3284          */
3285         inline LDK::CResult_ECDSASignatureNoneZ sign_holder_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, const struct LDKHTLCDescriptor *NONNULL_PTR htlc_descriptor);
3286         /**
3287          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
3288          *  transaction, either offered or received.
3289          * 
3290          *  Such a transaction may claim multiples offered outputs at same time if we know the
3291          *  preimage for each when we create it, but only the input at index `input` should be
3292          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
3293          *  needed with regards to an upcoming timelock expiration.
3294          * 
3295          *  `witness_script` is either an offered or received script as defined in BOLT3 for HTLC
3296          *  outputs.
3297          * 
3298          *  `amount` is value of the output spent by this input, committed to in the BIP 143 signature.
3299          * 
3300          *  `per_commitment_point` is the dynamic point corresponding to the channel state
3301          *  detected onchain. It has been generated by our counterparty and is used to derive
3302          *  channel state keys, which are then included in the witness script and committed to in the
3303          *  BIP 143 signature.
3304          * 
3305          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3306          *  signature and should be retried later. Once the signer is ready to provide a signature after
3307          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3308          *  monitor.
3309          * 
3310          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3311          */
3312         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);
3313         /**
3314          *  Create a signature for a (proposed) closing transaction.
3315          * 
3316          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
3317          *  chosen to forgo their output as dust.
3318          */
3319         inline LDK::CResult_ECDSASignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
3320         /**
3321          *  Computes the signature for a commitment transaction's anchor output used as an
3322          *  input within `anchor_tx`, which spends the commitment transaction, at index `input`.
3323          * 
3324          *  An `Err` can be returned to signal that the signer is unavailable/cannot produce a valid
3325          *  signature and should be retried later. Once the signer is ready to provide a signature after
3326          *  previously returning an `Err`, [`ChannelMonitor::signer_unblocked`] must be called on its
3327          *  monitor.
3328          * 
3329          *  [`ChannelMonitor::signer_unblocked`]: crate::chain::channelmonitor::ChannelMonitor::signer_unblocked
3330          */
3331         inline LDK::CResult_ECDSASignatureNoneZ sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input);
3332         /**
3333          *  Signs a channel announcement message with our funding key proving it comes from one of the
3334          *  channel participants.
3335          * 
3336          *  Channel announcements also require a signature from each node's network key. Our node
3337          *  signature is computed through [`NodeSigner::sign_gossip_message`].
3338          * 
3339          *  Note that if this fails or is rejected, the channel will not be publicly announced and
3340          *  our counterparty may (though likely will not) close the channel on us for violating the
3341          *  protocol.
3342          * 
3343          *  [`NodeSigner::sign_gossip_message`]: crate::sign::NodeSigner::sign_gossip_message
3344          */
3345         inline LDK::CResult_ECDSASignatureNoneZ sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
3346 };
3347 class WriteableEcdsaChannelSigner {
3348 private:
3349         LDKWriteableEcdsaChannelSigner self;
3350 public:
3351         WriteableEcdsaChannelSigner(const WriteableEcdsaChannelSigner&) = delete;
3352         WriteableEcdsaChannelSigner(WriteableEcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); }
3353         WriteableEcdsaChannelSigner(LDKWriteableEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); }
3354         operator LDKWriteableEcdsaChannelSigner() && { LDKWriteableEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); return res; }
3355         ~WriteableEcdsaChannelSigner() { WriteableEcdsaChannelSigner_free(self); }
3356         WriteableEcdsaChannelSigner& operator=(WriteableEcdsaChannelSigner&& o) { WriteableEcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); return *this; }
3357         LDKWriteableEcdsaChannelSigner* operator &() { return &self; }
3358         LDKWriteableEcdsaChannelSigner* operator ->() { return &self; }
3359         const LDKWriteableEcdsaChannelSigner* operator &() const { return &self; }
3360         const LDKWriteableEcdsaChannelSigner* operator ->() const { return &self; }
3361 };
3362 class ChannelMonitorUpdate {
3363 private:
3364         LDKChannelMonitorUpdate self;
3365 public:
3366         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
3367         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
3368         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
3369         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
3370         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
3371         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
3372         LDKChannelMonitorUpdate* operator &() { return &self; }
3373         LDKChannelMonitorUpdate* operator ->() { return &self; }
3374         const LDKChannelMonitorUpdate* operator &() const { return &self; }
3375         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
3376 };
3377 class MonitorEvent {
3378 private:
3379         LDKMonitorEvent self;
3380 public:
3381         MonitorEvent(const MonitorEvent&) = delete;
3382         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
3383         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
3384         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
3385         ~MonitorEvent() { MonitorEvent_free(self); }
3386         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
3387         LDKMonitorEvent* operator &() { return &self; }
3388         LDKMonitorEvent* operator ->() { return &self; }
3389         const LDKMonitorEvent* operator &() const { return &self; }
3390         const LDKMonitorEvent* operator ->() const { return &self; }
3391 };
3392 class HTLCUpdate {
3393 private:
3394         LDKHTLCUpdate self;
3395 public:
3396         HTLCUpdate(const HTLCUpdate&) = delete;
3397         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
3398         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
3399         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
3400         ~HTLCUpdate() { HTLCUpdate_free(self); }
3401         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
3402         LDKHTLCUpdate* operator &() { return &self; }
3403         LDKHTLCUpdate* operator ->() { return &self; }
3404         const LDKHTLCUpdate* operator &() const { return &self; }
3405         const LDKHTLCUpdate* operator ->() const { return &self; }
3406 };
3407 class Balance {
3408 private:
3409         LDKBalance self;
3410 public:
3411         Balance(const Balance&) = delete;
3412         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
3413         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
3414         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
3415         ~Balance() { Balance_free(self); }
3416         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
3417         LDKBalance* operator &() { return &self; }
3418         LDKBalance* operator ->() { return &self; }
3419         const LDKBalance* operator &() const { return &self; }
3420         const LDKBalance* operator ->() const { return &self; }
3421 };
3422 class ChannelMonitor {
3423 private:
3424         LDKChannelMonitor self;
3425 public:
3426         ChannelMonitor(const ChannelMonitor&) = delete;
3427         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
3428         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
3429         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
3430         ~ChannelMonitor() { ChannelMonitor_free(self); }
3431         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
3432         LDKChannelMonitor* operator &() { return &self; }
3433         LDKChannelMonitor* operator ->() { return &self; }
3434         const LDKChannelMonitor* operator &() const { return &self; }
3435         const LDKChannelMonitor* operator ->() const { return &self; }
3436 };
3437 class ExpandedKey {
3438 private:
3439         LDKExpandedKey self;
3440 public:
3441         ExpandedKey(const ExpandedKey&) = delete;
3442         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
3443         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
3444         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
3445         ~ExpandedKey() { ExpandedKey_free(self); }
3446         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
3447         LDKExpandedKey* operator &() { return &self; }
3448         LDKExpandedKey* operator ->() { return &self; }
3449         const LDKExpandedKey* operator &() const { return &self; }
3450         const LDKExpandedKey* operator ->() const { return &self; }
3451 };
3452 class CustomMessageHandler {
3453 private:
3454         LDKCustomMessageHandler self;
3455 public:
3456         CustomMessageHandler(const CustomMessageHandler&) = delete;
3457         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
3458         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
3459         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
3460         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
3461         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
3462         LDKCustomMessageHandler* operator &() { return &self; }
3463         LDKCustomMessageHandler* operator ->() { return &self; }
3464         const LDKCustomMessageHandler* operator &() const { return &self; }
3465         const LDKCustomMessageHandler* operator ->() const { return &self; }
3466         /**
3467          *  Handles the given message sent from `sender_node_id`, possibly producing messages for
3468          *  [`CustomMessageHandler::get_and_clear_pending_msg`] to return and thus for [`PeerManager`]
3469          *  to send.
3470          */
3471         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
3472         /**
3473          *  Returns the list of pending messages that were generated by the handler, clearing the list
3474          *  in the process. Each message is paired with the node id of the intended recipient. If no
3475          *  connection to the node exists, then the message is simply not sent.
3476          */
3477         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
3478         /**
3479          *  Gets the node feature flags which this handler itself supports. All available handlers are
3480          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
3481          *  which are broadcasted in our [`NodeAnnouncement`] message.
3482          * 
3483          *  [`NodeAnnouncement`]: crate::ln::msgs::NodeAnnouncement
3484          */
3485         inline LDK::NodeFeatures provided_node_features();
3486         /**
3487          *  Gets the init feature flags which should be sent to the given peer. All available handlers
3488          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
3489          *  which are sent in our [`Init`] message.
3490          * 
3491          *  [`Init`]: crate::ln::msgs::Init
3492          */
3493         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
3494 };
3495 class IgnoringMessageHandler {
3496 private:
3497         LDKIgnoringMessageHandler self;
3498 public:
3499         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
3500         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
3501         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
3502         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
3503         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
3504         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
3505         LDKIgnoringMessageHandler* operator &() { return &self; }
3506         LDKIgnoringMessageHandler* operator ->() { return &self; }
3507         const LDKIgnoringMessageHandler* operator &() const { return &self; }
3508         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
3509 };
3510 class ErroringMessageHandler {
3511 private:
3512         LDKErroringMessageHandler self;
3513 public:
3514         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
3515         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
3516         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
3517         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
3518         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
3519         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
3520         LDKErroringMessageHandler* operator &() { return &self; }
3521         LDKErroringMessageHandler* operator ->() { return &self; }
3522         const LDKErroringMessageHandler* operator &() const { return &self; }
3523         const LDKErroringMessageHandler* operator ->() const { return &self; }
3524 };
3525 class MessageHandler {
3526 private:
3527         LDKMessageHandler self;
3528 public:
3529         MessageHandler(const MessageHandler&) = delete;
3530         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
3531         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
3532         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
3533         ~MessageHandler() { MessageHandler_free(self); }
3534         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
3535         LDKMessageHandler* operator &() { return &self; }
3536         LDKMessageHandler* operator ->() { return &self; }
3537         const LDKMessageHandler* operator &() const { return &self; }
3538         const LDKMessageHandler* operator ->() const { return &self; }
3539 };
3540 class SocketDescriptor {
3541 private:
3542         LDKSocketDescriptor self;
3543 public:
3544         SocketDescriptor(const SocketDescriptor&) = delete;
3545         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
3546         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
3547         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
3548         ~SocketDescriptor() { SocketDescriptor_free(self); }
3549         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
3550         LDKSocketDescriptor* operator &() { return &self; }
3551         LDKSocketDescriptor* operator ->() { return &self; }
3552         const LDKSocketDescriptor* operator &() const { return &self; }
3553         const LDKSocketDescriptor* operator ->() const { return &self; }
3554         /**
3555          *  Attempts to send some data from the given slice to the peer.
3556          * 
3557          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
3558          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
3559          *  called and further write attempts may occur until that time.
3560          * 
3561          *  If the returned size is smaller than `data.len()`, a
3562          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
3563          *  written. Additionally, until a `send_data` event completes fully, no further
3564          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
3565          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
3566          *  until then.
3567          * 
3568          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
3569          *  (indicating that read events should be paused to prevent DoS in the send buffer),
3570          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
3571          *  `resume_read` of false carries no meaning, and should not cause any action.
3572          */
3573         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
3574         /**
3575          *  Disconnect the socket pointed to by this SocketDescriptor.
3576          * 
3577          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
3578          *  call (doing so is a noop).
3579          */
3580         inline void disconnect_socket();
3581         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
3582         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
3583         /**
3584          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
3585          * This is used, for example, for inclusion of this object in a hash map.
3586          */
3587         inline uint64_t hash();
3588 };
3589 class PeerDetails {
3590 private:
3591         LDKPeerDetails self;
3592 public:
3593         PeerDetails(const PeerDetails&) = delete;
3594         PeerDetails(PeerDetails&& o) : self(o.self) { memset(&o, 0, sizeof(PeerDetails)); }
3595         PeerDetails(LDKPeerDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerDetails)); }
3596         operator LDKPeerDetails() && { LDKPeerDetails res = self; memset(&self, 0, sizeof(LDKPeerDetails)); return res; }
3597         ~PeerDetails() { PeerDetails_free(self); }
3598         PeerDetails& operator=(PeerDetails&& o) { PeerDetails_free(self); self = o.self; memset(&o, 0, sizeof(PeerDetails)); return *this; }
3599         LDKPeerDetails* operator &() { return &self; }
3600         LDKPeerDetails* operator ->() { return &self; }
3601         const LDKPeerDetails* operator &() const { return &self; }
3602         const LDKPeerDetails* operator ->() const { return &self; }
3603 };
3604 class PeerHandleError {
3605 private:
3606         LDKPeerHandleError self;
3607 public:
3608         PeerHandleError(const PeerHandleError&) = delete;
3609         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
3610         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
3611         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
3612         ~PeerHandleError() { PeerHandleError_free(self); }
3613         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
3614         LDKPeerHandleError* operator &() { return &self; }
3615         LDKPeerHandleError* operator ->() { return &self; }
3616         const LDKPeerHandleError* operator &() const { return &self; }
3617         const LDKPeerHandleError* operator ->() const { return &self; }
3618 };
3619 class PeerManager {
3620 private:
3621         LDKPeerManager self;
3622 public:
3623         PeerManager(const PeerManager&) = delete;
3624         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
3625         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
3626         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
3627         ~PeerManager() { PeerManager_free(self); }
3628         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
3629         LDKPeerManager* operator &() { return &self; }
3630         LDKPeerManager* operator ->() { return &self; }
3631         const LDKPeerManager* operator &() const { return &self; }
3632         const LDKPeerManager* operator ->() const { return &self; }
3633 };
3634 class GraphSyncError {
3635 private:
3636         LDKGraphSyncError self;
3637 public:
3638         GraphSyncError(const GraphSyncError&) = delete;
3639         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
3640         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
3641         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
3642         ~GraphSyncError() { GraphSyncError_free(self); }
3643         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
3644         LDKGraphSyncError* operator &() { return &self; }
3645         LDKGraphSyncError* operator ->() { return &self; }
3646         const LDKGraphSyncError* operator &() const { return &self; }
3647         const LDKGraphSyncError* operator ->() const { return &self; }
3648 };
3649 class RapidGossipSync {
3650 private:
3651         LDKRapidGossipSync self;
3652 public:
3653         RapidGossipSync(const RapidGossipSync&) = delete;
3654         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
3655         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
3656         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
3657         ~RapidGossipSync() { RapidGossipSync_free(self); }
3658         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
3659         LDKRapidGossipSync* operator &() { return &self; }
3660         LDKRapidGossipSync* operator ->() { return &self; }
3661         const LDKRapidGossipSync* operator &() const { return &self; }
3662         const LDKRapidGossipSync* operator ->() const { return &self; }
3663 };
3664 class KVStore {
3665 private:
3666         LDKKVStore self;
3667 public:
3668         KVStore(const KVStore&) = delete;
3669         KVStore(KVStore&& o) : self(o.self) { memset(&o, 0, sizeof(KVStore)); }
3670         KVStore(LDKKVStore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKVStore)); }
3671         operator LDKKVStore() && { LDKKVStore res = self; memset(&self, 0, sizeof(LDKKVStore)); return res; }
3672         ~KVStore() { KVStore_free(self); }
3673         KVStore& operator=(KVStore&& o) { KVStore_free(self); self = o.self; memset(&o, 0, sizeof(KVStore)); return *this; }
3674         LDKKVStore* operator &() { return &self; }
3675         LDKKVStore* operator ->() { return &self; }
3676         const LDKKVStore* operator &() const { return &self; }
3677         const LDKKVStore* operator ->() const { return &self; }
3678         /**
3679          *  Returns the data stored for the given `primary_namespace`, `secondary_namespace`, and
3680          *  `key`.
3681          * 
3682          *  Returns an [`ErrorKind::NotFound`] if the given `key` could not be found in the given
3683          *  `primary_namespace` and `secondary_namespace`.
3684          * 
3685          *  [`ErrorKind::NotFound`]: io::ErrorKind::NotFound
3686          */
3687         inline LDK::CResult_CVec_u8ZIOErrorZ read(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key);
3688         /**
3689          *  Persists the given data under the given `key`.
3690          * 
3691          *  Will create the given `primary_namespace` and `secondary_namespace` if not already present
3692          *  in the store.
3693          */
3694         inline LDK::CResult_NoneIOErrorZ write(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key, struct LDKu8slice buf);
3695         /**
3696          *  Removes any data that had previously been persisted under the given `key`.
3697          * 
3698          *  If the `lazy` flag is set to `true`, the backend implementation might choose to lazily
3699          *  remove the given `key` at some point in time after the method returns, e.g., as part of an
3700          *  eventual batch deletion of multiple keys. As a consequence, subsequent calls to
3701          *  [`KVStore::list`] might include the removed key until the changes are actually persisted.
3702          * 
3703          *  Note that while setting the `lazy` flag reduces the I/O burden of multiple subsequent
3704          *  `remove` calls, it also influences the atomicity guarantees as lazy `remove`s could
3705          *  potentially get lost on crash after the method returns. Therefore, this flag should only be
3706          *  set for `remove` operations that can be safely replayed at a later time.
3707          * 
3708          *  Returns successfully if no data will be stored for the given `primary_namespace`,
3709          *  `secondary_namespace`, and `key`, independently of whether it was present before its
3710          *  invokation or not.
3711          */
3712         inline LDK::CResult_NoneIOErrorZ remove(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key, bool lazy);
3713         /**
3714          *  Returns a list of keys that are stored under the given `secondary_namespace` in
3715          *  `primary_namespace`.
3716          * 
3717          *  Returns the keys in arbitrary order, so users requiring a particular order need to sort the
3718          *  returned keys. Returns an empty list if `primary_namespace` or `secondary_namespace` is unknown.
3719          */
3720         inline LDK::CResult_CVec_StrZIOErrorZ list(struct LDKStr primary_namespace, struct LDKStr secondary_namespace);
3721 };
3722 class Persister {
3723 private:
3724         LDKPersister self;
3725 public:
3726         Persister(const Persister&) = delete;
3727         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
3728         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
3729         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
3730         ~Persister() { Persister_free(self); }
3731         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
3732         LDKPersister* operator &() { return &self; }
3733         LDKPersister* operator ->() { return &self; }
3734         const LDKPersister* operator &() const { return &self; }
3735         const LDKPersister* operator ->() const { return &self; }
3736         /**
3737          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
3738          * 
3739          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3740          */
3741         inline LDK::CResult_NoneIOErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
3742         /**
3743          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
3744          */
3745         inline LDK::CResult_NoneIOErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
3746         /**
3747          *  Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
3748          */
3749         inline LDK::CResult_NoneIOErrorZ persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer);
3750 };
3751 class MonitorUpdatingPersister {
3752 private:
3753         LDKMonitorUpdatingPersister self;
3754 public:
3755         MonitorUpdatingPersister(const MonitorUpdatingPersister&) = delete;
3756         MonitorUpdatingPersister(MonitorUpdatingPersister&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdatingPersister)); }
3757         MonitorUpdatingPersister(LDKMonitorUpdatingPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdatingPersister)); }
3758         operator LDKMonitorUpdatingPersister() && { LDKMonitorUpdatingPersister res = self; memset(&self, 0, sizeof(LDKMonitorUpdatingPersister)); return res; }
3759         ~MonitorUpdatingPersister() { MonitorUpdatingPersister_free(self); }
3760         MonitorUpdatingPersister& operator=(MonitorUpdatingPersister&& o) { MonitorUpdatingPersister_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdatingPersister)); return *this; }
3761         LDKMonitorUpdatingPersister* operator &() { return &self; }
3762         LDKMonitorUpdatingPersister* operator ->() { return &self; }
3763         const LDKMonitorUpdatingPersister* operator &() const { return &self; }
3764         const LDKMonitorUpdatingPersister* operator ->() const { return &self; }
3765 };
3766 class InvoiceRequestWithExplicitPayerIdBuilder {
3767 private:
3768         LDKInvoiceRequestWithExplicitPayerIdBuilder self;
3769 public:
3770         InvoiceRequestWithExplicitPayerIdBuilder(const InvoiceRequestWithExplicitPayerIdBuilder&) = delete;
3771         InvoiceRequestWithExplicitPayerIdBuilder(InvoiceRequestWithExplicitPayerIdBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestWithExplicitPayerIdBuilder)); }
3772         InvoiceRequestWithExplicitPayerIdBuilder(LDKInvoiceRequestWithExplicitPayerIdBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestWithExplicitPayerIdBuilder)); }
3773         operator LDKInvoiceRequestWithExplicitPayerIdBuilder() && { LDKInvoiceRequestWithExplicitPayerIdBuilder res = self; memset(&self, 0, sizeof(LDKInvoiceRequestWithExplicitPayerIdBuilder)); return res; }
3774         ~InvoiceRequestWithExplicitPayerIdBuilder() { InvoiceRequestWithExplicitPayerIdBuilder_free(self); }
3775         InvoiceRequestWithExplicitPayerIdBuilder& operator=(InvoiceRequestWithExplicitPayerIdBuilder&& o) { InvoiceRequestWithExplicitPayerIdBuilder_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestWithExplicitPayerIdBuilder)); return *this; }
3776         LDKInvoiceRequestWithExplicitPayerIdBuilder* operator &() { return &self; }
3777         LDKInvoiceRequestWithExplicitPayerIdBuilder* operator ->() { return &self; }
3778         const LDKInvoiceRequestWithExplicitPayerIdBuilder* operator &() const { return &self; }
3779         const LDKInvoiceRequestWithExplicitPayerIdBuilder* operator ->() const { return &self; }
3780 };
3781 class InvoiceRequestWithDerivedPayerIdBuilder {
3782 private:
3783         LDKInvoiceRequestWithDerivedPayerIdBuilder self;
3784 public:
3785         InvoiceRequestWithDerivedPayerIdBuilder(const InvoiceRequestWithDerivedPayerIdBuilder&) = delete;
3786         InvoiceRequestWithDerivedPayerIdBuilder(InvoiceRequestWithDerivedPayerIdBuilder&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestWithDerivedPayerIdBuilder)); }
3787         InvoiceRequestWithDerivedPayerIdBuilder(LDKInvoiceRequestWithDerivedPayerIdBuilder&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestWithDerivedPayerIdBuilder)); }
3788         operator LDKInvoiceRequestWithDerivedPayerIdBuilder() && { LDKInvoiceRequestWithDerivedPayerIdBuilder res = self; memset(&self, 0, sizeof(LDKInvoiceRequestWithDerivedPayerIdBuilder)); return res; }
3789         ~InvoiceRequestWithDerivedPayerIdBuilder() { InvoiceRequestWithDerivedPayerIdBuilder_free(self); }
3790         InvoiceRequestWithDerivedPayerIdBuilder& operator=(InvoiceRequestWithDerivedPayerIdBuilder&& o) { InvoiceRequestWithDerivedPayerIdBuilder_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestWithDerivedPayerIdBuilder)); return *this; }
3791         LDKInvoiceRequestWithDerivedPayerIdBuilder* operator &() { return &self; }
3792         LDKInvoiceRequestWithDerivedPayerIdBuilder* operator ->() { return &self; }
3793         const LDKInvoiceRequestWithDerivedPayerIdBuilder* operator &() const { return &self; }
3794         const LDKInvoiceRequestWithDerivedPayerIdBuilder* operator ->() const { return &self; }
3795 };
3796 class UnsignedInvoiceRequest {
3797 private:
3798         LDKUnsignedInvoiceRequest self;
3799 public:
3800         UnsignedInvoiceRequest(const UnsignedInvoiceRequest&) = delete;
3801         UnsignedInvoiceRequest(UnsignedInvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedInvoiceRequest)); }
3802         UnsignedInvoiceRequest(LDKUnsignedInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedInvoiceRequest)); }
3803         operator LDKUnsignedInvoiceRequest() && { LDKUnsignedInvoiceRequest res = self; memset(&self, 0, sizeof(LDKUnsignedInvoiceRequest)); return res; }
3804         ~UnsignedInvoiceRequest() { UnsignedInvoiceRequest_free(self); }
3805         UnsignedInvoiceRequest& operator=(UnsignedInvoiceRequest&& o) { UnsignedInvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedInvoiceRequest)); return *this; }
3806         LDKUnsignedInvoiceRequest* operator &() { return &self; }
3807         LDKUnsignedInvoiceRequest* operator ->() { return &self; }
3808         const LDKUnsignedInvoiceRequest* operator &() const { return &self; }
3809         const LDKUnsignedInvoiceRequest* operator ->() const { return &self; }
3810 };
3811 class SignInvoiceRequestFn {
3812 private:
3813         LDKSignInvoiceRequestFn self;
3814 public:
3815         SignInvoiceRequestFn(const SignInvoiceRequestFn&) = delete;
3816         SignInvoiceRequestFn(SignInvoiceRequestFn&& o) : self(o.self) { memset(&o, 0, sizeof(SignInvoiceRequestFn)); }
3817         SignInvoiceRequestFn(LDKSignInvoiceRequestFn&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignInvoiceRequestFn)); }
3818         operator LDKSignInvoiceRequestFn() && { LDKSignInvoiceRequestFn res = self; memset(&self, 0, sizeof(LDKSignInvoiceRequestFn)); return res; }
3819         ~SignInvoiceRequestFn() { SignInvoiceRequestFn_free(self); }
3820         SignInvoiceRequestFn& operator=(SignInvoiceRequestFn&& o) { SignInvoiceRequestFn_free(self); self = o.self; memset(&o, 0, sizeof(SignInvoiceRequestFn)); return *this; }
3821         LDKSignInvoiceRequestFn* operator &() { return &self; }
3822         LDKSignInvoiceRequestFn* operator ->() { return &self; }
3823         const LDKSignInvoiceRequestFn* operator &() const { return &self; }
3824         const LDKSignInvoiceRequestFn* operator ->() const { return &self; }
3825         /**
3826          *  Signs a [`TaggedHash`] computed over the merkle root of `message`'s TLV stream.
3827          */
3828         inline LDK::CResult_SchnorrSignatureNoneZ sign_invoice_request(const struct LDKUnsignedInvoiceRequest *NONNULL_PTR message);
3829 };
3830 class InvoiceRequest {
3831 private:
3832         LDKInvoiceRequest self;
3833 public:
3834         InvoiceRequest(const InvoiceRequest&) = delete;
3835         InvoiceRequest(InvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequest)); }
3836         InvoiceRequest(LDKInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequest)); }
3837         operator LDKInvoiceRequest() && { LDKInvoiceRequest res = self; memset(&self, 0, sizeof(LDKInvoiceRequest)); return res; }
3838         ~InvoiceRequest() { InvoiceRequest_free(self); }
3839         InvoiceRequest& operator=(InvoiceRequest&& o) { InvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequest)); return *this; }
3840         LDKInvoiceRequest* operator &() { return &self; }
3841         LDKInvoiceRequest* operator ->() { return &self; }
3842         const LDKInvoiceRequest* operator &() const { return &self; }
3843         const LDKInvoiceRequest* operator ->() const { return &self; }
3844 };
3845 class VerifiedInvoiceRequest {
3846 private:
3847         LDKVerifiedInvoiceRequest self;
3848 public:
3849         VerifiedInvoiceRequest(const VerifiedInvoiceRequest&) = delete;
3850         VerifiedInvoiceRequest(VerifiedInvoiceRequest&& o) : self(o.self) { memset(&o, 0, sizeof(VerifiedInvoiceRequest)); }
3851         VerifiedInvoiceRequest(LDKVerifiedInvoiceRequest&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKVerifiedInvoiceRequest)); }
3852         operator LDKVerifiedInvoiceRequest() && { LDKVerifiedInvoiceRequest res = self; memset(&self, 0, sizeof(LDKVerifiedInvoiceRequest)); return res; }
3853         ~VerifiedInvoiceRequest() { VerifiedInvoiceRequest_free(self); }
3854         VerifiedInvoiceRequest& operator=(VerifiedInvoiceRequest&& o) { VerifiedInvoiceRequest_free(self); self = o.self; memset(&o, 0, sizeof(VerifiedInvoiceRequest)); return *this; }
3855         LDKVerifiedInvoiceRequest* operator &() { return &self; }
3856         LDKVerifiedInvoiceRequest* operator ->() { return &self; }
3857         const LDKVerifiedInvoiceRequest* operator &() const { return &self; }
3858         const LDKVerifiedInvoiceRequest* operator ->() const { return &self; }
3859 };
3860 class InvoiceRequestFields {
3861 private:
3862         LDKInvoiceRequestFields self;
3863 public:
3864         InvoiceRequestFields(const InvoiceRequestFields&) = delete;
3865         InvoiceRequestFields(InvoiceRequestFields&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestFields)); }
3866         InvoiceRequestFields(LDKInvoiceRequestFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestFields)); }
3867         operator LDKInvoiceRequestFields() && { LDKInvoiceRequestFields res = self; memset(&self, 0, sizeof(LDKInvoiceRequestFields)); return res; }
3868         ~InvoiceRequestFields() { InvoiceRequestFields_free(self); }
3869         InvoiceRequestFields& operator=(InvoiceRequestFields&& o) { InvoiceRequestFields_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestFields)); return *this; }
3870         LDKInvoiceRequestFields* operator &() { return &self; }
3871         LDKInvoiceRequestFields* operator ->() { return &self; }
3872         const LDKInvoiceRequestFields* operator &() const { return &self; }
3873         const LDKInvoiceRequestFields* operator ->() const { return &self; }
3874 };
3875 class DecodeError {
3876 private:
3877         LDKDecodeError self;
3878 public:
3879         DecodeError(const DecodeError&) = delete;
3880         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
3881         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
3882         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
3883         ~DecodeError() { DecodeError_free(self); }
3884         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
3885         LDKDecodeError* operator &() { return &self; }
3886         LDKDecodeError* operator ->() { return &self; }
3887         const LDKDecodeError* operator &() const { return &self; }
3888         const LDKDecodeError* operator ->() const { return &self; }
3889 };
3890 class Init {
3891 private:
3892         LDKInit self;
3893 public:
3894         Init(const Init&) = delete;
3895         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
3896         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
3897         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
3898         ~Init() { Init_free(self); }
3899         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
3900         LDKInit* operator &() { return &self; }
3901         LDKInit* operator ->() { return &self; }
3902         const LDKInit* operator &() const { return &self; }
3903         const LDKInit* operator ->() const { return &self; }
3904 };
3905 class ErrorMessage {
3906 private:
3907         LDKErrorMessage self;
3908 public:
3909         ErrorMessage(const ErrorMessage&) = delete;
3910         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
3911         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
3912         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
3913         ~ErrorMessage() { ErrorMessage_free(self); }
3914         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
3915         LDKErrorMessage* operator &() { return &self; }
3916         LDKErrorMessage* operator ->() { return &self; }
3917         const LDKErrorMessage* operator &() const { return &self; }
3918         const LDKErrorMessage* operator ->() const { return &self; }
3919 };
3920 class WarningMessage {
3921 private:
3922         LDKWarningMessage self;
3923 public:
3924         WarningMessage(const WarningMessage&) = delete;
3925         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3926         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3927         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3928         ~WarningMessage() { WarningMessage_free(self); }
3929         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3930         LDKWarningMessage* operator &() { return &self; }
3931         LDKWarningMessage* operator ->() { return &self; }
3932         const LDKWarningMessage* operator &() const { return &self; }
3933         const LDKWarningMessage* operator ->() const { return &self; }
3934 };
3935 class Ping {
3936 private:
3937         LDKPing self;
3938 public:
3939         Ping(const Ping&) = delete;
3940         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3941         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3942         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3943         ~Ping() { Ping_free(self); }
3944         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3945         LDKPing* operator &() { return &self; }
3946         LDKPing* operator ->() { return &self; }
3947         const LDKPing* operator &() const { return &self; }
3948         const LDKPing* operator ->() const { return &self; }
3949 };
3950 class Pong {
3951 private:
3952         LDKPong self;
3953 public:
3954         Pong(const Pong&) = delete;
3955         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3956         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3957         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3958         ~Pong() { Pong_free(self); }
3959         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3960         LDKPong* operator &() { return &self; }
3961         LDKPong* operator ->() { return &self; }
3962         const LDKPong* operator &() const { return &self; }
3963         const LDKPong* operator ->() const { return &self; }
3964 };
3965 class CommonOpenChannelFields {
3966 private:
3967         LDKCommonOpenChannelFields self;
3968 public:
3969         CommonOpenChannelFields(const CommonOpenChannelFields&) = delete;
3970         CommonOpenChannelFields(CommonOpenChannelFields&& o) : self(o.self) { memset(&o, 0, sizeof(CommonOpenChannelFields)); }
3971         CommonOpenChannelFields(LDKCommonOpenChannelFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommonOpenChannelFields)); }
3972         operator LDKCommonOpenChannelFields() && { LDKCommonOpenChannelFields res = self; memset(&self, 0, sizeof(LDKCommonOpenChannelFields)); return res; }
3973         ~CommonOpenChannelFields() { CommonOpenChannelFields_free(self); }
3974         CommonOpenChannelFields& operator=(CommonOpenChannelFields&& o) { CommonOpenChannelFields_free(self); self = o.self; memset(&o, 0, sizeof(CommonOpenChannelFields)); return *this; }
3975         LDKCommonOpenChannelFields* operator &() { return &self; }
3976         LDKCommonOpenChannelFields* operator ->() { return &self; }
3977         const LDKCommonOpenChannelFields* operator &() const { return &self; }
3978         const LDKCommonOpenChannelFields* operator ->() const { return &self; }
3979 };
3980 class OpenChannel {
3981 private:
3982         LDKOpenChannel self;
3983 public:
3984         OpenChannel(const OpenChannel&) = delete;
3985         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3986         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3987         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3988         ~OpenChannel() { OpenChannel_free(self); }
3989         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3990         LDKOpenChannel* operator &() { return &self; }
3991         LDKOpenChannel* operator ->() { return &self; }
3992         const LDKOpenChannel* operator &() const { return &self; }
3993         const LDKOpenChannel* operator ->() const { return &self; }
3994 };
3995 class OpenChannelV2 {
3996 private:
3997         LDKOpenChannelV2 self;
3998 public:
3999         OpenChannelV2(const OpenChannelV2&) = delete;
4000         OpenChannelV2(OpenChannelV2&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannelV2)); }
4001         OpenChannelV2(LDKOpenChannelV2&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannelV2)); }
4002         operator LDKOpenChannelV2() && { LDKOpenChannelV2 res = self; memset(&self, 0, sizeof(LDKOpenChannelV2)); return res; }
4003         ~OpenChannelV2() { OpenChannelV2_free(self); }
4004         OpenChannelV2& operator=(OpenChannelV2&& o) { OpenChannelV2_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannelV2)); return *this; }
4005         LDKOpenChannelV2* operator &() { return &self; }
4006         LDKOpenChannelV2* operator ->() { return &self; }
4007         const LDKOpenChannelV2* operator &() const { return &self; }
4008         const LDKOpenChannelV2* operator ->() const { return &self; }
4009 };
4010 class CommonAcceptChannelFields {
4011 private:
4012         LDKCommonAcceptChannelFields self;
4013 public:
4014         CommonAcceptChannelFields(const CommonAcceptChannelFields&) = delete;
4015         CommonAcceptChannelFields(CommonAcceptChannelFields&& o) : self(o.self) { memset(&o, 0, sizeof(CommonAcceptChannelFields)); }
4016         CommonAcceptChannelFields(LDKCommonAcceptChannelFields&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommonAcceptChannelFields)); }
4017         operator LDKCommonAcceptChannelFields() && { LDKCommonAcceptChannelFields res = self; memset(&self, 0, sizeof(LDKCommonAcceptChannelFields)); return res; }
4018         ~CommonAcceptChannelFields() { CommonAcceptChannelFields_free(self); }
4019         CommonAcceptChannelFields& operator=(CommonAcceptChannelFields&& o) { CommonAcceptChannelFields_free(self); self = o.self; memset(&o, 0, sizeof(CommonAcceptChannelFields)); return *this; }
4020         LDKCommonAcceptChannelFields* operator &() { return &self; }
4021         LDKCommonAcceptChannelFields* operator ->() { return &self; }
4022         const LDKCommonAcceptChannelFields* operator &() const { return &self; }
4023         const LDKCommonAcceptChannelFields* operator ->() const { return &self; }
4024 };
4025 class AcceptChannel {
4026 private:
4027         LDKAcceptChannel self;
4028 public:
4029         AcceptChannel(const AcceptChannel&) = delete;
4030         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
4031         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
4032         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
4033         ~AcceptChannel() { AcceptChannel_free(self); }
4034         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
4035         LDKAcceptChannel* operator &() { return &self; }
4036         LDKAcceptChannel* operator ->() { return &self; }
4037         const LDKAcceptChannel* operator &() const { return &self; }
4038         const LDKAcceptChannel* operator ->() const { return &self; }
4039 };
4040 class AcceptChannelV2 {
4041 private:
4042         LDKAcceptChannelV2 self;
4043 public:
4044         AcceptChannelV2(const AcceptChannelV2&) = delete;
4045         AcceptChannelV2(AcceptChannelV2&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannelV2)); }
4046         AcceptChannelV2(LDKAcceptChannelV2&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannelV2)); }
4047         operator LDKAcceptChannelV2() && { LDKAcceptChannelV2 res = self; memset(&self, 0, sizeof(LDKAcceptChannelV2)); return res; }
4048         ~AcceptChannelV2() { AcceptChannelV2_free(self); }
4049         AcceptChannelV2& operator=(AcceptChannelV2&& o) { AcceptChannelV2_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannelV2)); return *this; }
4050         LDKAcceptChannelV2* operator &() { return &self; }
4051         LDKAcceptChannelV2* operator ->() { return &self; }
4052         const LDKAcceptChannelV2* operator &() const { return &self; }
4053         const LDKAcceptChannelV2* operator ->() const { return &self; }
4054 };
4055 class FundingCreated {
4056 private:
4057         LDKFundingCreated self;
4058 public:
4059         FundingCreated(const FundingCreated&) = delete;
4060         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
4061         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
4062         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
4063         ~FundingCreated() { FundingCreated_free(self); }
4064         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
4065         LDKFundingCreated* operator &() { return &self; }
4066         LDKFundingCreated* operator ->() { return &self; }
4067         const LDKFundingCreated* operator &() const { return &self; }
4068         const LDKFundingCreated* operator ->() const { return &self; }
4069 };
4070 class FundingSigned {
4071 private:
4072         LDKFundingSigned self;
4073 public:
4074         FundingSigned(const FundingSigned&) = delete;
4075         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
4076         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
4077         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
4078         ~FundingSigned() { FundingSigned_free(self); }
4079         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
4080         LDKFundingSigned* operator &() { return &self; }
4081         LDKFundingSigned* operator ->() { return &self; }
4082         const LDKFundingSigned* operator &() const { return &self; }
4083         const LDKFundingSigned* operator ->() const { return &self; }
4084 };
4085 class ChannelReady {
4086 private:
4087         LDKChannelReady self;
4088 public:
4089         ChannelReady(const ChannelReady&) = delete;
4090         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
4091         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
4092         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
4093         ~ChannelReady() { ChannelReady_free(self); }
4094         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
4095         LDKChannelReady* operator &() { return &self; }
4096         LDKChannelReady* operator ->() { return &self; }
4097         const LDKChannelReady* operator &() const { return &self; }
4098         const LDKChannelReady* operator ->() const { return &self; }
4099 };
4100 class Stfu {
4101 private:
4102         LDKStfu self;
4103 public:
4104         Stfu(const Stfu&) = delete;
4105         Stfu(Stfu&& o) : self(o.self) { memset(&o, 0, sizeof(Stfu)); }
4106         Stfu(LDKStfu&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStfu)); }
4107         operator LDKStfu() && { LDKStfu res = self; memset(&self, 0, sizeof(LDKStfu)); return res; }
4108         ~Stfu() { Stfu_free(self); }
4109         Stfu& operator=(Stfu&& o) { Stfu_free(self); self = o.self; memset(&o, 0, sizeof(Stfu)); return *this; }
4110         LDKStfu* operator &() { return &self; }
4111         LDKStfu* operator ->() { return &self; }
4112         const LDKStfu* operator &() const { return &self; }
4113         const LDKStfu* operator ->() const { return &self; }
4114 };
4115 class Splice {
4116 private:
4117         LDKSplice self;
4118 public:
4119         Splice(const Splice&) = delete;
4120         Splice(Splice&& o) : self(o.self) { memset(&o, 0, sizeof(Splice)); }
4121         Splice(LDKSplice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSplice)); }
4122         operator LDKSplice() && { LDKSplice res = self; memset(&self, 0, sizeof(LDKSplice)); return res; }
4123         ~Splice() { Splice_free(self); }
4124         Splice& operator=(Splice&& o) { Splice_free(self); self = o.self; memset(&o, 0, sizeof(Splice)); return *this; }
4125         LDKSplice* operator &() { return &self; }
4126         LDKSplice* operator ->() { return &self; }
4127         const LDKSplice* operator &() const { return &self; }
4128         const LDKSplice* operator ->() const { return &self; }
4129 };
4130 class SpliceAck {
4131 private:
4132         LDKSpliceAck self;
4133 public:
4134         SpliceAck(const SpliceAck&) = delete;
4135         SpliceAck(SpliceAck&& o) : self(o.self) { memset(&o, 0, sizeof(SpliceAck)); }
4136         SpliceAck(LDKSpliceAck&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpliceAck)); }
4137         operator LDKSpliceAck() && { LDKSpliceAck res = self; memset(&self, 0, sizeof(LDKSpliceAck)); return res; }
4138         ~SpliceAck() { SpliceAck_free(self); }
4139         SpliceAck& operator=(SpliceAck&& o) { SpliceAck_free(self); self = o.self; memset(&o, 0, sizeof(SpliceAck)); return *this; }
4140         LDKSpliceAck* operator &() { return &self; }
4141         LDKSpliceAck* operator ->() { return &self; }
4142         const LDKSpliceAck* operator &() const { return &self; }
4143         const LDKSpliceAck* operator ->() const { return &self; }
4144 };
4145 class SpliceLocked {
4146 private:
4147         LDKSpliceLocked self;
4148 public:
4149         SpliceLocked(const SpliceLocked&) = delete;
4150         SpliceLocked(SpliceLocked&& o) : self(o.self) { memset(&o, 0, sizeof(SpliceLocked)); }
4151         SpliceLocked(LDKSpliceLocked&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpliceLocked)); }
4152         operator LDKSpliceLocked() && { LDKSpliceLocked res = self; memset(&self, 0, sizeof(LDKSpliceLocked)); return res; }
4153         ~SpliceLocked() { SpliceLocked_free(self); }
4154         SpliceLocked& operator=(SpliceLocked&& o) { SpliceLocked_free(self); self = o.self; memset(&o, 0, sizeof(SpliceLocked)); return *this; }
4155         LDKSpliceLocked* operator &() { return &self; }
4156         LDKSpliceLocked* operator ->() { return &self; }
4157         const LDKSpliceLocked* operator &() const { return &self; }
4158         const LDKSpliceLocked* operator ->() const { return &self; }
4159 };
4160 class TxAddInput {
4161 private:
4162         LDKTxAddInput self;
4163 public:
4164         TxAddInput(const TxAddInput&) = delete;
4165         TxAddInput(TxAddInput&& o) : self(o.self) { memset(&o, 0, sizeof(TxAddInput)); }
4166         TxAddInput(LDKTxAddInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAddInput)); }
4167         operator LDKTxAddInput() && { LDKTxAddInput res = self; memset(&self, 0, sizeof(LDKTxAddInput)); return res; }
4168         ~TxAddInput() { TxAddInput_free(self); }
4169         TxAddInput& operator=(TxAddInput&& o) { TxAddInput_free(self); self = o.self; memset(&o, 0, sizeof(TxAddInput)); return *this; }
4170         LDKTxAddInput* operator &() { return &self; }
4171         LDKTxAddInput* operator ->() { return &self; }
4172         const LDKTxAddInput* operator &() const { return &self; }
4173         const LDKTxAddInput* operator ->() const { return &self; }
4174 };
4175 class TxAddOutput {
4176 private:
4177         LDKTxAddOutput self;
4178 public:
4179         TxAddOutput(const TxAddOutput&) = delete;
4180         TxAddOutput(TxAddOutput&& o) : self(o.self) { memset(&o, 0, sizeof(TxAddOutput)); }
4181         TxAddOutput(LDKTxAddOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAddOutput)); }
4182         operator LDKTxAddOutput() && { LDKTxAddOutput res = self; memset(&self, 0, sizeof(LDKTxAddOutput)); return res; }
4183         ~TxAddOutput() { TxAddOutput_free(self); }
4184         TxAddOutput& operator=(TxAddOutput&& o) { TxAddOutput_free(self); self = o.self; memset(&o, 0, sizeof(TxAddOutput)); return *this; }
4185         LDKTxAddOutput* operator &() { return &self; }
4186         LDKTxAddOutput* operator ->() { return &self; }
4187         const LDKTxAddOutput* operator &() const { return &self; }
4188         const LDKTxAddOutput* operator ->() const { return &self; }
4189 };
4190 class TxRemoveInput {
4191 private:
4192         LDKTxRemoveInput self;
4193 public:
4194         TxRemoveInput(const TxRemoveInput&) = delete;
4195         TxRemoveInput(TxRemoveInput&& o) : self(o.self) { memset(&o, 0, sizeof(TxRemoveInput)); }
4196         TxRemoveInput(LDKTxRemoveInput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxRemoveInput)); }
4197         operator LDKTxRemoveInput() && { LDKTxRemoveInput res = self; memset(&self, 0, sizeof(LDKTxRemoveInput)); return res; }
4198         ~TxRemoveInput() { TxRemoveInput_free(self); }
4199         TxRemoveInput& operator=(TxRemoveInput&& o) { TxRemoveInput_free(self); self = o.self; memset(&o, 0, sizeof(TxRemoveInput)); return *this; }
4200         LDKTxRemoveInput* operator &() { return &self; }
4201         LDKTxRemoveInput* operator ->() { return &self; }
4202         const LDKTxRemoveInput* operator &() const { return &self; }
4203         const LDKTxRemoveInput* operator ->() const { return &self; }
4204 };
4205 class TxRemoveOutput {
4206 private:
4207         LDKTxRemoveOutput self;
4208 public:
4209         TxRemoveOutput(const TxRemoveOutput&) = delete;
4210         TxRemoveOutput(TxRemoveOutput&& o) : self(o.self) { memset(&o, 0, sizeof(TxRemoveOutput)); }
4211         TxRemoveOutput(LDKTxRemoveOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxRemoveOutput)); }
4212         operator LDKTxRemoveOutput() && { LDKTxRemoveOutput res = self; memset(&self, 0, sizeof(LDKTxRemoveOutput)); return res; }
4213         ~TxRemoveOutput() { TxRemoveOutput_free(self); }
4214         TxRemoveOutput& operator=(TxRemoveOutput&& o) { TxRemoveOutput_free(self); self = o.self; memset(&o, 0, sizeof(TxRemoveOutput)); return *this; }
4215         LDKTxRemoveOutput* operator &() { return &self; }
4216         LDKTxRemoveOutput* operator ->() { return &self; }
4217         const LDKTxRemoveOutput* operator &() const { return &self; }
4218         const LDKTxRemoveOutput* operator ->() const { return &self; }
4219 };
4220 class TxComplete {
4221 private:
4222         LDKTxComplete self;
4223 public:
4224         TxComplete(const TxComplete&) = delete;
4225         TxComplete(TxComplete&& o) : self(o.self) { memset(&o, 0, sizeof(TxComplete)); }
4226         TxComplete(LDKTxComplete&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxComplete)); }
4227         operator LDKTxComplete() && { LDKTxComplete res = self; memset(&self, 0, sizeof(LDKTxComplete)); return res; }
4228         ~TxComplete() { TxComplete_free(self); }
4229         TxComplete& operator=(TxComplete&& o) { TxComplete_free(self); self = o.self; memset(&o, 0, sizeof(TxComplete)); return *this; }
4230         LDKTxComplete* operator &() { return &self; }
4231         LDKTxComplete* operator ->() { return &self; }
4232         const LDKTxComplete* operator &() const { return &self; }
4233         const LDKTxComplete* operator ->() const { return &self; }
4234 };
4235 class TxSignatures {
4236 private:
4237         LDKTxSignatures self;
4238 public:
4239         TxSignatures(const TxSignatures&) = delete;
4240         TxSignatures(TxSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(TxSignatures)); }
4241         TxSignatures(LDKTxSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxSignatures)); }
4242         operator LDKTxSignatures() && { LDKTxSignatures res = self; memset(&self, 0, sizeof(LDKTxSignatures)); return res; }
4243         ~TxSignatures() { TxSignatures_free(self); }
4244         TxSignatures& operator=(TxSignatures&& o) { TxSignatures_free(self); self = o.self; memset(&o, 0, sizeof(TxSignatures)); return *this; }
4245         LDKTxSignatures* operator &() { return &self; }
4246         LDKTxSignatures* operator ->() { return &self; }
4247         const LDKTxSignatures* operator &() const { return &self; }
4248         const LDKTxSignatures* operator ->() const { return &self; }
4249 };
4250 class TxInitRbf {
4251 private:
4252         LDKTxInitRbf self;
4253 public:
4254         TxInitRbf(const TxInitRbf&) = delete;
4255         TxInitRbf(TxInitRbf&& o) : self(o.self) { memset(&o, 0, sizeof(TxInitRbf)); }
4256         TxInitRbf(LDKTxInitRbf&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxInitRbf)); }
4257         operator LDKTxInitRbf() && { LDKTxInitRbf res = self; memset(&self, 0, sizeof(LDKTxInitRbf)); return res; }
4258         ~TxInitRbf() { TxInitRbf_free(self); }
4259         TxInitRbf& operator=(TxInitRbf&& o) { TxInitRbf_free(self); self = o.self; memset(&o, 0, sizeof(TxInitRbf)); return *this; }
4260         LDKTxInitRbf* operator &() { return &self; }
4261         LDKTxInitRbf* operator ->() { return &self; }
4262         const LDKTxInitRbf* operator &() const { return &self; }
4263         const LDKTxInitRbf* operator ->() const { return &self; }
4264 };
4265 class TxAckRbf {
4266 private:
4267         LDKTxAckRbf self;
4268 public:
4269         TxAckRbf(const TxAckRbf&) = delete;
4270         TxAckRbf(TxAckRbf&& o) : self(o.self) { memset(&o, 0, sizeof(TxAckRbf)); }
4271         TxAckRbf(LDKTxAckRbf&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAckRbf)); }
4272         operator LDKTxAckRbf() && { LDKTxAckRbf res = self; memset(&self, 0, sizeof(LDKTxAckRbf)); return res; }
4273         ~TxAckRbf() { TxAckRbf_free(self); }
4274         TxAckRbf& operator=(TxAckRbf&& o) { TxAckRbf_free(self); self = o.self; memset(&o, 0, sizeof(TxAckRbf)); return *this; }
4275         LDKTxAckRbf* operator &() { return &self; }
4276         LDKTxAckRbf* operator ->() { return &self; }
4277         const LDKTxAckRbf* operator &() const { return &self; }
4278         const LDKTxAckRbf* operator ->() const { return &self; }
4279 };
4280 class TxAbort {
4281 private:
4282         LDKTxAbort self;
4283 public:
4284         TxAbort(const TxAbort&) = delete;
4285         TxAbort(TxAbort&& o) : self(o.self) { memset(&o, 0, sizeof(TxAbort)); }
4286         TxAbort(LDKTxAbort&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxAbort)); }
4287         operator LDKTxAbort() && { LDKTxAbort res = self; memset(&self, 0, sizeof(LDKTxAbort)); return res; }
4288         ~TxAbort() { TxAbort_free(self); }
4289         TxAbort& operator=(TxAbort&& o) { TxAbort_free(self); self = o.self; memset(&o, 0, sizeof(TxAbort)); return *this; }
4290         LDKTxAbort* operator &() { return &self; }
4291         LDKTxAbort* operator ->() { return &self; }
4292         const LDKTxAbort* operator &() const { return &self; }
4293         const LDKTxAbort* operator ->() const { return &self; }
4294 };
4295 class Shutdown {
4296 private:
4297         LDKShutdown self;
4298 public:
4299         Shutdown(const Shutdown&) = delete;
4300         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
4301         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
4302         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
4303         ~Shutdown() { Shutdown_free(self); }
4304         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
4305         LDKShutdown* operator &() { return &self; }
4306         LDKShutdown* operator ->() { return &self; }
4307         const LDKShutdown* operator &() const { return &self; }
4308         const LDKShutdown* operator ->() const { return &self; }
4309 };
4310 class ClosingSignedFeeRange {
4311 private:
4312         LDKClosingSignedFeeRange self;
4313 public:
4314         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
4315         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
4316         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
4317         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
4318         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
4319         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
4320         LDKClosingSignedFeeRange* operator &() { return &self; }
4321         LDKClosingSignedFeeRange* operator ->() { return &self; }
4322         const LDKClosingSignedFeeRange* operator &() const { return &self; }
4323         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
4324 };
4325 class ClosingSigned {
4326 private:
4327         LDKClosingSigned self;
4328 public:
4329         ClosingSigned(const ClosingSigned&) = delete;
4330         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
4331         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
4332         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
4333         ~ClosingSigned() { ClosingSigned_free(self); }
4334         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
4335         LDKClosingSigned* operator &() { return &self; }
4336         LDKClosingSigned* operator ->() { return &self; }
4337         const LDKClosingSigned* operator &() const { return &self; }
4338         const LDKClosingSigned* operator ->() const { return &self; }
4339 };
4340 class UpdateAddHTLC {
4341 private:
4342         LDKUpdateAddHTLC self;
4343 public:
4344         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
4345         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
4346         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
4347         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
4348         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
4349         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
4350         LDKUpdateAddHTLC* operator &() { return &self; }
4351         LDKUpdateAddHTLC* operator ->() { return &self; }
4352         const LDKUpdateAddHTLC* operator &() const { return &self; }
4353         const LDKUpdateAddHTLC* operator ->() const { return &self; }
4354 };
4355 class OnionMessage {
4356 private:
4357         LDKOnionMessage self;
4358 public:
4359         OnionMessage(const OnionMessage&) = delete;
4360         OnionMessage(OnionMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessage)); }
4361         OnionMessage(LDKOnionMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessage)); }
4362         operator LDKOnionMessage() && { LDKOnionMessage res = self; memset(&self, 0, sizeof(LDKOnionMessage)); return res; }
4363         ~OnionMessage() { OnionMessage_free(self); }
4364         OnionMessage& operator=(OnionMessage&& o) { OnionMessage_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessage)); return *this; }
4365         LDKOnionMessage* operator &() { return &self; }
4366         LDKOnionMessage* operator ->() { return &self; }
4367         const LDKOnionMessage* operator &() const { return &self; }
4368         const LDKOnionMessage* operator ->() const { return &self; }
4369 };
4370 class UpdateFulfillHTLC {
4371 private:
4372         LDKUpdateFulfillHTLC self;
4373 public:
4374         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
4375         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
4376         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
4377         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
4378         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
4379         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
4380         LDKUpdateFulfillHTLC* operator &() { return &self; }
4381         LDKUpdateFulfillHTLC* operator ->() { return &self; }
4382         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
4383         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
4384 };
4385 class UpdateFailHTLC {
4386 private:
4387         LDKUpdateFailHTLC self;
4388 public:
4389         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
4390         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
4391         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
4392         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
4393         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
4394         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
4395         LDKUpdateFailHTLC* operator &() { return &self; }
4396         LDKUpdateFailHTLC* operator ->() { return &self; }
4397         const LDKUpdateFailHTLC* operator &() const { return &self; }
4398         const LDKUpdateFailHTLC* operator ->() const { return &self; }
4399 };
4400 class UpdateFailMalformedHTLC {
4401 private:
4402         LDKUpdateFailMalformedHTLC self;
4403 public:
4404         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
4405         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
4406         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
4407         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
4408         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
4409         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
4410         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
4411         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
4412         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
4413         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
4414 };
4415 class CommitmentSigned {
4416 private:
4417         LDKCommitmentSigned self;
4418 public:
4419         CommitmentSigned(const CommitmentSigned&) = delete;
4420         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
4421         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
4422         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
4423         ~CommitmentSigned() { CommitmentSigned_free(self); }
4424         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
4425         LDKCommitmentSigned* operator &() { return &self; }
4426         LDKCommitmentSigned* operator ->() { return &self; }
4427         const LDKCommitmentSigned* operator &() const { return &self; }
4428         const LDKCommitmentSigned* operator ->() const { return &self; }
4429 };
4430 class RevokeAndACK {
4431 private:
4432         LDKRevokeAndACK self;
4433 public:
4434         RevokeAndACK(const RevokeAndACK&) = delete;
4435         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
4436         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
4437         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
4438         ~RevokeAndACK() { RevokeAndACK_free(self); }
4439         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
4440         LDKRevokeAndACK* operator &() { return &self; }
4441         LDKRevokeAndACK* operator ->() { return &self; }
4442         const LDKRevokeAndACK* operator &() const { return &self; }
4443         const LDKRevokeAndACK* operator ->() const { return &self; }
4444 };
4445 class UpdateFee {
4446 private:
4447         LDKUpdateFee self;
4448 public:
4449         UpdateFee(const UpdateFee&) = delete;
4450         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
4451         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
4452         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
4453         ~UpdateFee() { UpdateFee_free(self); }
4454         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
4455         LDKUpdateFee* operator &() { return &self; }
4456         LDKUpdateFee* operator ->() { return &self; }
4457         const LDKUpdateFee* operator &() const { return &self; }
4458         const LDKUpdateFee* operator ->() const { return &self; }
4459 };
4460 class ChannelReestablish {
4461 private:
4462         LDKChannelReestablish self;
4463 public:
4464         ChannelReestablish(const ChannelReestablish&) = delete;
4465         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
4466         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
4467         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
4468         ~ChannelReestablish() { ChannelReestablish_free(self); }
4469         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
4470         LDKChannelReestablish* operator &() { return &self; }
4471         LDKChannelReestablish* operator ->() { return &self; }
4472         const LDKChannelReestablish* operator &() const { return &self; }
4473         const LDKChannelReestablish* operator ->() const { return &self; }
4474 };
4475 class AnnouncementSignatures {
4476 private:
4477         LDKAnnouncementSignatures self;
4478 public:
4479         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
4480         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
4481         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
4482         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
4483         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
4484         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
4485         LDKAnnouncementSignatures* operator &() { return &self; }
4486         LDKAnnouncementSignatures* operator ->() { return &self; }
4487         const LDKAnnouncementSignatures* operator &() const { return &self; }
4488         const LDKAnnouncementSignatures* operator ->() const { return &self; }
4489 };
4490 class SocketAddress {
4491 private:
4492         LDKSocketAddress self;
4493 public:
4494         SocketAddress(const SocketAddress&) = delete;
4495         SocketAddress(SocketAddress&& o) : self(o.self) { memset(&o, 0, sizeof(SocketAddress)); }
4496         SocketAddress(LDKSocketAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketAddress)); }
4497         operator LDKSocketAddress() && { LDKSocketAddress res = self; memset(&self, 0, sizeof(LDKSocketAddress)); return res; }
4498         ~SocketAddress() { SocketAddress_free(self); }
4499         SocketAddress& operator=(SocketAddress&& o) { SocketAddress_free(self); self = o.self; memset(&o, 0, sizeof(SocketAddress)); return *this; }
4500         LDKSocketAddress* operator &() { return &self; }
4501         LDKSocketAddress* operator ->() { return &self; }
4502         const LDKSocketAddress* operator &() const { return &self; }
4503         const LDKSocketAddress* operator ->() const { return &self; }
4504 };
4505 class SocketAddressParseError {
4506 private:
4507         LDKSocketAddressParseError self;
4508 public:
4509         SocketAddressParseError(const SocketAddressParseError&) = delete;
4510         SocketAddressParseError(SocketAddressParseError&& o) : self(o.self) { memset(&o, 0, sizeof(SocketAddressParseError)); }
4511         SocketAddressParseError(LDKSocketAddressParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketAddressParseError)); }
4512         operator LDKSocketAddressParseError() && { LDKSocketAddressParseError res = self; memset(&self, 0, sizeof(LDKSocketAddressParseError)); return res; }
4513         SocketAddressParseError& operator=(SocketAddressParseError&& o) { self = o.self; memset(&o, 0, sizeof(SocketAddressParseError)); return *this; }
4514         LDKSocketAddressParseError* operator &() { return &self; }
4515         LDKSocketAddressParseError* operator ->() { return &self; }
4516         const LDKSocketAddressParseError* operator &() const { return &self; }
4517         const LDKSocketAddressParseError* operator ->() const { return &self; }
4518 };
4519 class UnsignedGossipMessage {
4520 private:
4521         LDKUnsignedGossipMessage self;
4522 public:
4523         UnsignedGossipMessage(const UnsignedGossipMessage&) = delete;
4524         UnsignedGossipMessage(UnsignedGossipMessage&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedGossipMessage)); }
4525         UnsignedGossipMessage(LDKUnsignedGossipMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedGossipMessage)); }
4526         operator LDKUnsignedGossipMessage() && { LDKUnsignedGossipMessage res = self; memset(&self, 0, sizeof(LDKUnsignedGossipMessage)); return res; }
4527         ~UnsignedGossipMessage() { UnsignedGossipMessage_free(self); }
4528         UnsignedGossipMessage& operator=(UnsignedGossipMessage&& o) { UnsignedGossipMessage_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedGossipMessage)); return *this; }
4529         LDKUnsignedGossipMessage* operator &() { return &self; }
4530         LDKUnsignedGossipMessage* operator ->() { return &self; }
4531         const LDKUnsignedGossipMessage* operator &() const { return &self; }
4532         const LDKUnsignedGossipMessage* operator ->() const { return &self; }
4533 };
4534 class UnsignedNodeAnnouncement {
4535 private:
4536         LDKUnsignedNodeAnnouncement self;
4537 public:
4538         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
4539         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
4540         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
4541         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
4542         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
4543         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
4544         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
4545         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
4546         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
4547         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
4548 };
4549 class NodeAnnouncement {
4550 private:
4551         LDKNodeAnnouncement self;
4552 public:
4553         NodeAnnouncement(const NodeAnnouncement&) = delete;
4554         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
4555         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
4556         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
4557         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
4558         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
4559         LDKNodeAnnouncement* operator &() { return &self; }
4560         LDKNodeAnnouncement* operator ->() { return &self; }
4561         const LDKNodeAnnouncement* operator &() const { return &self; }
4562         const LDKNodeAnnouncement* operator ->() const { return &self; }
4563 };
4564 class UnsignedChannelAnnouncement {
4565 private:
4566         LDKUnsignedChannelAnnouncement self;
4567 public:
4568         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
4569         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
4570         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
4571         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
4572         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
4573         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
4574         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
4575         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
4576         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
4577         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
4578 };
4579 class ChannelAnnouncement {
4580 private:
4581         LDKChannelAnnouncement self;
4582 public:
4583         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
4584         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
4585         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
4586         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
4587         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
4588         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
4589         LDKChannelAnnouncement* operator &() { return &self; }
4590         LDKChannelAnnouncement* operator ->() { return &self; }
4591         const LDKChannelAnnouncement* operator &() const { return &self; }
4592         const LDKChannelAnnouncement* operator ->() const { return &self; }
4593 };
4594 class UnsignedChannelUpdate {
4595 private:
4596         LDKUnsignedChannelUpdate self;
4597 public:
4598         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
4599         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
4600         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
4601         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
4602         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
4603         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
4604         LDKUnsignedChannelUpdate* operator &() { return &self; }
4605         LDKUnsignedChannelUpdate* operator ->() { return &self; }
4606         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
4607         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
4608 };
4609 class ChannelUpdate {
4610 private:
4611         LDKChannelUpdate self;
4612 public:
4613         ChannelUpdate(const ChannelUpdate&) = delete;
4614         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
4615         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
4616         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
4617         ~ChannelUpdate() { ChannelUpdate_free(self); }
4618         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
4619         LDKChannelUpdate* operator &() { return &self; }
4620         LDKChannelUpdate* operator ->() { return &self; }
4621         const LDKChannelUpdate* operator &() const { return &self; }
4622         const LDKChannelUpdate* operator ->() const { return &self; }
4623 };
4624 class QueryChannelRange {
4625 private:
4626         LDKQueryChannelRange self;
4627 public:
4628         QueryChannelRange(const QueryChannelRange&) = delete;
4629         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
4630         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
4631         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
4632         ~QueryChannelRange() { QueryChannelRange_free(self); }
4633         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
4634         LDKQueryChannelRange* operator &() { return &self; }
4635         LDKQueryChannelRange* operator ->() { return &self; }
4636         const LDKQueryChannelRange* operator &() const { return &self; }
4637         const LDKQueryChannelRange* operator ->() const { return &self; }
4638 };
4639 class ReplyChannelRange {
4640 private:
4641         LDKReplyChannelRange self;
4642 public:
4643         ReplyChannelRange(const ReplyChannelRange&) = delete;
4644         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
4645         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
4646         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
4647         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
4648         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
4649         LDKReplyChannelRange* operator &() { return &self; }
4650         LDKReplyChannelRange* operator ->() { return &self; }
4651         const LDKReplyChannelRange* operator &() const { return &self; }
4652         const LDKReplyChannelRange* operator ->() const { return &self; }
4653 };
4654 class QueryShortChannelIds {
4655 private:
4656         LDKQueryShortChannelIds self;
4657 public:
4658         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
4659         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
4660         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
4661         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
4662         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
4663         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
4664         LDKQueryShortChannelIds* operator &() { return &self; }
4665         LDKQueryShortChannelIds* operator ->() { return &self; }
4666         const LDKQueryShortChannelIds* operator &() const { return &self; }
4667         const LDKQueryShortChannelIds* operator ->() const { return &self; }
4668 };
4669 class ReplyShortChannelIdsEnd {
4670 private:
4671         LDKReplyShortChannelIdsEnd self;
4672 public:
4673         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
4674         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
4675         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
4676         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
4677         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
4678         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
4679         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
4680         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
4681         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
4682         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
4683 };
4684 class GossipTimestampFilter {
4685 private:
4686         LDKGossipTimestampFilter self;
4687 public:
4688         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
4689         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
4690         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
4691         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
4692         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
4693         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
4694         LDKGossipTimestampFilter* operator &() { return &self; }
4695         LDKGossipTimestampFilter* operator ->() { return &self; }
4696         const LDKGossipTimestampFilter* operator &() const { return &self; }
4697         const LDKGossipTimestampFilter* operator ->() const { return &self; }
4698 };
4699 class ErrorAction {
4700 private:
4701         LDKErrorAction self;
4702 public:
4703         ErrorAction(const ErrorAction&) = delete;
4704         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
4705         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
4706         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
4707         ~ErrorAction() { ErrorAction_free(self); }
4708         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
4709         LDKErrorAction* operator &() { return &self; }
4710         LDKErrorAction* operator ->() { return &self; }
4711         const LDKErrorAction* operator &() const { return &self; }
4712         const LDKErrorAction* operator ->() const { return &self; }
4713 };
4714 class LightningError {
4715 private:
4716         LDKLightningError self;
4717 public:
4718         LightningError(const LightningError&) = delete;
4719         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
4720         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
4721         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
4722         ~LightningError() { LightningError_free(self); }
4723         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
4724         LDKLightningError* operator &() { return &self; }
4725         LDKLightningError* operator ->() { return &self; }
4726         const LDKLightningError* operator &() const { return &self; }
4727         const LDKLightningError* operator ->() const { return &self; }
4728 };
4729 class CommitmentUpdate {
4730 private:
4731         LDKCommitmentUpdate self;
4732 public:
4733         CommitmentUpdate(const CommitmentUpdate&) = delete;
4734         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
4735         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
4736         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
4737         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
4738         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
4739         LDKCommitmentUpdate* operator &() { return &self; }
4740         LDKCommitmentUpdate* operator ->() { return &self; }
4741         const LDKCommitmentUpdate* operator &() const { return &self; }
4742         const LDKCommitmentUpdate* operator ->() const { return &self; }
4743 };
4744 class ChannelMessageHandler {
4745 private:
4746         LDKChannelMessageHandler self;
4747 public:
4748         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
4749         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
4750         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
4751         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
4752         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
4753         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
4754         LDKChannelMessageHandler* operator &() { return &self; }
4755         LDKChannelMessageHandler* operator ->() { return &self; }
4756         const LDKChannelMessageHandler* operator &() const { return &self; }
4757         const LDKChannelMessageHandler* operator ->() const { return &self; }
4758         /**
4759          *  Handle an incoming `open_channel` message from the given peer.
4760          */
4761         inline void handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg);
4762         /**
4763          *  Handle an incoming `open_channel2` message from the given peer.
4764          */
4765         inline void handle_open_channel_v2(struct LDKPublicKey their_node_id, const struct LDKOpenChannelV2 *NONNULL_PTR msg);
4766         /**
4767          *  Handle an incoming `accept_channel` message from the given peer.
4768          */
4769         inline void handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg);
4770         /**
4771          *  Handle an incoming `accept_channel2` message from the given peer.
4772          */
4773         inline void handle_accept_channel_v2(struct LDKPublicKey their_node_id, const struct LDKAcceptChannelV2 *NONNULL_PTR msg);
4774         /**
4775          *  Handle an incoming `funding_created` message from the given peer.
4776          */
4777         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
4778         /**
4779          *  Handle an incoming `funding_signed` message from the given peer.
4780          */
4781         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
4782         /**
4783          *  Handle an incoming `channel_ready` message from the given peer.
4784          */
4785         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
4786         /**
4787          *  Handle an incoming `shutdown` message from the given peer.
4788          */
4789         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg);
4790         /**
4791          *  Handle an incoming `closing_signed` message from the given peer.
4792          */
4793         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
4794         /**
4795          *  Handle an incoming `stfu` message from the given peer.
4796          */
4797         inline void handle_stfu(struct LDKPublicKey their_node_id, const struct LDKStfu *NONNULL_PTR msg);
4798         /**
4799          *  Handle an incoming `tx_add_input message` from the given peer.
4800          */
4801         inline void handle_tx_add_input(struct LDKPublicKey their_node_id, const struct LDKTxAddInput *NONNULL_PTR msg);
4802         /**
4803          *  Handle an incoming `tx_add_output` message from the given peer.
4804          */
4805         inline void handle_tx_add_output(struct LDKPublicKey their_node_id, const struct LDKTxAddOutput *NONNULL_PTR msg);
4806         /**
4807          *  Handle an incoming `tx_remove_input` message from the given peer.
4808          */
4809         inline void handle_tx_remove_input(struct LDKPublicKey their_node_id, const struct LDKTxRemoveInput *NONNULL_PTR msg);
4810         /**
4811          *  Handle an incoming `tx_remove_output` message from the given peer.
4812          */
4813         inline void handle_tx_remove_output(struct LDKPublicKey their_node_id, const struct LDKTxRemoveOutput *NONNULL_PTR msg);
4814         /**
4815          *  Handle an incoming `tx_complete message` from the given peer.
4816          */
4817         inline void handle_tx_complete(struct LDKPublicKey their_node_id, const struct LDKTxComplete *NONNULL_PTR msg);
4818         /**
4819          *  Handle an incoming `tx_signatures` message from the given peer.
4820          */
4821         inline void handle_tx_signatures(struct LDKPublicKey their_node_id, const struct LDKTxSignatures *NONNULL_PTR msg);
4822         /**
4823          *  Handle an incoming `tx_init_rbf` message from the given peer.
4824          */
4825         inline void handle_tx_init_rbf(struct LDKPublicKey their_node_id, const struct LDKTxInitRbf *NONNULL_PTR msg);
4826         /**
4827          *  Handle an incoming `tx_ack_rbf` message from the given peer.
4828          */
4829         inline void handle_tx_ack_rbf(struct LDKPublicKey their_node_id, const struct LDKTxAckRbf *NONNULL_PTR msg);
4830         /**
4831          *  Handle an incoming `tx_abort message` from the given peer.
4832          */
4833         inline void handle_tx_abort(struct LDKPublicKey their_node_id, const struct LDKTxAbort *NONNULL_PTR msg);
4834         /**
4835          *  Handle an incoming `update_add_htlc` message from the given peer.
4836          */
4837         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
4838         /**
4839          *  Handle an incoming `update_fulfill_htlc` message from the given peer.
4840          */
4841         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
4842         /**
4843          *  Handle an incoming `update_fail_htlc` message from the given peer.
4844          */
4845         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
4846         /**
4847          *  Handle an incoming `update_fail_malformed_htlc` message from the given peer.
4848          */
4849         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
4850         /**
4851          *  Handle an incoming `commitment_signed` message from the given peer.
4852          */
4853         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
4854         /**
4855          *  Handle an incoming `revoke_and_ack` message from the given peer.
4856          */
4857         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
4858         /**
4859          *  Handle an incoming `update_fee` message from the given peer.
4860          */
4861         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
4862         /**
4863          *  Handle an incoming `announcement_signatures` message from the given peer.
4864          */
4865         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
4866         /**
4867          *  Indicates a connection to the peer failed/an existing connection was lost.
4868          */
4869         inline void peer_disconnected(struct LDKPublicKey their_node_id);
4870         /**
4871          *  Handle a peer reconnecting, possibly generating `channel_reestablish` message(s).
4872          * 
4873          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4874          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4875          *  message handlers may still wish to communicate with this peer.
4876          */
4877         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound);
4878         /**
4879          *  Handle an incoming `channel_reestablish` message from the given peer.
4880          */
4881         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
4882         /**
4883          *  Handle an incoming `channel_update` message from the given peer.
4884          */
4885         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
4886         /**
4887          *  Handle an incoming `error` message from the given peer.
4888          */
4889         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
4890         /**
4891          *  Gets the node feature flags which this handler itself supports. All available handlers are
4892          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4893          *  which are broadcasted in our [`NodeAnnouncement`] message.
4894          */
4895         inline LDK::NodeFeatures provided_node_features();
4896         /**
4897          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4898          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4899          *  which are sent in our [`Init`] message.
4900          * 
4901          *  Note that this method is called before [`Self::peer_connected`].
4902          */
4903         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4904         /**
4905          *  Gets the chain hashes for this `ChannelMessageHandler` indicating which chains it supports.
4906          * 
4907          *  If it's `None`, then no particular network chain hash compatibility will be enforced when
4908          *  connecting to peers.
4909          */
4910         inline LDK::COption_CVec_ThirtyTwoBytesZZ get_chain_hashes();
4911 };
4912 class RoutingMessageHandler {
4913 private:
4914         LDKRoutingMessageHandler self;
4915 public:
4916         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
4917         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
4918         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
4919         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
4920         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
4921         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
4922         LDKRoutingMessageHandler* operator &() { return &self; }
4923         LDKRoutingMessageHandler* operator ->() { return &self; }
4924         const LDKRoutingMessageHandler* operator &() const { return &self; }
4925         const LDKRoutingMessageHandler* operator ->() const { return &self; }
4926         /**
4927          *  Handle an incoming `node_announcement` message, returning `true` if it should be forwarded on,
4928          *  `false` or returning an `Err` otherwise.
4929          */
4930         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
4931         /**
4932          *  Handle a `channel_announcement` message, returning `true` if it should be forwarded on, `false`
4933          *  or returning an `Err` otherwise.
4934          */
4935         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
4936         /**
4937          *  Handle an incoming `channel_update` message, returning true if it should be forwarded on,
4938          *  `false` or returning an `Err` otherwise.
4939          */
4940         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
4941         /**
4942          *  Gets channel announcements and updates required to dump our routing table to a remote node,
4943          *  starting at the `short_channel_id` indicated by `starting_point` and including announcements
4944          *  for a single channel.
4945          */
4946         inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcement(uint64_t starting_point);
4947         /**
4948          *  Gets a node announcement required to dump our routing table to a remote node, starting at
4949          *  the node *after* the provided pubkey and including up to one announcement immediately
4950          *  higher (as defined by `<PublicKey as Ord>::cmp`) than `starting_point`.
4951          *  If `None` is provided for `starting_point`, we start at the first node.
4952          * 
4953          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
4954          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
4955          */
4956         inline LDK::NodeAnnouncement get_next_node_announcement(struct LDKNodeId starting_point);
4957         /**
4958          *  Called when a connection is established with a peer. This can be used to
4959          *  perform routing table synchronization using a strategy defined by the
4960          *  implementor.
4961          * 
4962          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4963          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4964          *  message handlers may still wish to communicate with this peer.
4965          */
4966         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
4967         /**
4968          *  Handles the reply of a query we initiated to learn about channels
4969          *  for a given range of blocks. We can expect to receive one or more
4970          *  replies to a single query.
4971          */
4972         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
4973         /**
4974          *  Handles the reply of a query we initiated asking for routing gossip
4975          *  messages for a list of channels. We should receive this message when
4976          *  a node has completed its best effort to send us the pertaining routing
4977          *  gossip messages.
4978          */
4979         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
4980         /**
4981          *  Handles when a peer asks us to send a list of `short_channel_id`s
4982          *  for the requested range of blocks.
4983          */
4984         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
4985         /**
4986          *  Handles when a peer asks us to send routing gossip messages for a
4987          *  list of `short_channel_id`s.
4988          */
4989         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
4990         /**
4991          *  Indicates that there are a large number of [`ChannelAnnouncement`] (or other) messages
4992          *  pending some async action. While there is no guarantee of the rate of future messages, the
4993          *  caller should seek to reduce the rate of new gossip messages handled, especially
4994          *  [`ChannelAnnouncement`]s.
4995          */
4996         inline bool processing_queue_high();
4997         /**
4998          *  Gets the node feature flags which this handler itself supports. All available handlers are
4999          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
5000          *  which are broadcasted in our [`NodeAnnouncement`] message.
5001          */
5002         inline LDK::NodeFeatures provided_node_features();
5003         /**
5004          *  Gets the init feature flags which should be sent to the given peer. All available handlers
5005          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
5006          *  which are sent in our [`Init`] message.
5007          * 
5008          *  Note that this method is called before [`Self::peer_connected`].
5009          */
5010         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
5011 };
5012 class OnionMessageHandler {
5013 private:
5014         LDKOnionMessageHandler self;
5015 public:
5016         OnionMessageHandler(const OnionMessageHandler&) = delete;
5017         OnionMessageHandler(OnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageHandler)); }
5018         OnionMessageHandler(LDKOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageHandler)); }
5019         operator LDKOnionMessageHandler() && { LDKOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKOnionMessageHandler)); return res; }
5020         ~OnionMessageHandler() { OnionMessageHandler_free(self); }
5021         OnionMessageHandler& operator=(OnionMessageHandler&& o) { OnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageHandler)); return *this; }
5022         LDKOnionMessageHandler* operator &() { return &self; }
5023         LDKOnionMessageHandler* operator ->() { return &self; }
5024         const LDKOnionMessageHandler* operator &() const { return &self; }
5025         const LDKOnionMessageHandler* operator ->() const { return &self; }
5026         /**
5027          *  Because much of the lightning network does not yet support forwarding onion messages, we
5028          *  may need to directly connect to a node which will forward a message for us. In such a case,
5029          *  this method will return the set of nodes which need connection by node_id and the
5030          *  corresponding socket addresses where they may accept incoming connections.
5031          * 
5032          *  Thus, this method should be polled regularly to detect messages await such a direct
5033          *  connection.
5034          */
5035         inline LDK::CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ get_and_clear_connections_needed();
5036         /**
5037          *  Handle an incoming `onion_message` message from the given peer.
5038          */
5039         inline void handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg);
5040         /**
5041          *  Returns the next pending onion message for the peer with the given node id.
5042          * 
5043          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
5044          */
5045         inline LDK::OnionMessage next_onion_message_for_peer(struct LDKPublicKey peer_node_id);
5046         /**
5047          *  Called when a connection is established with a peer. Can be used to track which peers
5048          *  advertise onion message support and are online.
5049          * 
5050          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
5051          *  with us. Implementors should be somewhat conservative about doing so, however, as other
5052          *  message handlers may still wish to communicate with this peer.
5053          */
5054         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
5055         /**
5056          *  Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
5057          *  drop and refuse to forward onion messages to this peer.
5058          */
5059         inline void peer_disconnected(struct LDKPublicKey their_node_id);
5060         /**
5061          *  Performs actions that should happen roughly every ten seconds after startup. Allows handlers
5062          *  to drop any buffered onion messages intended for prospective peers.
5063          */
5064         inline void timer_tick_occurred();
5065         /**
5066          *  Gets the node feature flags which this handler itself supports. All available handlers are
5067          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
5068          *  which are broadcasted in our [`NodeAnnouncement`] message.
5069          */
5070         inline LDK::NodeFeatures provided_node_features();
5071         /**
5072          *  Gets the init feature flags which should be sent to the given peer. All available handlers
5073          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
5074          *  which are sent in our [`Init`] message.
5075          * 
5076          *  Note that this method is called before [`Self::peer_connected`].
5077          */
5078         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
5079 };
5080 class FinalOnionHopData {
5081 private:
5082         LDKFinalOnionHopData self;
5083 public:
5084         FinalOnionHopData(const FinalOnionHopData&) = delete;
5085         FinalOnionHopData(FinalOnionHopData&& o) : self(o.self) { memset(&o, 0, sizeof(FinalOnionHopData)); }
5086         FinalOnionHopData(LDKFinalOnionHopData&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFinalOnionHopData)); }
5087         operator LDKFinalOnionHopData() && { LDKFinalOnionHopData res = self; memset(&self, 0, sizeof(LDKFinalOnionHopData)); return res; }
5088         ~FinalOnionHopData() { FinalOnionHopData_free(self); }
5089         FinalOnionHopData& operator=(FinalOnionHopData&& o) { FinalOnionHopData_free(self); self = o.self; memset(&o, 0, sizeof(FinalOnionHopData)); return *this; }
5090         LDKFinalOnionHopData* operator &() { return &self; }
5091         LDKFinalOnionHopData* operator ->() { return &self; }
5092         const LDKFinalOnionHopData* operator &() const { return &self; }
5093         const LDKFinalOnionHopData* operator ->() const { return &self; }
5094 };
5095 class OnionPacket {
5096 private:
5097         LDKOnionPacket self;
5098 public:
5099         OnionPacket(const OnionPacket&) = delete;
5100         OnionPacket(OnionPacket&& o) : self(o.self) { memset(&o, 0, sizeof(OnionPacket)); }
5101         OnionPacket(LDKOnionPacket&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionPacket)); }
5102         operator LDKOnionPacket() && { LDKOnionPacket res = self; memset(&self, 0, sizeof(LDKOnionPacket)); return res; }
5103         ~OnionPacket() { OnionPacket_free(self); }
5104         OnionPacket& operator=(OnionPacket&& o) { OnionPacket_free(self); self = o.self; memset(&o, 0, sizeof(OnionPacket)); return *this; }
5105         LDKOnionPacket* operator &() { return &self; }
5106         LDKOnionPacket* operator ->() { return &self; }
5107         const LDKOnionPacket* operator &() const { return &self; }
5108         const LDKOnionPacket* operator ->() const { return &self; }
5109 };
5110 class TrampolineOnionPacket {
5111 private:
5112         LDKTrampolineOnionPacket self;
5113 public:
5114         TrampolineOnionPacket(const TrampolineOnionPacket&) = delete;
5115         TrampolineOnionPacket(TrampolineOnionPacket&& o) : self(o.self) { memset(&o, 0, sizeof(TrampolineOnionPacket)); }
5116         TrampolineOnionPacket(LDKTrampolineOnionPacket&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrampolineOnionPacket)); }
5117         operator LDKTrampolineOnionPacket() && { LDKTrampolineOnionPacket res = self; memset(&self, 0, sizeof(LDKTrampolineOnionPacket)); return res; }
5118         ~TrampolineOnionPacket() { TrampolineOnionPacket_free(self); }
5119         TrampolineOnionPacket& operator=(TrampolineOnionPacket&& o) { TrampolineOnionPacket_free(self); self = o.self; memset(&o, 0, sizeof(TrampolineOnionPacket)); return *this; }
5120         LDKTrampolineOnionPacket* operator &() { return &self; }
5121         LDKTrampolineOnionPacket* operator ->() { return &self; }
5122         const LDKTrampolineOnionPacket* operator &() const { return &self; }
5123         const LDKTrampolineOnionPacket* operator ->() const { return &self; }
5124 };
5125 class Level {
5126 private:
5127         LDKLevel self;
5128 public:
5129         Level(const Level&) = delete;
5130         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
5131         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
5132         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
5133         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
5134         LDKLevel* operator &() { return &self; }
5135         LDKLevel* operator ->() { return &self; }
5136         const LDKLevel* operator &() const { return &self; }
5137         const LDKLevel* operator ->() const { return &self; }
5138 };
5139 class Record {
5140 private:
5141         LDKRecord self;
5142 public:
5143         Record(const Record&) = delete;
5144         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
5145         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
5146         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
5147         ~Record() { Record_free(self); }
5148         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
5149         LDKRecord* operator &() { return &self; }
5150         LDKRecord* operator ->() { return &self; }
5151         const LDKRecord* operator &() const { return &self; }
5152         const LDKRecord* operator ->() const { return &self; }
5153 };
5154 class Logger {
5155 private:
5156         LDKLogger self;
5157 public:
5158         Logger(const Logger&) = delete;
5159         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
5160         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
5161         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
5162         ~Logger() { Logger_free(self); }
5163         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
5164         LDKLogger* operator &() { return &self; }
5165         LDKLogger* operator ->() { return &self; }
5166         const LDKLogger* operator &() const { return &self; }
5167         const LDKLogger* operator ->() const { return &self; }
5168         /**
5169          *  Logs the [`Record`].
5170          */
5171         inline void log(struct LDKRecord record);
5172 };
5173 class FutureCallback {
5174 private:
5175         LDKFutureCallback self;
5176 public:
5177         FutureCallback(const FutureCallback&) = delete;
5178         FutureCallback(FutureCallback&& o) : self(o.self) { memset(&o, 0, sizeof(FutureCallback)); }
5179         FutureCallback(LDKFutureCallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFutureCallback)); }
5180         operator LDKFutureCallback() && { LDKFutureCallback res = self; memset(&self, 0, sizeof(LDKFutureCallback)); return res; }
5181         ~FutureCallback() { FutureCallback_free(self); }
5182         FutureCallback& operator=(FutureCallback&& o) { FutureCallback_free(self); self = o.self; memset(&o, 0, sizeof(FutureCallback)); return *this; }
5183         LDKFutureCallback* operator &() { return &self; }
5184         LDKFutureCallback* operator ->() { return &self; }
5185         const LDKFutureCallback* operator &() const { return &self; }
5186         const LDKFutureCallback* operator ->() const { return &self; }
5187         /**
5188          *  The method which is called.
5189          */
5190         inline void call();
5191 };
5192 class Future {
5193 private:
5194         LDKFuture self;
5195 public:
5196         Future(const Future&) = delete;
5197         Future(Future&& o) : self(o.self) { memset(&o, 0, sizeof(Future)); }
5198         Future(LDKFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFuture)); }
5199         operator LDKFuture() && { LDKFuture res = self; memset(&self, 0, sizeof(LDKFuture)); return res; }
5200         ~Future() { Future_free(self); }
5201         Future& operator=(Future&& o) { Future_free(self); self = o.self; memset(&o, 0, sizeof(Future)); return *this; }
5202         LDKFuture* operator &() { return &self; }
5203         LDKFuture* operator ->() { return &self; }
5204         const LDKFuture* operator &() const { return &self; }
5205         const LDKFuture* operator ->() const { return &self; }
5206 };
5207 class Sleeper {
5208 private:
5209         LDKSleeper self;
5210 public:
5211         Sleeper(const Sleeper&) = delete;
5212         Sleeper(Sleeper&& o) : self(o.self) { memset(&o, 0, sizeof(Sleeper)); }
5213         Sleeper(LDKSleeper&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSleeper)); }
5214         operator LDKSleeper() && { LDKSleeper res = self; memset(&self, 0, sizeof(LDKSleeper)); return res; }
5215         ~Sleeper() { Sleeper_free(self); }
5216         Sleeper& operator=(Sleeper&& o) { Sleeper_free(self); self = o.self; memset(&o, 0, sizeof(Sleeper)); return *this; }
5217         LDKSleeper* operator &() { return &self; }
5218         LDKSleeper* operator ->() { return &self; }
5219         const LDKSleeper* operator &() const { return &self; }
5220         const LDKSleeper* operator ->() const { return &self; }
5221 };
5222 class OffersMessageHandler {
5223 private:
5224         LDKOffersMessageHandler self;
5225 public:
5226         OffersMessageHandler(const OffersMessageHandler&) = delete;
5227         OffersMessageHandler(OffersMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OffersMessageHandler)); }
5228         OffersMessageHandler(LDKOffersMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffersMessageHandler)); }
5229         operator LDKOffersMessageHandler() && { LDKOffersMessageHandler res = self; memset(&self, 0, sizeof(LDKOffersMessageHandler)); return res; }
5230         ~OffersMessageHandler() { OffersMessageHandler_free(self); }
5231         OffersMessageHandler& operator=(OffersMessageHandler&& o) { OffersMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OffersMessageHandler)); return *this; }
5232         LDKOffersMessageHandler* operator &() { return &self; }
5233         LDKOffersMessageHandler* operator ->() { return &self; }
5234         const LDKOffersMessageHandler* operator &() const { return &self; }
5235         const LDKOffersMessageHandler* operator ->() const { return &self; }
5236         /**
5237          *  Handles the given message by either responding with an [`Bolt12Invoice`], sending a payment,
5238          *  or replying with an error.
5239          * 
5240          *  The returned [`OffersMessage`], if any, is enqueued to be sent by [`OnionMessenger`].
5241          * 
5242          *  [`OnionMessenger`]: crate::onion_message::messenger::OnionMessenger
5243          */
5244         inline LDK::COption_OffersMessageZ handle_message(struct LDKOffersMessage message);
5245         /**
5246          *  Releases any [`OffersMessage`]s that need to be sent.
5247          * 
5248          *  Typically, this is used for messages initiating a payment flow rather than in response to
5249          *  another message. The latter should use the return value of [`Self::handle_message`].
5250          */
5251         inline LDK::CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ release_pending_messages();
5252 };
5253 class OffersMessage {
5254 private:
5255         LDKOffersMessage self;
5256 public:
5257         OffersMessage(const OffersMessage&) = delete;
5258         OffersMessage(OffersMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OffersMessage)); }
5259         OffersMessage(LDKOffersMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOffersMessage)); }
5260         operator LDKOffersMessage() && { LDKOffersMessage res = self; memset(&self, 0, sizeof(LDKOffersMessage)); return res; }
5261         ~OffersMessage() { OffersMessage_free(self); }
5262         OffersMessage& operator=(OffersMessage&& o) { OffersMessage_free(self); self = o.self; memset(&o, 0, sizeof(OffersMessage)); return *this; }
5263         LDKOffersMessage* operator &() { return &self; }
5264         LDKOffersMessage* operator ->() { return &self; }
5265         const LDKOffersMessage* operator &() const { return &self; }
5266         const LDKOffersMessage* operator ->() const { return &self; }
5267 };
5268 class HTLCClaim {
5269 private:
5270         LDKHTLCClaim self;
5271 public:
5272         HTLCClaim(const HTLCClaim&) = delete;
5273         HTLCClaim(HTLCClaim&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCClaim)); }
5274         HTLCClaim(LDKHTLCClaim&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCClaim)); }
5275         operator LDKHTLCClaim() && { LDKHTLCClaim res = self; memset(&self, 0, sizeof(LDKHTLCClaim)); return res; }
5276         HTLCClaim& operator=(HTLCClaim&& o) { self = o.self; memset(&o, 0, sizeof(HTLCClaim)); return *this; }
5277         LDKHTLCClaim* operator &() { return &self; }
5278         LDKHTLCClaim* operator ->() { return &self; }
5279         const LDKHTLCClaim* operator &() const { return &self; }
5280         const LDKHTLCClaim* operator ->() const { return &self; }
5281 };
5282 class CounterpartyCommitmentSecrets {
5283 private:
5284         LDKCounterpartyCommitmentSecrets self;
5285 public:
5286         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
5287         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
5288         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
5289         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
5290         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
5291         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
5292         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
5293         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
5294         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
5295         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
5296 };
5297 class TxCreationKeys {
5298 private:
5299         LDKTxCreationKeys self;
5300 public:
5301         TxCreationKeys(const TxCreationKeys&) = delete;
5302         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
5303         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
5304         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
5305         ~TxCreationKeys() { TxCreationKeys_free(self); }
5306         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
5307         LDKTxCreationKeys* operator &() { return &self; }
5308         LDKTxCreationKeys* operator ->() { return &self; }
5309         const LDKTxCreationKeys* operator &() const { return &self; }
5310         const LDKTxCreationKeys* operator ->() const { return &self; }
5311 };
5312 class ChannelPublicKeys {
5313 private:
5314         LDKChannelPublicKeys self;
5315 public:
5316         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
5317         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
5318         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
5319         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
5320         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
5321         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
5322         LDKChannelPublicKeys* operator &() { return &self; }
5323         LDKChannelPublicKeys* operator ->() { return &self; }
5324         const LDKChannelPublicKeys* operator &() const { return &self; }
5325         const LDKChannelPublicKeys* operator ->() const { return &self; }
5326 };
5327 class HTLCOutputInCommitment {
5328 private:
5329         LDKHTLCOutputInCommitment self;
5330 public:
5331         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
5332         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
5333         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
5334         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
5335         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
5336         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
5337         LDKHTLCOutputInCommitment* operator &() { return &self; }
5338         LDKHTLCOutputInCommitment* operator ->() { return &self; }
5339         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
5340         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
5341 };
5342 class ChannelTransactionParameters {
5343 private:
5344         LDKChannelTransactionParameters self;
5345 public:
5346         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
5347         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
5348         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
5349         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
5350         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
5351         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
5352         LDKChannelTransactionParameters* operator &() { return &self; }
5353         LDKChannelTransactionParameters* operator ->() { return &self; }
5354         const LDKChannelTransactionParameters* operator &() const { return &self; }
5355         const LDKChannelTransactionParameters* operator ->() const { return &self; }
5356 };
5357 class CounterpartyChannelTransactionParameters {
5358 private:
5359         LDKCounterpartyChannelTransactionParameters self;
5360 public:
5361         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
5362         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
5363         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
5364         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
5365         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
5366         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
5367         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
5368         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
5369         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
5370         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
5371 };
5372 class DirectedChannelTransactionParameters {
5373 private:
5374         LDKDirectedChannelTransactionParameters self;
5375 public:
5376         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
5377         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
5378         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
5379         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
5380         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
5381         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
5382         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
5383         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
5384         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
5385         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
5386 };
5387 class HolderCommitmentTransaction {
5388 private:
5389         LDKHolderCommitmentTransaction self;
5390 public:
5391         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
5392         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
5393         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
5394         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
5395         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
5396         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
5397         LDKHolderCommitmentTransaction* operator &() { return &self; }
5398         LDKHolderCommitmentTransaction* operator ->() { return &self; }
5399         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
5400         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
5401 };
5402 class BuiltCommitmentTransaction {
5403 private:
5404         LDKBuiltCommitmentTransaction self;
5405 public:
5406         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
5407         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
5408         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
5409         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
5410         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
5411         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
5412         LDKBuiltCommitmentTransaction* operator &() { return &self; }
5413         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
5414         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
5415         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
5416 };
5417 class ClosingTransaction {
5418 private:
5419         LDKClosingTransaction self;
5420 public:
5421         ClosingTransaction(const ClosingTransaction&) = delete;
5422         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
5423         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
5424         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
5425         ~ClosingTransaction() { ClosingTransaction_free(self); }
5426         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
5427         LDKClosingTransaction* operator &() { return &self; }
5428         LDKClosingTransaction* operator ->() { return &self; }
5429         const LDKClosingTransaction* operator &() const { return &self; }
5430         const LDKClosingTransaction* operator ->() const { return &self; }
5431 };
5432 class TrustedClosingTransaction {
5433 private:
5434         LDKTrustedClosingTransaction self;
5435 public:
5436         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
5437         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
5438         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
5439         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
5440         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
5441         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
5442         LDKTrustedClosingTransaction* operator &() { return &self; }
5443         LDKTrustedClosingTransaction* operator ->() { return &self; }
5444         const LDKTrustedClosingTransaction* operator &() const { return &self; }
5445         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
5446 };
5447 class CommitmentTransaction {
5448 private:
5449         LDKCommitmentTransaction self;
5450 public:
5451         CommitmentTransaction(const CommitmentTransaction&) = delete;
5452         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
5453         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
5454         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
5455         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
5456         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
5457         LDKCommitmentTransaction* operator &() { return &self; }
5458         LDKCommitmentTransaction* operator ->() { return &self; }
5459         const LDKCommitmentTransaction* operator &() const { return &self; }
5460         const LDKCommitmentTransaction* operator ->() const { return &self; }
5461 };
5462 class TrustedCommitmentTransaction {
5463 private:
5464         LDKTrustedCommitmentTransaction self;
5465 public:
5466         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
5467         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
5468         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
5469         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
5470         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
5471         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
5472         LDKTrustedCommitmentTransaction* operator &() { return &self; }
5473         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
5474         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
5475         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
5476 };
5477 class ShutdownScript {
5478 private:
5479         LDKShutdownScript self;
5480 public:
5481         ShutdownScript(const ShutdownScript&) = delete;
5482         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
5483         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
5484         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
5485         ~ShutdownScript() { ShutdownScript_free(self); }
5486         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
5487         LDKShutdownScript* operator &() { return &self; }
5488         LDKShutdownScript* operator ->() { return &self; }
5489         const LDKShutdownScript* operator &() const { return &self; }
5490         const LDKShutdownScript* operator ->() const { return &self; }
5491 };
5492 class InvalidShutdownScript {
5493 private:
5494         LDKInvalidShutdownScript self;
5495 public:
5496         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
5497         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
5498         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
5499         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
5500         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
5501         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
5502         LDKInvalidShutdownScript* operator &() { return &self; }
5503         LDKInvalidShutdownScript* operator ->() { return &self; }
5504         const LDKInvalidShutdownScript* operator &() const { return &self; }
5505         const LDKInvalidShutdownScript* operator ->() const { return &self; }
5506 };
5507 class Bolt12ParseError {
5508 private:
5509         LDKBolt12ParseError self;
5510 public:
5511         Bolt12ParseError(const Bolt12ParseError&) = delete;
5512         Bolt12ParseError(Bolt12ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12ParseError)); }
5513         Bolt12ParseError(LDKBolt12ParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12ParseError)); }
5514         operator LDKBolt12ParseError() && { LDKBolt12ParseError res = self; memset(&self, 0, sizeof(LDKBolt12ParseError)); return res; }
5515         ~Bolt12ParseError() { Bolt12ParseError_free(self); }
5516         Bolt12ParseError& operator=(Bolt12ParseError&& o) { Bolt12ParseError_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12ParseError)); return *this; }
5517         LDKBolt12ParseError* operator &() { return &self; }
5518         LDKBolt12ParseError* operator ->() { return &self; }
5519         const LDKBolt12ParseError* operator &() const { return &self; }
5520         const LDKBolt12ParseError* operator ->() const { return &self; }
5521 };
5522 class Bolt12SemanticError {
5523 private:
5524         LDKBolt12SemanticError self;
5525 public:
5526         Bolt12SemanticError(const Bolt12SemanticError&) = delete;
5527         Bolt12SemanticError(Bolt12SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12SemanticError)); }
5528         Bolt12SemanticError(LDKBolt12SemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12SemanticError)); }
5529         operator LDKBolt12SemanticError() && { LDKBolt12SemanticError res = self; memset(&self, 0, sizeof(LDKBolt12SemanticError)); return res; }
5530         Bolt12SemanticError& operator=(Bolt12SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(Bolt12SemanticError)); return *this; }
5531         LDKBolt12SemanticError* operator &() { return &self; }
5532         LDKBolt12SemanticError* operator ->() { return &self; }
5533         const LDKBolt12SemanticError* operator &() const { return &self; }
5534         const LDKBolt12SemanticError* operator ->() const { return &self; }
5535 };
5536 class BroadcasterInterface {
5537 private:
5538         LDKBroadcasterInterface self;
5539 public:
5540         BroadcasterInterface(const BroadcasterInterface&) = delete;
5541         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
5542         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
5543         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
5544         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
5545         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
5546         LDKBroadcasterInterface* operator &() { return &self; }
5547         LDKBroadcasterInterface* operator ->() { return &self; }
5548         const LDKBroadcasterInterface* operator &() const { return &self; }
5549         const LDKBroadcasterInterface* operator ->() const { return &self; }
5550         /**
5551          *  Sends a list of transactions out to (hopefully) be mined.
5552          *  This only needs to handle the actual broadcasting of transactions, LDK will automatically
5553          *  rebroadcast transactions that haven't made it into a block.
5554          * 
5555          *  In some cases LDK may attempt to broadcast a transaction which double-spends another
5556          *  and this isn't a bug and can be safely ignored.
5557          * 
5558          *  If more than one transaction is given, these transactions should be considered to be a
5559          *  package and broadcast together. Some of the transactions may or may not depend on each other,
5560          *  be sure to manage both cases correctly.
5561          * 
5562          *  Bitcoin transaction packages are defined in BIP 331 and here:
5563          *  <https://github.com/bitcoin/bitcoin/blob/master/doc/policy/packages.md>
5564          */
5565         inline void broadcast_transactions(struct LDKCVec_TransactionZ txs);
5566 };
5567 class ConfirmationTarget {
5568 private:
5569         LDKConfirmationTarget self;
5570 public:
5571         ConfirmationTarget(const ConfirmationTarget&) = delete;
5572         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
5573         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
5574         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
5575         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
5576         LDKConfirmationTarget* operator &() { return &self; }
5577         LDKConfirmationTarget* operator ->() { return &self; }
5578         const LDKConfirmationTarget* operator &() const { return &self; }
5579         const LDKConfirmationTarget* operator ->() const { return &self; }
5580 };
5581 class FeeEstimator {
5582 private:
5583         LDKFeeEstimator self;
5584 public:
5585         FeeEstimator(const FeeEstimator&) = delete;
5586         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
5587         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
5588         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
5589         ~FeeEstimator() { FeeEstimator_free(self); }
5590         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
5591         LDKFeeEstimator* operator &() { return &self; }
5592         LDKFeeEstimator* operator ->() { return &self; }
5593         const LDKFeeEstimator* operator &() const { return &self; }
5594         const LDKFeeEstimator* operator ->() const { return &self; }
5595         /**
5596          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
5597          * 
5598          *  LDK will wrap this method and ensure that the value returned is no smaller than 253
5599          *  (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
5600          * 
5601          *  The following unit conversions can be used to convert to sats/KW:
5602          *   * satoshis-per-byte * 250
5603          *   * satoshis-per-kbyte / 4
5604          */
5605         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
5606 };
5607 class Packet {
5608 private:
5609         LDKPacket self;
5610 public:
5611         Packet(const Packet&) = delete;
5612         Packet(Packet&& o) : self(o.self) { memset(&o, 0, sizeof(Packet)); }
5613         Packet(LDKPacket&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPacket)); }
5614         operator LDKPacket() && { LDKPacket res = self; memset(&self, 0, sizeof(LDKPacket)); return res; }
5615         ~Packet() { Packet_free(self); }
5616         Packet& operator=(Packet&& o) { Packet_free(self); self = o.self; memset(&o, 0, sizeof(Packet)); return *this; }
5617         LDKPacket* operator &() { return &self; }
5618         LDKPacket* operator ->() { return &self; }
5619         const LDKPacket* operator &() const { return &self; }
5620         const LDKPacket* operator ->() const { return &self; }
5621 };
5622 class ParsedOnionMessageContents {
5623 private:
5624         LDKParsedOnionMessageContents self;
5625 public:
5626         ParsedOnionMessageContents(const ParsedOnionMessageContents&) = delete;
5627         ParsedOnionMessageContents(ParsedOnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(ParsedOnionMessageContents)); }
5628         ParsedOnionMessageContents(LDKParsedOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParsedOnionMessageContents)); }
5629         operator LDKParsedOnionMessageContents() && { LDKParsedOnionMessageContents res = self; memset(&self, 0, sizeof(LDKParsedOnionMessageContents)); return res; }
5630         ~ParsedOnionMessageContents() { ParsedOnionMessageContents_free(self); }
5631         ParsedOnionMessageContents& operator=(ParsedOnionMessageContents&& o) { ParsedOnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(ParsedOnionMessageContents)); return *this; }
5632         LDKParsedOnionMessageContents* operator &() { return &self; }
5633         LDKParsedOnionMessageContents* operator ->() { return &self; }
5634         const LDKParsedOnionMessageContents* operator &() const { return &self; }
5635         const LDKParsedOnionMessageContents* operator ->() const { return &self; }
5636 };
5637 class OnionMessageContents {
5638 private:
5639         LDKOnionMessageContents self;
5640 public:
5641         OnionMessageContents(const OnionMessageContents&) = delete;
5642         OnionMessageContents(OnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageContents)); }
5643         OnionMessageContents(LDKOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageContents)); }
5644         operator LDKOnionMessageContents() && { LDKOnionMessageContents res = self; memset(&self, 0, sizeof(LDKOnionMessageContents)); return res; }
5645         ~OnionMessageContents() { OnionMessageContents_free(self); }
5646         OnionMessageContents& operator=(OnionMessageContents&& o) { OnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageContents)); return *this; }
5647         LDKOnionMessageContents* operator &() { return &self; }
5648         LDKOnionMessageContents* operator ->() { return &self; }
5649         const LDKOnionMessageContents* operator &() const { return &self; }
5650         const LDKOnionMessageContents* operator ->() const { return &self; }
5651         /**
5652          *  Returns the TLV type identifying the message contents. MUST be >= 64.
5653          */
5654         inline uint64_t tlv_type();
5655         /**
5656          * Return a human-readable "debug" string describing this object
5657          */
5658         inline LDK::Str debug_str();
5659 };
5660 class PaymentPurpose {
5661 private:
5662         LDKPaymentPurpose self;
5663 public:
5664         PaymentPurpose(const PaymentPurpose&) = delete;
5665         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
5666         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
5667         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
5668         ~PaymentPurpose() { PaymentPurpose_free(self); }
5669         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
5670         LDKPaymentPurpose* operator &() { return &self; }
5671         LDKPaymentPurpose* operator ->() { return &self; }
5672         const LDKPaymentPurpose* operator &() const { return &self; }
5673         const LDKPaymentPurpose* operator ->() const { return &self; }
5674 };
5675 class ClaimedHTLC {
5676 private:
5677         LDKClaimedHTLC self;
5678 public:
5679         ClaimedHTLC(const ClaimedHTLC&) = delete;
5680         ClaimedHTLC(ClaimedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(ClaimedHTLC)); }
5681         ClaimedHTLC(LDKClaimedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClaimedHTLC)); }
5682         operator LDKClaimedHTLC() && { LDKClaimedHTLC res = self; memset(&self, 0, sizeof(LDKClaimedHTLC)); return res; }
5683         ~ClaimedHTLC() { ClaimedHTLC_free(self); }
5684         ClaimedHTLC& operator=(ClaimedHTLC&& o) { ClaimedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(ClaimedHTLC)); return *this; }
5685         LDKClaimedHTLC* operator &() { return &self; }
5686         LDKClaimedHTLC* operator ->() { return &self; }
5687         const LDKClaimedHTLC* operator &() const { return &self; }
5688         const LDKClaimedHTLC* operator ->() const { return &self; }
5689 };
5690 class PathFailure {
5691 private:
5692         LDKPathFailure self;
5693 public:
5694         PathFailure(const PathFailure&) = delete;
5695         PathFailure(PathFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PathFailure)); }
5696         PathFailure(LDKPathFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPathFailure)); }
5697         operator LDKPathFailure() && { LDKPathFailure res = self; memset(&self, 0, sizeof(LDKPathFailure)); return res; }
5698         ~PathFailure() { PathFailure_free(self); }
5699         PathFailure& operator=(PathFailure&& o) { PathFailure_free(self); self = o.self; memset(&o, 0, sizeof(PathFailure)); return *this; }
5700         LDKPathFailure* operator &() { return &self; }
5701         LDKPathFailure* operator ->() { return &self; }
5702         const LDKPathFailure* operator &() const { return &self; }
5703         const LDKPathFailure* operator ->() const { return &self; }
5704 };
5705 class ClosureReason {
5706 private:
5707         LDKClosureReason self;
5708 public:
5709         ClosureReason(const ClosureReason&) = delete;
5710         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
5711         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
5712         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
5713         ~ClosureReason() { ClosureReason_free(self); }
5714         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
5715         LDKClosureReason* operator &() { return &self; }
5716         LDKClosureReason* operator ->() { return &self; }
5717         const LDKClosureReason* operator &() const { return &self; }
5718         const LDKClosureReason* operator ->() const { return &self; }
5719 };
5720 class HTLCDestination {
5721 private:
5722         LDKHTLCDestination self;
5723 public:
5724         HTLCDestination(const HTLCDestination&) = delete;
5725         HTLCDestination(HTLCDestination&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDestination)); }
5726         HTLCDestination(LDKHTLCDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDestination)); }
5727         operator LDKHTLCDestination() && { LDKHTLCDestination res = self; memset(&self, 0, sizeof(LDKHTLCDestination)); return res; }
5728         ~HTLCDestination() { HTLCDestination_free(self); }
5729         HTLCDestination& operator=(HTLCDestination&& o) { HTLCDestination_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDestination)); return *this; }
5730         LDKHTLCDestination* operator &() { return &self; }
5731         LDKHTLCDestination* operator ->() { return &self; }
5732         const LDKHTLCDestination* operator &() const { return &self; }
5733         const LDKHTLCDestination* operator ->() const { return &self; }
5734 };
5735 class PaymentFailureReason {
5736 private:
5737         LDKPaymentFailureReason self;
5738 public:
5739         PaymentFailureReason(const PaymentFailureReason&) = delete;
5740         PaymentFailureReason(PaymentFailureReason&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentFailureReason)); }
5741         PaymentFailureReason(LDKPaymentFailureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentFailureReason)); }
5742         operator LDKPaymentFailureReason() && { LDKPaymentFailureReason res = self; memset(&self, 0, sizeof(LDKPaymentFailureReason)); return res; }
5743         PaymentFailureReason& operator=(PaymentFailureReason&& o) { self = o.self; memset(&o, 0, sizeof(PaymentFailureReason)); return *this; }
5744         LDKPaymentFailureReason* operator &() { return &self; }
5745         LDKPaymentFailureReason* operator ->() { return &self; }
5746         const LDKPaymentFailureReason* operator &() const { return &self; }
5747         const LDKPaymentFailureReason* operator ->() const { return &self; }
5748 };
5749 class Event {
5750 private:
5751         LDKEvent self;
5752 public:
5753         Event(const Event&) = delete;
5754         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
5755         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
5756         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
5757         ~Event() { Event_free(self); }
5758         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
5759         LDKEvent* operator &() { return &self; }
5760         LDKEvent* operator ->() { return &self; }
5761         const LDKEvent* operator &() const { return &self; }
5762         const LDKEvent* operator ->() const { return &self; }
5763 };
5764 class MessageSendEvent {
5765 private:
5766         LDKMessageSendEvent self;
5767 public:
5768         MessageSendEvent(const MessageSendEvent&) = delete;
5769         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
5770         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
5771         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
5772         ~MessageSendEvent() { MessageSendEvent_free(self); }
5773         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
5774         LDKMessageSendEvent* operator &() { return &self; }
5775         LDKMessageSendEvent* operator ->() { return &self; }
5776         const LDKMessageSendEvent* operator &() const { return &self; }
5777         const LDKMessageSendEvent* operator ->() const { return &self; }
5778 };
5779 class MessageSendEventsProvider {
5780 private:
5781         LDKMessageSendEventsProvider self;
5782 public:
5783         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
5784         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
5785         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
5786         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
5787         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
5788         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
5789         LDKMessageSendEventsProvider* operator &() { return &self; }
5790         LDKMessageSendEventsProvider* operator ->() { return &self; }
5791         const LDKMessageSendEventsProvider* operator &() const { return &self; }
5792         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
5793         /**
5794          *  Gets the list of pending events which were generated by previous actions, clearing the list
5795          *  in the process.
5796          */
5797         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
5798 };
5799 class EventsProvider {
5800 private:
5801         LDKEventsProvider self;
5802 public:
5803         EventsProvider(const EventsProvider&) = delete;
5804         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
5805         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
5806         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
5807         ~EventsProvider() { EventsProvider_free(self); }
5808         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
5809         LDKEventsProvider* operator &() { return &self; }
5810         LDKEventsProvider* operator ->() { return &self; }
5811         const LDKEventsProvider* operator &() const { return &self; }
5812         const LDKEventsProvider* operator ->() const { return &self; }
5813         /**
5814          *  Processes any events generated since the last call using the given event handler.
5815          * 
5816          *  See the trait-level documentation for requirements.
5817          */
5818         inline void process_pending_events(struct LDKEventHandler handler);
5819 };
5820 class EventHandler {
5821 private:
5822         LDKEventHandler self;
5823 public:
5824         EventHandler(const EventHandler&) = delete;
5825         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
5826         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
5827         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
5828         ~EventHandler() { EventHandler_free(self); }
5829         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
5830         LDKEventHandler* operator &() { return &self; }
5831         LDKEventHandler* operator ->() { return &self; }
5832         const LDKEventHandler* operator &() const { return &self; }
5833         const LDKEventHandler* operator ->() const { return &self; }
5834         /**
5835          *  Handles the given [`Event`].
5836          * 
5837          *  See [`EventsProvider`] for details that must be considered when implementing this method.
5838          */
5839         inline void handle_event(struct LDKEvent event);
5840 };
5841 class Bolt11ParseError {
5842 private:
5843         LDKBolt11ParseError self;
5844 public:
5845         Bolt11ParseError(const Bolt11ParseError&) = delete;
5846         Bolt11ParseError(Bolt11ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11ParseError)); }
5847         Bolt11ParseError(LDKBolt11ParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11ParseError)); }
5848         operator LDKBolt11ParseError() && { LDKBolt11ParseError res = self; memset(&self, 0, sizeof(LDKBolt11ParseError)); return res; }
5849         ~Bolt11ParseError() { Bolt11ParseError_free(self); }
5850         Bolt11ParseError& operator=(Bolt11ParseError&& o) { Bolt11ParseError_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11ParseError)); return *this; }
5851         LDKBolt11ParseError* operator &() { return &self; }
5852         LDKBolt11ParseError* operator ->() { return &self; }
5853         const LDKBolt11ParseError* operator &() const { return &self; }
5854         const LDKBolt11ParseError* operator ->() const { return &self; }
5855 };
5856 class ParseOrSemanticError {
5857 private:
5858         LDKParseOrSemanticError self;
5859 public:
5860         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
5861         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
5862         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
5863         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
5864         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
5865         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
5866         LDKParseOrSemanticError* operator &() { return &self; }
5867         LDKParseOrSemanticError* operator ->() { return &self; }
5868         const LDKParseOrSemanticError* operator &() const { return &self; }
5869         const LDKParseOrSemanticError* operator ->() const { return &self; }
5870 };
5871 class Bolt11Invoice {
5872 private:
5873         LDKBolt11Invoice self;
5874 public:
5875         Bolt11Invoice(const Bolt11Invoice&) = delete;
5876         Bolt11Invoice(Bolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11Invoice)); }
5877         Bolt11Invoice(LDKBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11Invoice)); }
5878         operator LDKBolt11Invoice() && { LDKBolt11Invoice res = self; memset(&self, 0, sizeof(LDKBolt11Invoice)); return res; }
5879         ~Bolt11Invoice() { Bolt11Invoice_free(self); }
5880         Bolt11Invoice& operator=(Bolt11Invoice&& o) { Bolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11Invoice)); return *this; }
5881         LDKBolt11Invoice* operator &() { return &self; }
5882         LDKBolt11Invoice* operator ->() { return &self; }
5883         const LDKBolt11Invoice* operator &() const { return &self; }
5884         const LDKBolt11Invoice* operator ->() const { return &self; }
5885 };
5886 class SignedRawBolt11Invoice {
5887 private:
5888         LDKSignedRawBolt11Invoice self;
5889 public:
5890         SignedRawBolt11Invoice(const SignedRawBolt11Invoice&) = delete;
5891         SignedRawBolt11Invoice(SignedRawBolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawBolt11Invoice)); }
5892         SignedRawBolt11Invoice(LDKSignedRawBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawBolt11Invoice)); }
5893         operator LDKSignedRawBolt11Invoice() && { LDKSignedRawBolt11Invoice res = self; memset(&self, 0, sizeof(LDKSignedRawBolt11Invoice)); return res; }
5894         ~SignedRawBolt11Invoice() { SignedRawBolt11Invoice_free(self); }
5895         SignedRawBolt11Invoice& operator=(SignedRawBolt11Invoice&& o) { SignedRawBolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawBolt11Invoice)); return *this; }
5896         LDKSignedRawBolt11Invoice* operator &() { return &self; }
5897         LDKSignedRawBolt11Invoice* operator ->() { return &self; }
5898         const LDKSignedRawBolt11Invoice* operator &() const { return &self; }
5899         const LDKSignedRawBolt11Invoice* operator ->() const { return &self; }
5900 };
5901 class RawBolt11Invoice {
5902 private:
5903         LDKRawBolt11Invoice self;
5904 public:
5905         RawBolt11Invoice(const RawBolt11Invoice&) = delete;
5906         RawBolt11Invoice(RawBolt11Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawBolt11Invoice)); }
5907         RawBolt11Invoice(LDKRawBolt11Invoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawBolt11Invoice)); }
5908         operator LDKRawBolt11Invoice() && { LDKRawBolt11Invoice res = self; memset(&self, 0, sizeof(LDKRawBolt11Invoice)); return res; }
5909         ~RawBolt11Invoice() { RawBolt11Invoice_free(self); }
5910         RawBolt11Invoice& operator=(RawBolt11Invoice&& o) { RawBolt11Invoice_free(self); self = o.self; memset(&o, 0, sizeof(RawBolt11Invoice)); return *this; }
5911         LDKRawBolt11Invoice* operator &() { return &self; }
5912         LDKRawBolt11Invoice* operator ->() { return &self; }
5913         const LDKRawBolt11Invoice* operator &() const { return &self; }
5914         const LDKRawBolt11Invoice* operator ->() const { return &self; }
5915 };
5916 class RawDataPart {
5917 private:
5918         LDKRawDataPart self;
5919 public:
5920         RawDataPart(const RawDataPart&) = delete;
5921         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
5922         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
5923         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
5924         ~RawDataPart() { RawDataPart_free(self); }
5925         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
5926         LDKRawDataPart* operator &() { return &self; }
5927         LDKRawDataPart* operator ->() { return &self; }
5928         const LDKRawDataPart* operator &() const { return &self; }
5929         const LDKRawDataPart* operator ->() const { return &self; }
5930 };
5931 class PositiveTimestamp {
5932 private:
5933         LDKPositiveTimestamp self;
5934 public:
5935         PositiveTimestamp(const PositiveTimestamp&) = delete;
5936         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
5937         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
5938         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
5939         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
5940         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
5941         LDKPositiveTimestamp* operator &() { return &self; }
5942         LDKPositiveTimestamp* operator ->() { return &self; }
5943         const LDKPositiveTimestamp* operator &() const { return &self; }
5944         const LDKPositiveTimestamp* operator ->() const { return &self; }
5945 };
5946 class SiPrefix {
5947 private:
5948         LDKSiPrefix self;
5949 public:
5950         SiPrefix(const SiPrefix&) = delete;
5951         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
5952         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
5953         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
5954         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
5955         LDKSiPrefix* operator &() { return &self; }
5956         LDKSiPrefix* operator ->() { return &self; }
5957         const LDKSiPrefix* operator &() const { return &self; }
5958         const LDKSiPrefix* operator ->() const { return &self; }
5959 };
5960 class Currency {
5961 private:
5962         LDKCurrency self;
5963 public:
5964         Currency(const Currency&) = delete;
5965         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
5966         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
5967         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
5968         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
5969         LDKCurrency* operator &() { return &self; }
5970         LDKCurrency* operator ->() { return &self; }
5971         const LDKCurrency* operator &() const { return &self; }
5972         const LDKCurrency* operator ->() const { return &self; }
5973 };
5974 class Sha256 {
5975 private:
5976         LDKSha256 self;
5977 public:
5978         Sha256(const Sha256&) = delete;
5979         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
5980         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
5981         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
5982         ~Sha256() { Sha256_free(self); }
5983         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
5984         LDKSha256* operator &() { return &self; }
5985         LDKSha256* operator ->() { return &self; }
5986         const LDKSha256* operator &() const { return &self; }
5987         const LDKSha256* operator ->() const { return &self; }
5988 };
5989 class Description {
5990 private:
5991         LDKDescription self;
5992 public:
5993         Description(const Description&) = delete;
5994         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
5995         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
5996         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
5997         ~Description() { Description_free(self); }
5998         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
5999         LDKDescription* operator &() { return &self; }
6000         LDKDescription* operator ->() { return &self; }
6001         const LDKDescription* operator &() const { return &self; }
6002         const LDKDescription* operator ->() const { return &self; }
6003 };
6004 class PayeePubKey {
6005 private:
6006         LDKPayeePubKey self;
6007 public:
6008         PayeePubKey(const PayeePubKey&) = delete;
6009         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
6010         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
6011         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
6012         ~PayeePubKey() { PayeePubKey_free(self); }
6013         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
6014         LDKPayeePubKey* operator &() { return &self; }
6015         LDKPayeePubKey* operator ->() { return &self; }
6016         const LDKPayeePubKey* operator &() const { return &self; }
6017         const LDKPayeePubKey* operator ->() const { return &self; }
6018 };
6019 class ExpiryTime {
6020 private:
6021         LDKExpiryTime self;
6022 public:
6023         ExpiryTime(const ExpiryTime&) = delete;
6024         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
6025         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
6026         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
6027         ~ExpiryTime() { ExpiryTime_free(self); }
6028         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
6029         LDKExpiryTime* operator &() { return &self; }
6030         LDKExpiryTime* operator ->() { return &self; }
6031         const LDKExpiryTime* operator &() const { return &self; }
6032         const LDKExpiryTime* operator ->() const { return &self; }
6033 };
6034 class MinFinalCltvExpiryDelta {
6035 private:
6036         LDKMinFinalCltvExpiryDelta self;
6037 public:
6038         MinFinalCltvExpiryDelta(const MinFinalCltvExpiryDelta&) = delete;
6039         MinFinalCltvExpiryDelta(MinFinalCltvExpiryDelta&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); }
6040         MinFinalCltvExpiryDelta(LDKMinFinalCltvExpiryDelta&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); }
6041         operator LDKMinFinalCltvExpiryDelta() && { LDKMinFinalCltvExpiryDelta res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); return res; }
6042         ~MinFinalCltvExpiryDelta() { MinFinalCltvExpiryDelta_free(self); }
6043         MinFinalCltvExpiryDelta& operator=(MinFinalCltvExpiryDelta&& o) { MinFinalCltvExpiryDelta_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); return *this; }
6044         LDKMinFinalCltvExpiryDelta* operator &() { return &self; }
6045         LDKMinFinalCltvExpiryDelta* operator ->() { return &self; }
6046         const LDKMinFinalCltvExpiryDelta* operator &() const { return &self; }
6047         const LDKMinFinalCltvExpiryDelta* operator ->() const { return &self; }
6048 };
6049 class Fallback {
6050 private:
6051         LDKFallback self;
6052 public:
6053         Fallback(const Fallback&) = delete;
6054         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
6055         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
6056         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
6057         ~Fallback() { Fallback_free(self); }
6058         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
6059         LDKFallback* operator &() { return &self; }
6060         LDKFallback* operator ->() { return &self; }
6061         const LDKFallback* operator &() const { return &self; }
6062         const LDKFallback* operator ->() const { return &self; }
6063 };
6064 class Bolt11InvoiceSignature {
6065 private:
6066         LDKBolt11InvoiceSignature self;
6067 public:
6068         Bolt11InvoiceSignature(const Bolt11InvoiceSignature&) = delete;
6069         Bolt11InvoiceSignature(Bolt11InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11InvoiceSignature)); }
6070         Bolt11InvoiceSignature(LDKBolt11InvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11InvoiceSignature)); }
6071         operator LDKBolt11InvoiceSignature() && { LDKBolt11InvoiceSignature res = self; memset(&self, 0, sizeof(LDKBolt11InvoiceSignature)); return res; }
6072         ~Bolt11InvoiceSignature() { Bolt11InvoiceSignature_free(self); }
6073         Bolt11InvoiceSignature& operator=(Bolt11InvoiceSignature&& o) { Bolt11InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(Bolt11InvoiceSignature)); return *this; }
6074         LDKBolt11InvoiceSignature* operator &() { return &self; }
6075         LDKBolt11InvoiceSignature* operator ->() { return &self; }
6076         const LDKBolt11InvoiceSignature* operator &() const { return &self; }
6077         const LDKBolt11InvoiceSignature* operator ->() const { return &self; }
6078 };
6079 class PrivateRoute {
6080 private:
6081         LDKPrivateRoute self;
6082 public:
6083         PrivateRoute(const PrivateRoute&) = delete;
6084         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
6085         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
6086         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
6087         ~PrivateRoute() { PrivateRoute_free(self); }
6088         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
6089         LDKPrivateRoute* operator &() { return &self; }
6090         LDKPrivateRoute* operator ->() { return &self; }
6091         const LDKPrivateRoute* operator &() const { return &self; }
6092         const LDKPrivateRoute* operator ->() const { return &self; }
6093 };
6094 class CreationError {
6095 private:
6096         LDKCreationError self;
6097 public:
6098         CreationError(const CreationError&) = delete;
6099         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
6100         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
6101         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
6102         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
6103         LDKCreationError* operator &() { return &self; }
6104         LDKCreationError* operator ->() { return &self; }
6105         const LDKCreationError* operator &() const { return &self; }
6106         const LDKCreationError* operator ->() const { return &self; }
6107 };
6108 class Bolt11SemanticError {
6109 private:
6110         LDKBolt11SemanticError self;
6111 public:
6112         Bolt11SemanticError(const Bolt11SemanticError&) = delete;
6113         Bolt11SemanticError(Bolt11SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt11SemanticError)); }
6114         Bolt11SemanticError(LDKBolt11SemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt11SemanticError)); }
6115         operator LDKBolt11SemanticError() && { LDKBolt11SemanticError res = self; memset(&self, 0, sizeof(LDKBolt11SemanticError)); return res; }
6116         Bolt11SemanticError& operator=(Bolt11SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(Bolt11SemanticError)); return *this; }
6117         LDKBolt11SemanticError* operator &() { return &self; }
6118         LDKBolt11SemanticError* operator ->() { return &self; }
6119         const LDKBolt11SemanticError* operator &() const { return &self; }
6120         const LDKBolt11SemanticError* operator ->() const { return &self; }
6121 };
6122 class SignOrCreationError {
6123 private:
6124         LDKSignOrCreationError self;
6125 public:
6126         SignOrCreationError(const SignOrCreationError&) = delete;
6127         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
6128         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
6129         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
6130         ~SignOrCreationError() { SignOrCreationError_free(self); }
6131         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
6132         LDKSignOrCreationError* operator &() { return &self; }
6133         LDKSignOrCreationError* operator ->() { return &self; }
6134         const LDKSignOrCreationError* operator &() const { return &self; }
6135         const LDKSignOrCreationError* operator ->() const { return &self; }
6136 };
6137 class OutPoint {
6138 private:
6139         LDKOutPoint self;
6140 public:
6141         OutPoint(const OutPoint&) = delete;
6142         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
6143         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
6144         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
6145         ~OutPoint() { OutPoint_free(self); }
6146         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
6147         LDKOutPoint* operator &() { return &self; }
6148         LDKOutPoint* operator ->() { return &self; }
6149         const LDKOutPoint* operator &() const { return &self; }
6150         const LDKOutPoint* operator ->() const { return &self; }
6151 };
6152 class BigSize {
6153 private:
6154         LDKBigSize self;
6155 public:
6156         BigSize(const BigSize&) = delete;
6157         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
6158         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
6159         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
6160         ~BigSize() { BigSize_free(self); }
6161         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
6162         LDKBigSize* operator &() { return &self; }
6163         LDKBigSize* operator ->() { return &self; }
6164         const LDKBigSize* operator &() const { return &self; }
6165         const LDKBigSize* operator ->() const { return &self; }
6166 };
6167 class Hostname {
6168 private:
6169         LDKHostname self;
6170 public:
6171         Hostname(const Hostname&) = delete;
6172         Hostname(Hostname&& o) : self(o.self) { memset(&o, 0, sizeof(Hostname)); }
6173         Hostname(LDKHostname&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHostname)); }
6174         operator LDKHostname() && { LDKHostname res = self; memset(&self, 0, sizeof(LDKHostname)); return res; }
6175         ~Hostname() { Hostname_free(self); }
6176         Hostname& operator=(Hostname&& o) { Hostname_free(self); self = o.self; memset(&o, 0, sizeof(Hostname)); return *this; }
6177         LDKHostname* operator &() { return &self; }
6178         LDKHostname* operator ->() { return &self; }
6179         const LDKHostname* operator &() const { return &self; }
6180         const LDKHostname* operator ->() const { return &self; }
6181 };
6182 class TransactionU16LenLimited {
6183 private:
6184         LDKTransactionU16LenLimited self;
6185 public:
6186         TransactionU16LenLimited(const TransactionU16LenLimited&) = delete;
6187         TransactionU16LenLimited(TransactionU16LenLimited&& o) : self(o.self) { memset(&o, 0, sizeof(TransactionU16LenLimited)); }
6188         TransactionU16LenLimited(LDKTransactionU16LenLimited&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTransactionU16LenLimited)); }
6189         operator LDKTransactionU16LenLimited() && { LDKTransactionU16LenLimited res = self; memset(&self, 0, sizeof(LDKTransactionU16LenLimited)); return res; }
6190         ~TransactionU16LenLimited() { TransactionU16LenLimited_free(self); }
6191         TransactionU16LenLimited& operator=(TransactionU16LenLimited&& o) { TransactionU16LenLimited_free(self); self = o.self; memset(&o, 0, sizeof(TransactionU16LenLimited)); return *this; }
6192         LDKTransactionU16LenLimited* operator &() { return &self; }
6193         LDKTransactionU16LenLimited* operator ->() { return &self; }
6194         const LDKTransactionU16LenLimited* operator &() const { return &self; }
6195         const LDKTransactionU16LenLimited* operator ->() const { return &self; }
6196 };
6197 class UntrustedString {
6198 private:
6199         LDKUntrustedString self;
6200 public:
6201         UntrustedString(const UntrustedString&) = delete;
6202         UntrustedString(UntrustedString&& o) : self(o.self) { memset(&o, 0, sizeof(UntrustedString)); }
6203         UntrustedString(LDKUntrustedString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUntrustedString)); }
6204         operator LDKUntrustedString() && { LDKUntrustedString res = self; memset(&self, 0, sizeof(LDKUntrustedString)); return res; }
6205         ~UntrustedString() { UntrustedString_free(self); }
6206         UntrustedString& operator=(UntrustedString&& o) { UntrustedString_free(self); self = o.self; memset(&o, 0, sizeof(UntrustedString)); return *this; }
6207         LDKUntrustedString* operator &() { return &self; }
6208         LDKUntrustedString* operator ->() { return &self; }
6209         const LDKUntrustedString* operator &() const { return &self; }
6210         const LDKUntrustedString* operator ->() const { return &self; }
6211 };
6212 class PrintableString {
6213 private:
6214         LDKPrintableString self;
6215 public:
6216         PrintableString(const PrintableString&) = delete;
6217         PrintableString(PrintableString&& o) : self(o.self) { memset(&o, 0, sizeof(PrintableString)); }
6218         PrintableString(LDKPrintableString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrintableString)); }
6219         operator LDKPrintableString() && { LDKPrintableString res = self; memset(&self, 0, sizeof(LDKPrintableString)); return res; }
6220         ~PrintableString() { PrintableString_free(self); }
6221         PrintableString& operator=(PrintableString&& o) { PrintableString_free(self); self = o.self; memset(&o, 0, sizeof(PrintableString)); return *this; }
6222         LDKPrintableString* operator &() { return &self; }
6223         LDKPrintableString* operator ->() { return &self; }
6224         const LDKPrintableString* operator &() const { return &self; }
6225         const LDKPrintableString* operator ->() const { return &self; }
6226 };
6227 class ChannelId {
6228 private:
6229         LDKChannelId self;
6230 public:
6231         ChannelId(const ChannelId&) = delete;
6232         ChannelId(ChannelId&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelId)); }
6233         ChannelId(LDKChannelId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelId)); }
6234         operator LDKChannelId() && { LDKChannelId res = self; memset(&self, 0, sizeof(LDKChannelId)); return res; }
6235         ~ChannelId() { ChannelId_free(self); }
6236         ChannelId& operator=(ChannelId&& o) { ChannelId_free(self); self = o.self; memset(&o, 0, sizeof(ChannelId)); return *this; }
6237         LDKChannelId* operator &() { return &self; }
6238         LDKChannelId* operator ->() { return &self; }
6239         const LDKChannelId* operator &() const { return &self; }
6240         const LDKChannelId* operator ->() const { return &self; }
6241 };
6242 class CustomMessageReader {
6243 private:
6244         LDKCustomMessageReader self;
6245 public:
6246         CustomMessageReader(const CustomMessageReader&) = delete;
6247         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
6248         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
6249         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
6250         ~CustomMessageReader() { CustomMessageReader_free(self); }
6251         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
6252         LDKCustomMessageReader* operator &() { return &self; }
6253         LDKCustomMessageReader* operator ->() { return &self; }
6254         const LDKCustomMessageReader* operator &() const { return &self; }
6255         const LDKCustomMessageReader* operator ->() const { return &self; }
6256         /**
6257          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
6258          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
6259          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
6260          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
6261          */
6262         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
6263 };
6264 class Type {
6265 private:
6266         LDKType self;
6267 public:
6268         Type(const Type&) = delete;
6269         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
6270         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
6271         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
6272         ~Type() { Type_free(self); }
6273         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
6274         LDKType* operator &() { return &self; }
6275         LDKType* operator ->() { return &self; }
6276         const LDKType* operator &() const { return &self; }
6277         const LDKType* operator ->() const { return &self; }
6278         /**
6279          *  Returns the type identifying the message payload.
6280          */
6281         inline uint16_t type_id();
6282         /**
6283          * Return a human-readable "debug" string describing this object
6284          */
6285         inline LDK::Str debug_str();
6286 };
6287 class ForwardNode {
6288 private:
6289         LDKForwardNode self;
6290 public:
6291         ForwardNode(const ForwardNode&) = delete;
6292         ForwardNode(ForwardNode&& o) : self(o.self) { memset(&o, 0, sizeof(ForwardNode)); }
6293         ForwardNode(LDKForwardNode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKForwardNode)); }
6294         operator LDKForwardNode() && { LDKForwardNode res = self; memset(&self, 0, sizeof(LDKForwardNode)); return res; }
6295         ~ForwardNode() { ForwardNode_free(self); }
6296         ForwardNode& operator=(ForwardNode&& o) { ForwardNode_free(self); self = o.self; memset(&o, 0, sizeof(ForwardNode)); return *this; }
6297         LDKForwardNode* operator &() { return &self; }
6298         LDKForwardNode* operator ->() { return &self; }
6299         const LDKForwardNode* operator &() const { return &self; }
6300         const LDKForwardNode* operator ->() const { return &self; }
6301 };
6302 class ForwardTlvs {
6303 private:
6304         LDKForwardTlvs self;
6305 public:
6306         ForwardTlvs(const ForwardTlvs&) = delete;
6307         ForwardTlvs(ForwardTlvs&& o) : self(o.self) { memset(&o, 0, sizeof(ForwardTlvs)); }
6308         ForwardTlvs(LDKForwardTlvs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKForwardTlvs)); }
6309         operator LDKForwardTlvs() && { LDKForwardTlvs res = self; memset(&self, 0, sizeof(LDKForwardTlvs)); return res; }
6310         ~ForwardTlvs() { ForwardTlvs_free(self); }
6311         ForwardTlvs& operator=(ForwardTlvs&& o) { ForwardTlvs_free(self); self = o.self; memset(&o, 0, sizeof(ForwardTlvs)); return *this; }
6312         LDKForwardTlvs* operator &() { return &self; }
6313         LDKForwardTlvs* operator ->() { return &self; }
6314         const LDKForwardTlvs* operator &() const { return &self; }
6315         const LDKForwardTlvs* operator ->() const { return &self; }
6316 };
6317 class ReceiveTlvs {
6318 private:
6319         LDKReceiveTlvs self;
6320 public:
6321         ReceiveTlvs(const ReceiveTlvs&) = delete;
6322         ReceiveTlvs(ReceiveTlvs&& o) : self(o.self) { memset(&o, 0, sizeof(ReceiveTlvs)); }
6323         ReceiveTlvs(LDKReceiveTlvs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReceiveTlvs)); }
6324         operator LDKReceiveTlvs() && { LDKReceiveTlvs res = self; memset(&self, 0, sizeof(LDKReceiveTlvs)); return res; }
6325         ~ReceiveTlvs() { ReceiveTlvs_free(self); }
6326         ReceiveTlvs& operator=(ReceiveTlvs&& o) { ReceiveTlvs_free(self); self = o.self; memset(&o, 0, sizeof(ReceiveTlvs)); return *this; }
6327         LDKReceiveTlvs* operator &() { return &self; }
6328         LDKReceiveTlvs* operator ->() { return &self; }
6329         const LDKReceiveTlvs* operator &() const { return &self; }
6330         const LDKReceiveTlvs* operator ->() const { return &self; }
6331 };
6332 class PaymentRelay {
6333 private:
6334         LDKPaymentRelay self;
6335 public:
6336         PaymentRelay(const PaymentRelay&) = delete;
6337         PaymentRelay(PaymentRelay&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentRelay)); }
6338         PaymentRelay(LDKPaymentRelay&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentRelay)); }
6339         operator LDKPaymentRelay() && { LDKPaymentRelay res = self; memset(&self, 0, sizeof(LDKPaymentRelay)); return res; }
6340         ~PaymentRelay() { PaymentRelay_free(self); }
6341         PaymentRelay& operator=(PaymentRelay&& o) { PaymentRelay_free(self); self = o.self; memset(&o, 0, sizeof(PaymentRelay)); return *this; }
6342         LDKPaymentRelay* operator &() { return &self; }
6343         LDKPaymentRelay* operator ->() { return &self; }
6344         const LDKPaymentRelay* operator &() const { return &self; }
6345         const LDKPaymentRelay* operator ->() const { return &self; }
6346 };
6347 class PaymentConstraints {
6348 private:
6349         LDKPaymentConstraints self;
6350 public:
6351         PaymentConstraints(const PaymentConstraints&) = delete;
6352         PaymentConstraints(PaymentConstraints&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentConstraints)); }
6353         PaymentConstraints(LDKPaymentConstraints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentConstraints)); }
6354         operator LDKPaymentConstraints() && { LDKPaymentConstraints res = self; memset(&self, 0, sizeof(LDKPaymentConstraints)); return res; }
6355         ~PaymentConstraints() { PaymentConstraints_free(self); }
6356         PaymentConstraints& operator=(PaymentConstraints&& o) { PaymentConstraints_free(self); self = o.self; memset(&o, 0, sizeof(PaymentConstraints)); return *this; }
6357         LDKPaymentConstraints* operator &() { return &self; }
6358         LDKPaymentConstraints* operator ->() { return &self; }
6359         const LDKPaymentConstraints* operator &() const { return &self; }
6360         const LDKPaymentConstraints* operator ->() const { return &self; }
6361 };
6362 class PaymentContext {
6363 private:
6364         LDKPaymentContext self;
6365 public:
6366         PaymentContext(const PaymentContext&) = delete;
6367         PaymentContext(PaymentContext&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentContext)); }
6368         PaymentContext(LDKPaymentContext&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentContext)); }
6369         operator LDKPaymentContext() && { LDKPaymentContext res = self; memset(&self, 0, sizeof(LDKPaymentContext)); return res; }
6370         ~PaymentContext() { PaymentContext_free(self); }
6371         PaymentContext& operator=(PaymentContext&& o) { PaymentContext_free(self); self = o.self; memset(&o, 0, sizeof(PaymentContext)); return *this; }
6372         LDKPaymentContext* operator &() { return &self; }
6373         LDKPaymentContext* operator ->() { return &self; }
6374         const LDKPaymentContext* operator &() const { return &self; }
6375         const LDKPaymentContext* operator ->() const { return &self; }
6376 };
6377 class UnknownPaymentContext {
6378 private:
6379         LDKUnknownPaymentContext self;
6380 public:
6381         UnknownPaymentContext(const UnknownPaymentContext&) = delete;
6382         UnknownPaymentContext(UnknownPaymentContext&& o) : self(o.self) { memset(&o, 0, sizeof(UnknownPaymentContext)); }
6383         UnknownPaymentContext(LDKUnknownPaymentContext&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnknownPaymentContext)); }
6384         operator LDKUnknownPaymentContext() && { LDKUnknownPaymentContext res = self; memset(&self, 0, sizeof(LDKUnknownPaymentContext)); return res; }
6385         ~UnknownPaymentContext() { UnknownPaymentContext_free(self); }
6386         UnknownPaymentContext& operator=(UnknownPaymentContext&& o) { UnknownPaymentContext_free(self); self = o.self; memset(&o, 0, sizeof(UnknownPaymentContext)); return *this; }
6387         LDKUnknownPaymentContext* operator &() { return &self; }
6388         LDKUnknownPaymentContext* operator ->() { return &self; }
6389         const LDKUnknownPaymentContext* operator &() const { return &self; }
6390         const LDKUnknownPaymentContext* operator ->() const { return &self; }
6391 };
6392 class Bolt12OfferContext {
6393 private:
6394         LDKBolt12OfferContext self;
6395 public:
6396         Bolt12OfferContext(const Bolt12OfferContext&) = delete;
6397         Bolt12OfferContext(Bolt12OfferContext&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12OfferContext)); }
6398         Bolt12OfferContext(LDKBolt12OfferContext&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12OfferContext)); }
6399         operator LDKBolt12OfferContext() && { LDKBolt12OfferContext res = self; memset(&self, 0, sizeof(LDKBolt12OfferContext)); return res; }
6400         ~Bolt12OfferContext() { Bolt12OfferContext_free(self); }
6401         Bolt12OfferContext& operator=(Bolt12OfferContext&& o) { Bolt12OfferContext_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12OfferContext)); return *this; }
6402         LDKBolt12OfferContext* operator &() { return &self; }
6403         LDKBolt12OfferContext* operator ->() { return &self; }
6404         const LDKBolt12OfferContext* operator &() const { return &self; }
6405         const LDKBolt12OfferContext* operator ->() const { return &self; }
6406 };
6407 class Bolt12RefundContext {
6408 private:
6409         LDKBolt12RefundContext self;
6410 public:
6411         Bolt12RefundContext(const Bolt12RefundContext&) = delete;
6412         Bolt12RefundContext(Bolt12RefundContext&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12RefundContext)); }
6413         Bolt12RefundContext(LDKBolt12RefundContext&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12RefundContext)); }
6414         operator LDKBolt12RefundContext() && { LDKBolt12RefundContext res = self; memset(&self, 0, sizeof(LDKBolt12RefundContext)); return res; }
6415         ~Bolt12RefundContext() { Bolt12RefundContext_free(self); }
6416         Bolt12RefundContext& operator=(Bolt12RefundContext&& o) { Bolt12RefundContext_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12RefundContext)); return *this; }
6417         LDKBolt12RefundContext* operator &() { return &self; }
6418         LDKBolt12RefundContext* operator ->() { return &self; }
6419         const LDKBolt12RefundContext* operator &() const { return &self; }
6420         const LDKBolt12RefundContext* operator ->() const { return &self; }
6421 };
6422 class UtxoLookupError {
6423 private:
6424         LDKUtxoLookupError self;
6425 public:
6426         UtxoLookupError(const UtxoLookupError&) = delete;
6427         UtxoLookupError(UtxoLookupError&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookupError)); }
6428         UtxoLookupError(LDKUtxoLookupError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookupError)); }
6429         operator LDKUtxoLookupError() && { LDKUtxoLookupError res = self; memset(&self, 0, sizeof(LDKUtxoLookupError)); return res; }
6430         UtxoLookupError& operator=(UtxoLookupError&& o) { self = o.self; memset(&o, 0, sizeof(UtxoLookupError)); return *this; }
6431         LDKUtxoLookupError* operator &() { return &self; }
6432         LDKUtxoLookupError* operator ->() { return &self; }
6433         const LDKUtxoLookupError* operator &() const { return &self; }
6434         const LDKUtxoLookupError* operator ->() const { return &self; }
6435 };
6436 class UtxoResult {
6437 private:
6438         LDKUtxoResult self;
6439 public:
6440         UtxoResult(const UtxoResult&) = delete;
6441         UtxoResult(UtxoResult&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoResult)); }
6442         UtxoResult(LDKUtxoResult&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoResult)); }
6443         operator LDKUtxoResult() && { LDKUtxoResult res = self; memset(&self, 0, sizeof(LDKUtxoResult)); return res; }
6444         ~UtxoResult() { UtxoResult_free(self); }
6445         UtxoResult& operator=(UtxoResult&& o) { UtxoResult_free(self); self = o.self; memset(&o, 0, sizeof(UtxoResult)); return *this; }
6446         LDKUtxoResult* operator &() { return &self; }
6447         LDKUtxoResult* operator ->() { return &self; }
6448         const LDKUtxoResult* operator &() const { return &self; }
6449         const LDKUtxoResult* operator ->() const { return &self; }
6450 };
6451 class UtxoLookup {
6452 private:
6453         LDKUtxoLookup self;
6454 public:
6455         UtxoLookup(const UtxoLookup&) = delete;
6456         UtxoLookup(UtxoLookup&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookup)); }
6457         UtxoLookup(LDKUtxoLookup&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookup)); }
6458         operator LDKUtxoLookup() && { LDKUtxoLookup res = self; memset(&self, 0, sizeof(LDKUtxoLookup)); return res; }
6459         ~UtxoLookup() { UtxoLookup_free(self); }
6460         UtxoLookup& operator=(UtxoLookup&& o) { UtxoLookup_free(self); self = o.self; memset(&o, 0, sizeof(UtxoLookup)); return *this; }
6461         LDKUtxoLookup* operator &() { return &self; }
6462         LDKUtxoLookup* operator ->() { return &self; }
6463         const LDKUtxoLookup* operator &() const { return &self; }
6464         const LDKUtxoLookup* operator ->() const { return &self; }
6465         /**
6466          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
6467          *  Returns an error if `chain_hash` is for a different chain or if such a transaction output is
6468          *  unknown.
6469          * 
6470          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
6471          */
6472         inline LDK::UtxoResult get_utxo(const uint8_t (*chain_hash)[32], uint64_t short_channel_id);
6473 };
6474 class UtxoFuture {
6475 private:
6476         LDKUtxoFuture self;
6477 public:
6478         UtxoFuture(const UtxoFuture&) = delete;
6479         UtxoFuture(UtxoFuture&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoFuture)); }
6480         UtxoFuture(LDKUtxoFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoFuture)); }
6481         operator LDKUtxoFuture() && { LDKUtxoFuture res = self; memset(&self, 0, sizeof(LDKUtxoFuture)); return res; }
6482         ~UtxoFuture() { UtxoFuture_free(self); }
6483         UtxoFuture& operator=(UtxoFuture&& o) { UtxoFuture_free(self); self = o.self; memset(&o, 0, sizeof(UtxoFuture)); return *this; }
6484         LDKUtxoFuture* operator &() { return &self; }
6485         LDKUtxoFuture* operator ->() { return &self; }
6486         const LDKUtxoFuture* operator &() const { return &self; }
6487         const LDKUtxoFuture* operator ->() const { return &self; }
6488 };
6489 class OnionMessenger {
6490 private:
6491         LDKOnionMessenger self;
6492 public:
6493         OnionMessenger(const OnionMessenger&) = delete;
6494         OnionMessenger(OnionMessenger&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessenger)); }
6495         OnionMessenger(LDKOnionMessenger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessenger)); }
6496         operator LDKOnionMessenger() && { LDKOnionMessenger res = self; memset(&self, 0, sizeof(LDKOnionMessenger)); return res; }
6497         ~OnionMessenger() { OnionMessenger_free(self); }
6498         OnionMessenger& operator=(OnionMessenger&& o) { OnionMessenger_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessenger)); return *this; }
6499         LDKOnionMessenger* operator &() { return &self; }
6500         LDKOnionMessenger* operator ->() { return &self; }
6501         const LDKOnionMessenger* operator &() const { return &self; }
6502         const LDKOnionMessenger* operator ->() const { return &self; }
6503 };
6504 class MessageRouter {
6505 private:
6506         LDKMessageRouter self;
6507 public:
6508         MessageRouter(const MessageRouter&) = delete;
6509         MessageRouter(MessageRouter&& o) : self(o.self) { memset(&o, 0, sizeof(MessageRouter)); }
6510         MessageRouter(LDKMessageRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageRouter)); }
6511         operator LDKMessageRouter() && { LDKMessageRouter res = self; memset(&self, 0, sizeof(LDKMessageRouter)); return res; }
6512         ~MessageRouter() { MessageRouter_free(self); }
6513         MessageRouter& operator=(MessageRouter&& o) { MessageRouter_free(self); self = o.self; memset(&o, 0, sizeof(MessageRouter)); return *this; }
6514         LDKMessageRouter* operator &() { return &self; }
6515         LDKMessageRouter* operator ->() { return &self; }
6516         const LDKMessageRouter* operator &() const { return &self; }
6517         const LDKMessageRouter* operator ->() const { return &self; }
6518         /**
6519          *  Returns a route for sending an [`OnionMessage`] to the given [`Destination`].
6520          */
6521         inline LDK::CResult_OnionMessagePathNoneZ find_path(struct LDKPublicKey sender, struct LDKCVec_PublicKeyZ peers, struct LDKDestination destination);
6522         /**
6523          *  Creates [`BlindedPath`]s to the `recipient` node. The nodes in `peers` are assumed to be
6524          *  direct peers with the `recipient`.
6525          */
6526         inline LDK::CResult_CVec_BlindedPathZNoneZ create_blinded_paths(struct LDKPublicKey recipient, struct LDKCVec_PublicKeyZ peers);
6527 };
6528 class DefaultMessageRouter {
6529 private:
6530         LDKDefaultMessageRouter self;
6531 public:
6532         DefaultMessageRouter(const DefaultMessageRouter&) = delete;
6533         DefaultMessageRouter(DefaultMessageRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultMessageRouter)); }
6534         DefaultMessageRouter(LDKDefaultMessageRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultMessageRouter)); }
6535         operator LDKDefaultMessageRouter() && { LDKDefaultMessageRouter res = self; memset(&self, 0, sizeof(LDKDefaultMessageRouter)); return res; }
6536         ~DefaultMessageRouter() { DefaultMessageRouter_free(self); }
6537         DefaultMessageRouter& operator=(DefaultMessageRouter&& o) { DefaultMessageRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultMessageRouter)); return *this; }
6538         LDKDefaultMessageRouter* operator &() { return &self; }
6539         LDKDefaultMessageRouter* operator ->() { return &self; }
6540         const LDKDefaultMessageRouter* operator &() const { return &self; }
6541         const LDKDefaultMessageRouter* operator ->() const { return &self; }
6542 };
6543 class OnionMessagePath {
6544 private:
6545         LDKOnionMessagePath self;
6546 public:
6547         OnionMessagePath(const OnionMessagePath&) = delete;
6548         OnionMessagePath(OnionMessagePath&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessagePath)); }
6549         OnionMessagePath(LDKOnionMessagePath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessagePath)); }
6550         operator LDKOnionMessagePath() && { LDKOnionMessagePath res = self; memset(&self, 0, sizeof(LDKOnionMessagePath)); return res; }
6551         ~OnionMessagePath() { OnionMessagePath_free(self); }
6552         OnionMessagePath& operator=(OnionMessagePath&& o) { OnionMessagePath_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessagePath)); return *this; }
6553         LDKOnionMessagePath* operator &() { return &self; }
6554         LDKOnionMessagePath* operator ->() { return &self; }
6555         const LDKOnionMessagePath* operator &() const { return &self; }
6556         const LDKOnionMessagePath* operator ->() const { return &self; }
6557 };
6558 class Destination {
6559 private:
6560         LDKDestination self;
6561 public:
6562         Destination(const Destination&) = delete;
6563         Destination(Destination&& o) : self(o.self) { memset(&o, 0, sizeof(Destination)); }
6564         Destination(LDKDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDestination)); }
6565         operator LDKDestination() && { LDKDestination res = self; memset(&self, 0, sizeof(LDKDestination)); return res; }
6566         ~Destination() { Destination_free(self); }
6567         Destination& operator=(Destination&& o) { Destination_free(self); self = o.self; memset(&o, 0, sizeof(Destination)); return *this; }
6568         LDKDestination* operator &() { return &self; }
6569         LDKDestination* operator ->() { return &self; }
6570         const LDKDestination* operator &() const { return &self; }
6571         const LDKDestination* operator ->() const { return &self; }
6572 };
6573 class SendSuccess {
6574 private:
6575         LDKSendSuccess self;
6576 public:
6577         SendSuccess(const SendSuccess&) = delete;
6578         SendSuccess(SendSuccess&& o) : self(o.self) { memset(&o, 0, sizeof(SendSuccess)); }
6579         SendSuccess(LDKSendSuccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendSuccess)); }
6580         operator LDKSendSuccess() && { LDKSendSuccess res = self; memset(&self, 0, sizeof(LDKSendSuccess)); return res; }
6581         ~SendSuccess() { SendSuccess_free(self); }
6582         SendSuccess& operator=(SendSuccess&& o) { SendSuccess_free(self); self = o.self; memset(&o, 0, sizeof(SendSuccess)); return *this; }
6583         LDKSendSuccess* operator &() { return &self; }
6584         LDKSendSuccess* operator ->() { return &self; }
6585         const LDKSendSuccess* operator &() const { return &self; }
6586         const LDKSendSuccess* operator ->() const { return &self; }
6587 };
6588 class SendError {
6589 private:
6590         LDKSendError self;
6591 public:
6592         SendError(const SendError&) = delete;
6593         SendError(SendError&& o) : self(o.self) { memset(&o, 0, sizeof(SendError)); }
6594         SendError(LDKSendError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendError)); }
6595         operator LDKSendError() && { LDKSendError res = self; memset(&self, 0, sizeof(LDKSendError)); return res; }
6596         ~SendError() { SendError_free(self); }
6597         SendError& operator=(SendError&& o) { SendError_free(self); self = o.self; memset(&o, 0, sizeof(SendError)); return *this; }
6598         LDKSendError* operator &() { return &self; }
6599         LDKSendError* operator ->() { return &self; }
6600         const LDKSendError* operator &() const { return &self; }
6601         const LDKSendError* operator ->() const { return &self; }
6602 };
6603 class CustomOnionMessageHandler {
6604 private:
6605         LDKCustomOnionMessageHandler self;
6606 public:
6607         CustomOnionMessageHandler(const CustomOnionMessageHandler&) = delete;
6608         CustomOnionMessageHandler(CustomOnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageHandler)); }
6609         CustomOnionMessageHandler(LDKCustomOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageHandler)); }
6610         operator LDKCustomOnionMessageHandler() && { LDKCustomOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageHandler)); return res; }
6611         ~CustomOnionMessageHandler() { CustomOnionMessageHandler_free(self); }
6612         CustomOnionMessageHandler& operator=(CustomOnionMessageHandler&& o) { CustomOnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageHandler)); return *this; }
6613         LDKCustomOnionMessageHandler* operator &() { return &self; }
6614         LDKCustomOnionMessageHandler* operator ->() { return &self; }
6615         const LDKCustomOnionMessageHandler* operator &() const { return &self; }
6616         const LDKCustomOnionMessageHandler* operator ->() const { return &self; }
6617         /**
6618          *  Called with the custom message that was received, returning a response to send, if any.
6619          * 
6620          *  The returned [`Self::CustomMessage`], if any, is enqueued to be sent by [`OnionMessenger`].
6621          */
6622         inline LDK::COption_OnionMessageContentsZ handle_custom_message(struct LDKOnionMessageContents msg);
6623         /**
6624          *  Read a custom message of type `message_type` from `buffer`, returning `Ok(None)` if the
6625          *  message type is unknown.
6626          */
6627         inline LDK::CResult_COption_OnionMessageContentsZDecodeErrorZ read_custom_message(uint64_t message_type, struct LDKu8slice buffer);
6628         /**
6629          *  Releases any [`Self::CustomMessage`]s that need to be sent.
6630          * 
6631          *  Typically, this is used for messages initiating a message flow rather than in response to
6632          *  another message. The latter should use the return value of [`Self::handle_custom_message`].
6633          */
6634         inline LDK::CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ release_pending_custom_messages();
6635 };
6636 class PeeledOnion {
6637 private:
6638         LDKPeeledOnion self;
6639 public:
6640         PeeledOnion(const PeeledOnion&) = delete;
6641         PeeledOnion(PeeledOnion&& o) : self(o.self) { memset(&o, 0, sizeof(PeeledOnion)); }
6642         PeeledOnion(LDKPeeledOnion&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeeledOnion)); }
6643         operator LDKPeeledOnion() && { LDKPeeledOnion res = self; memset(&self, 0, sizeof(LDKPeeledOnion)); return res; }
6644         ~PeeledOnion() { PeeledOnion_free(self); }
6645         PeeledOnion& operator=(PeeledOnion&& o) { PeeledOnion_free(self); self = o.self; memset(&o, 0, sizeof(PeeledOnion)); return *this; }
6646         LDKPeeledOnion* operator &() { return &self; }
6647         LDKPeeledOnion* operator ->() { return &self; }
6648         const LDKPeeledOnion* operator &() const { return &self; }
6649         const LDKPeeledOnion* operator ->() const { return &self; }
6650 };
6651 class FilesystemStore {
6652 private:
6653         LDKFilesystemStore self;
6654 public:
6655         FilesystemStore(const FilesystemStore&) = delete;
6656         FilesystemStore(FilesystemStore&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemStore)); }
6657         FilesystemStore(LDKFilesystemStore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemStore)); }
6658         operator LDKFilesystemStore() && { LDKFilesystemStore res = self; memset(&self, 0, sizeof(LDKFilesystemStore)); return res; }
6659         ~FilesystemStore() { FilesystemStore_free(self); }
6660         FilesystemStore& operator=(FilesystemStore&& o) { FilesystemStore_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemStore)); return *this; }
6661         LDKFilesystemStore* operator &() { return &self; }
6662         LDKFilesystemStore* operator ->() { return &self; }
6663         const LDKFilesystemStore* operator &() const { return &self; }
6664         const LDKFilesystemStore* operator ->() const { return &self; }
6665 };
6666 class NextMessageHop {
6667 private:
6668         LDKNextMessageHop self;
6669 public:
6670         NextMessageHop(const NextMessageHop&) = delete;
6671         NextMessageHop(NextMessageHop&& o) : self(o.self) { memset(&o, 0, sizeof(NextMessageHop)); }
6672         NextMessageHop(LDKNextMessageHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNextMessageHop)); }
6673         operator LDKNextMessageHop() && { LDKNextMessageHop res = self; memset(&self, 0, sizeof(LDKNextMessageHop)); return res; }
6674         ~NextMessageHop() { NextMessageHop_free(self); }
6675         NextMessageHop& operator=(NextMessageHop&& o) { NextMessageHop_free(self); self = o.self; memset(&o, 0, sizeof(NextMessageHop)); return *this; }
6676         LDKNextMessageHop* operator &() { return &self; }
6677         LDKNextMessageHop* operator ->() { return &self; }
6678         const LDKNextMessageHop* operator &() const { return &self; }
6679         const LDKNextMessageHop* operator ->() const { return &self; }
6680 };
6681 class BlindedPath {
6682 private:
6683         LDKBlindedPath self;
6684 public:
6685         BlindedPath(const BlindedPath&) = delete;
6686         BlindedPath(BlindedPath&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPath)); }
6687         BlindedPath(LDKBlindedPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPath)); }
6688         operator LDKBlindedPath() && { LDKBlindedPath res = self; memset(&self, 0, sizeof(LDKBlindedPath)); return res; }
6689         ~BlindedPath() { BlindedPath_free(self); }
6690         BlindedPath& operator=(BlindedPath&& o) { BlindedPath_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPath)); return *this; }
6691         LDKBlindedPath* operator &() { return &self; }
6692         LDKBlindedPath* operator ->() { return &self; }
6693         const LDKBlindedPath* operator &() const { return &self; }
6694         const LDKBlindedPath* operator ->() const { return &self; }
6695 };
6696 class IntroductionNode {
6697 private:
6698         LDKIntroductionNode self;
6699 public:
6700         IntroductionNode(const IntroductionNode&) = delete;
6701         IntroductionNode(IntroductionNode&& o) : self(o.self) { memset(&o, 0, sizeof(IntroductionNode)); }
6702         IntroductionNode(LDKIntroductionNode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIntroductionNode)); }
6703         operator LDKIntroductionNode() && { LDKIntroductionNode res = self; memset(&self, 0, sizeof(LDKIntroductionNode)); return res; }
6704         ~IntroductionNode() { IntroductionNode_free(self); }
6705         IntroductionNode& operator=(IntroductionNode&& o) { IntroductionNode_free(self); self = o.self; memset(&o, 0, sizeof(IntroductionNode)); return *this; }
6706         LDKIntroductionNode* operator &() { return &self; }
6707         LDKIntroductionNode* operator ->() { return &self; }
6708         const LDKIntroductionNode* operator &() const { return &self; }
6709         const LDKIntroductionNode* operator ->() const { return &self; }
6710 };
6711 class Direction {
6712 private:
6713         LDKDirection self;
6714 public:
6715         Direction(const Direction&) = delete;
6716         Direction(Direction&& o) : self(o.self) { memset(&o, 0, sizeof(Direction)); }
6717         Direction(LDKDirection&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirection)); }
6718         operator LDKDirection() && { LDKDirection res = self; memset(&self, 0, sizeof(LDKDirection)); return res; }
6719         Direction& operator=(Direction&& o) { self = o.self; memset(&o, 0, sizeof(Direction)); return *this; }
6720         LDKDirection* operator &() { return &self; }
6721         LDKDirection* operator ->() { return &self; }
6722         const LDKDirection* operator &() const { return &self; }
6723         const LDKDirection* operator ->() const { return &self; }
6724 };
6725 class NodeIdLookUp {
6726 private:
6727         LDKNodeIdLookUp self;
6728 public:
6729         NodeIdLookUp(const NodeIdLookUp&) = delete;
6730         NodeIdLookUp(NodeIdLookUp&& o) : self(o.self) { memset(&o, 0, sizeof(NodeIdLookUp)); }
6731         NodeIdLookUp(LDKNodeIdLookUp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeIdLookUp)); }
6732         operator LDKNodeIdLookUp() && { LDKNodeIdLookUp res = self; memset(&self, 0, sizeof(LDKNodeIdLookUp)); return res; }
6733         ~NodeIdLookUp() { NodeIdLookUp_free(self); }
6734         NodeIdLookUp& operator=(NodeIdLookUp&& o) { NodeIdLookUp_free(self); self = o.self; memset(&o, 0, sizeof(NodeIdLookUp)); return *this; }
6735         LDKNodeIdLookUp* operator &() { return &self; }
6736         LDKNodeIdLookUp* operator ->() { return &self; }
6737         const LDKNodeIdLookUp* operator &() const { return &self; }
6738         const LDKNodeIdLookUp* operator ->() const { return &self; }
6739         /**
6740          *  Returns the node id of the forwarding node's channel counterparty with `short_channel_id`.
6741          * 
6742          *  Here, the forwarding node is referring to the node of the [`OnionMessenger`] parameterized
6743          *  by the [`NodeIdLookUp`] and the counterparty to one of that node's peers.
6744          * 
6745          *  [`OnionMessenger`]: crate::onion_message::messenger::OnionMessenger
6746          * 
6747          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
6748          */
6749         inline LDKPublicKey next_node_id(uint64_t short_channel_id);
6750 };
6751 class EmptyNodeIdLookUp {
6752 private:
6753         LDKEmptyNodeIdLookUp self;
6754 public:
6755         EmptyNodeIdLookUp(const EmptyNodeIdLookUp&) = delete;
6756         EmptyNodeIdLookUp(EmptyNodeIdLookUp&& o) : self(o.self) { memset(&o, 0, sizeof(EmptyNodeIdLookUp)); }
6757         EmptyNodeIdLookUp(LDKEmptyNodeIdLookUp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEmptyNodeIdLookUp)); }
6758         operator LDKEmptyNodeIdLookUp() && { LDKEmptyNodeIdLookUp res = self; memset(&self, 0, sizeof(LDKEmptyNodeIdLookUp)); return res; }
6759         ~EmptyNodeIdLookUp() { EmptyNodeIdLookUp_free(self); }
6760         EmptyNodeIdLookUp& operator=(EmptyNodeIdLookUp&& o) { EmptyNodeIdLookUp_free(self); self = o.self; memset(&o, 0, sizeof(EmptyNodeIdLookUp)); return *this; }
6761         LDKEmptyNodeIdLookUp* operator &() { return &self; }
6762         LDKEmptyNodeIdLookUp* operator ->() { return &self; }
6763         const LDKEmptyNodeIdLookUp* operator &() const { return &self; }
6764         const LDKEmptyNodeIdLookUp* operator ->() const { return &self; }
6765 };
6766 class BlindedHop {
6767 private:
6768         LDKBlindedHop self;
6769 public:
6770         BlindedHop(const BlindedHop&) = delete;
6771         BlindedHop(BlindedHop&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHop)); }
6772         BlindedHop(LDKBlindedHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHop)); }
6773         operator LDKBlindedHop() && { LDKBlindedHop res = self; memset(&self, 0, sizeof(LDKBlindedHop)); return res; }
6774         ~BlindedHop() { BlindedHop_free(self); }
6775         BlindedHop& operator=(BlindedHop&& o) { BlindedHop_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHop)); return *this; }
6776         LDKBlindedHop* operator &() { return &self; }
6777         LDKBlindedHop* operator ->() { return &self; }
6778         const LDKBlindedHop* operator &() const { return &self; }
6779         const LDKBlindedHop* operator ->() const { return &self; }
6780 };
6781 class InvoiceError {
6782 private:
6783         LDKInvoiceError self;
6784 public:
6785         InvoiceError(const InvoiceError&) = delete;
6786         InvoiceError(InvoiceError&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceError)); }
6787         InvoiceError(LDKInvoiceError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceError)); }
6788         operator LDKInvoiceError() && { LDKInvoiceError res = self; memset(&self, 0, sizeof(LDKInvoiceError)); return res; }
6789         ~InvoiceError() { InvoiceError_free(self); }
6790         InvoiceError& operator=(InvoiceError&& o) { InvoiceError_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceError)); return *this; }
6791         LDKInvoiceError* operator &() { return &self; }
6792         LDKInvoiceError* operator ->() { return &self; }
6793         const LDKInvoiceError* operator &() const { return &self; }
6794         const LDKInvoiceError* operator ->() const { return &self; }
6795 };
6796 class ErroneousField {
6797 private:
6798         LDKErroneousField self;
6799 public:
6800         ErroneousField(const ErroneousField&) = delete;
6801         ErroneousField(ErroneousField&& o) : self(o.self) { memset(&o, 0, sizeof(ErroneousField)); }
6802         ErroneousField(LDKErroneousField&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroneousField)); }
6803         operator LDKErroneousField() && { LDKErroneousField res = self; memset(&self, 0, sizeof(LDKErroneousField)); return res; }
6804         ~ErroneousField() { ErroneousField_free(self); }
6805         ErroneousField& operator=(ErroneousField&& o) { ErroneousField_free(self); self = o.self; memset(&o, 0, sizeof(ErroneousField)); return *this; }
6806         LDKErroneousField* operator &() { return &self; }
6807         LDKErroneousField* operator ->() { return &self; }
6808         const LDKErroneousField* operator &() const { return &self; }
6809         const LDKErroneousField* operator ->() const { return &self; }
6810 };
6811 class TrackedSpendableOutput {
6812 private:
6813         LDKTrackedSpendableOutput self;
6814 public:
6815         TrackedSpendableOutput(const TrackedSpendableOutput&) = delete;
6816         TrackedSpendableOutput(TrackedSpendableOutput&& o) : self(o.self) { memset(&o, 0, sizeof(TrackedSpendableOutput)); }
6817         TrackedSpendableOutput(LDKTrackedSpendableOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrackedSpendableOutput)); }
6818         operator LDKTrackedSpendableOutput() && { LDKTrackedSpendableOutput res = self; memset(&self, 0, sizeof(LDKTrackedSpendableOutput)); return res; }
6819         ~TrackedSpendableOutput() { TrackedSpendableOutput_free(self); }
6820         TrackedSpendableOutput& operator=(TrackedSpendableOutput&& o) { TrackedSpendableOutput_free(self); self = o.self; memset(&o, 0, sizeof(TrackedSpendableOutput)); return *this; }
6821         LDKTrackedSpendableOutput* operator &() { return &self; }
6822         LDKTrackedSpendableOutput* operator ->() { return &self; }
6823         const LDKTrackedSpendableOutput* operator &() const { return &self; }
6824         const LDKTrackedSpendableOutput* operator ->() const { return &self; }
6825 };
6826 class OutputSpendStatus {
6827 private:
6828         LDKOutputSpendStatus self;
6829 public:
6830         OutputSpendStatus(const OutputSpendStatus&) = delete;
6831         OutputSpendStatus(OutputSpendStatus&& o) : self(o.self) { memset(&o, 0, sizeof(OutputSpendStatus)); }
6832         OutputSpendStatus(LDKOutputSpendStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutputSpendStatus)); }
6833         operator LDKOutputSpendStatus() && { LDKOutputSpendStatus res = self; memset(&self, 0, sizeof(LDKOutputSpendStatus)); return res; }
6834         ~OutputSpendStatus() { OutputSpendStatus_free(self); }
6835         OutputSpendStatus& operator=(OutputSpendStatus&& o) { OutputSpendStatus_free(self); self = o.self; memset(&o, 0, sizeof(OutputSpendStatus)); return *this; }
6836         LDKOutputSpendStatus* operator &() { return &self; }
6837         LDKOutputSpendStatus* operator ->() { return &self; }
6838         const LDKOutputSpendStatus* operator &() const { return &self; }
6839         const LDKOutputSpendStatus* operator ->() const { return &self; }
6840 };
6841 class OutputSweeper {
6842 private:
6843         LDKOutputSweeper self;
6844 public:
6845         OutputSweeper(const OutputSweeper&) = delete;
6846         OutputSweeper(OutputSweeper&& o) : self(o.self) { memset(&o, 0, sizeof(OutputSweeper)); }
6847         OutputSweeper(LDKOutputSweeper&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutputSweeper)); }
6848         operator LDKOutputSweeper() && { LDKOutputSweeper res = self; memset(&self, 0, sizeof(LDKOutputSweeper)); return res; }
6849         ~OutputSweeper() { OutputSweeper_free(self); }
6850         OutputSweeper& operator=(OutputSweeper&& o) { OutputSweeper_free(self); self = o.self; memset(&o, 0, sizeof(OutputSweeper)); return *this; }
6851         LDKOutputSweeper* operator &() { return &self; }
6852         LDKOutputSweeper* operator ->() { return &self; }
6853         const LDKOutputSweeper* operator &() const { return &self; }
6854         const LDKOutputSweeper* operator ->() const { return &self; }
6855 };
6856 class SpendingDelay {
6857 private:
6858         LDKSpendingDelay self;
6859 public:
6860         SpendingDelay(const SpendingDelay&) = delete;
6861         SpendingDelay(SpendingDelay&& o) : self(o.self) { memset(&o, 0, sizeof(SpendingDelay)); }
6862         SpendingDelay(LDKSpendingDelay&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendingDelay)); }
6863         operator LDKSpendingDelay() && { LDKSpendingDelay res = self; memset(&self, 0, sizeof(LDKSpendingDelay)); return res; }
6864         ~SpendingDelay() { SpendingDelay_free(self); }
6865         SpendingDelay& operator=(SpendingDelay&& o) { SpendingDelay_free(self); self = o.self; memset(&o, 0, sizeof(SpendingDelay)); return *this; }
6866         LDKSpendingDelay* operator &() { return &self; }
6867         LDKSpendingDelay* operator ->() { return &self; }
6868         const LDKSpendingDelay* operator &() const { return &self; }
6869         const LDKSpendingDelay* operator ->() const { return &self; }
6870 };
6871 class DelayedPaymentBasepoint {
6872 private:
6873         LDKDelayedPaymentBasepoint self;
6874 public:
6875         DelayedPaymentBasepoint(const DelayedPaymentBasepoint&) = delete;
6876         DelayedPaymentBasepoint(DelayedPaymentBasepoint&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentBasepoint)); }
6877         DelayedPaymentBasepoint(LDKDelayedPaymentBasepoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentBasepoint)); }
6878         operator LDKDelayedPaymentBasepoint() && { LDKDelayedPaymentBasepoint res = self; memset(&self, 0, sizeof(LDKDelayedPaymentBasepoint)); return res; }
6879         ~DelayedPaymentBasepoint() { DelayedPaymentBasepoint_free(self); }
6880         DelayedPaymentBasepoint& operator=(DelayedPaymentBasepoint&& o) { DelayedPaymentBasepoint_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentBasepoint)); return *this; }
6881         LDKDelayedPaymentBasepoint* operator &() { return &self; }
6882         LDKDelayedPaymentBasepoint* operator ->() { return &self; }
6883         const LDKDelayedPaymentBasepoint* operator &() const { return &self; }
6884         const LDKDelayedPaymentBasepoint* operator ->() const { return &self; }
6885 };
6886 class DelayedPaymentKey {
6887 private:
6888         LDKDelayedPaymentKey self;
6889 public:
6890         DelayedPaymentKey(const DelayedPaymentKey&) = delete;
6891         DelayedPaymentKey(DelayedPaymentKey&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentKey)); }
6892         DelayedPaymentKey(LDKDelayedPaymentKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentKey)); }
6893         operator LDKDelayedPaymentKey() && { LDKDelayedPaymentKey res = self; memset(&self, 0, sizeof(LDKDelayedPaymentKey)); return res; }
6894         ~DelayedPaymentKey() { DelayedPaymentKey_free(self); }
6895         DelayedPaymentKey& operator=(DelayedPaymentKey&& o) { DelayedPaymentKey_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentKey)); return *this; }
6896         LDKDelayedPaymentKey* operator &() { return &self; }
6897         LDKDelayedPaymentKey* operator ->() { return &self; }
6898         const LDKDelayedPaymentKey* operator &() const { return &self; }
6899         const LDKDelayedPaymentKey* operator ->() const { return &self; }
6900 };
6901 class HtlcBasepoint {
6902 private:
6903         LDKHtlcBasepoint self;
6904 public:
6905         HtlcBasepoint(const HtlcBasepoint&) = delete;
6906         HtlcBasepoint(HtlcBasepoint&& o) : self(o.self) { memset(&o, 0, sizeof(HtlcBasepoint)); }
6907         HtlcBasepoint(LDKHtlcBasepoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHtlcBasepoint)); }
6908         operator LDKHtlcBasepoint() && { LDKHtlcBasepoint res = self; memset(&self, 0, sizeof(LDKHtlcBasepoint)); return res; }
6909         ~HtlcBasepoint() { HtlcBasepoint_free(self); }
6910         HtlcBasepoint& operator=(HtlcBasepoint&& o) { HtlcBasepoint_free(self); self = o.self; memset(&o, 0, sizeof(HtlcBasepoint)); return *this; }
6911         LDKHtlcBasepoint* operator &() { return &self; }
6912         LDKHtlcBasepoint* operator ->() { return &self; }
6913         const LDKHtlcBasepoint* operator &() const { return &self; }
6914         const LDKHtlcBasepoint* operator ->() const { return &self; }
6915 };
6916 class HtlcKey {
6917 private:
6918         LDKHtlcKey self;
6919 public:
6920         HtlcKey(const HtlcKey&) = delete;
6921         HtlcKey(HtlcKey&& o) : self(o.self) { memset(&o, 0, sizeof(HtlcKey)); }
6922         HtlcKey(LDKHtlcKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHtlcKey)); }
6923         operator LDKHtlcKey() && { LDKHtlcKey res = self; memset(&self, 0, sizeof(LDKHtlcKey)); return res; }
6924         ~HtlcKey() { HtlcKey_free(self); }
6925         HtlcKey& operator=(HtlcKey&& o) { HtlcKey_free(self); self = o.self; memset(&o, 0, sizeof(HtlcKey)); return *this; }
6926         LDKHtlcKey* operator &() { return &self; }
6927         LDKHtlcKey* operator ->() { return &self; }
6928         const LDKHtlcKey* operator &() const { return &self; }
6929         const LDKHtlcKey* operator ->() const { return &self; }
6930 };
6931 class RevocationBasepoint {
6932 private:
6933         LDKRevocationBasepoint self;
6934 public:
6935         RevocationBasepoint(const RevocationBasepoint&) = delete;
6936         RevocationBasepoint(RevocationBasepoint&& o) : self(o.self) { memset(&o, 0, sizeof(RevocationBasepoint)); }
6937         RevocationBasepoint(LDKRevocationBasepoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevocationBasepoint)); }
6938         operator LDKRevocationBasepoint() && { LDKRevocationBasepoint res = self; memset(&self, 0, sizeof(LDKRevocationBasepoint)); return res; }
6939         ~RevocationBasepoint() { RevocationBasepoint_free(self); }
6940         RevocationBasepoint& operator=(RevocationBasepoint&& o) { RevocationBasepoint_free(self); self = o.self; memset(&o, 0, sizeof(RevocationBasepoint)); return *this; }
6941         LDKRevocationBasepoint* operator &() { return &self; }
6942         LDKRevocationBasepoint* operator ->() { return &self; }
6943         const LDKRevocationBasepoint* operator &() const { return &self; }
6944         const LDKRevocationBasepoint* operator ->() const { return &self; }
6945 };
6946 class RevocationKey {
6947 private:
6948         LDKRevocationKey self;
6949 public:
6950         RevocationKey(const RevocationKey&) = delete;
6951         RevocationKey(RevocationKey&& o) : self(o.self) { memset(&o, 0, sizeof(RevocationKey)); }
6952         RevocationKey(LDKRevocationKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevocationKey)); }
6953         operator LDKRevocationKey() && { LDKRevocationKey res = self; memset(&self, 0, sizeof(LDKRevocationKey)); return res; }
6954         ~RevocationKey() { RevocationKey_free(self); }
6955         RevocationKey& operator=(RevocationKey&& o) { RevocationKey_free(self); self = o.self; memset(&o, 0, sizeof(RevocationKey)); return *this; }
6956         LDKRevocationKey* operator &() { return &self; }
6957         LDKRevocationKey* operator ->() { return &self; }
6958         const LDKRevocationKey* operator &() const { return &self; }
6959         const LDKRevocationKey* operator ->() const { return &self; }
6960 };
6961 class MonitorUpdateId {
6962 private:
6963         LDKMonitorUpdateId self;
6964 public:
6965         MonitorUpdateId(const MonitorUpdateId&) = delete;
6966         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
6967         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
6968         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
6969         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
6970         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
6971         LDKMonitorUpdateId* operator &() { return &self; }
6972         LDKMonitorUpdateId* operator ->() { return &self; }
6973         const LDKMonitorUpdateId* operator &() const { return &self; }
6974         const LDKMonitorUpdateId* operator ->() const { return &self; }
6975 };
6976 class Persist {
6977 private:
6978         LDKPersist self;
6979 public:
6980         Persist(const Persist&) = delete;
6981         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
6982         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
6983         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
6984         ~Persist() { Persist_free(self); }
6985         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
6986         LDKPersist* operator &() { return &self; }
6987         LDKPersist* operator ->() { return &self; }
6988         const LDKPersist* operator &() const { return &self; }
6989         const LDKPersist* operator ->() const { return &self; }
6990         /**
6991          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
6992          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
6993          * 
6994          *  The data can be stored any way you want, but the identifier provided by LDK is the
6995          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
6996          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
6997          * 
6998          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
6999          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
7000          * 
7001          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
7002          *  and [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
7003          * 
7004          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
7005          *  [`Writeable::write`]: crate::util::ser::Writeable::write
7006          */
7007         inline LDK::ChannelMonitorUpdateStatus persist_new_channel(struct LDKOutPoint channel_funding_outpoint, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
7008         /**
7009          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
7010          *  update.
7011          * 
7012          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
7013          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
7014          *  details.
7015          * 
7016          *  During blockchain synchronization operations, and in some rare cases, this may be called with
7017          *  no [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
7018          *  Note that after the full [`ChannelMonitor`] is persisted any previous
7019          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
7020          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
7021          * 
7022          *  If an implementer chooses to persist the updates only, they need to make
7023          *  sure that all the updates are applied to the `ChannelMonitors` *before*
7024          *  the set of channel monitors is given to the `ChannelManager`
7025          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
7026          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
7027          *  persisted, then there is no need to persist individual updates.
7028          * 
7029          *  Note that there could be a performance tradeoff between persisting complete
7030          *  channel monitors on every update vs. persisting only updates and applying
7031          *  them in batches. The size of each monitor grows `O(number of state updates)`
7032          *  whereas updates are small and `O(1)`.
7033          * 
7034          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
7035          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
7036          * 
7037          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
7038          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
7039          *  [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
7040          * 
7041          *  [`Writeable::write`]: crate::util::ser::Writeable::write
7042          * 
7043          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
7044          */
7045         inline LDK::ChannelMonitorUpdateStatus update_persisted_channel(struct LDKOutPoint channel_funding_outpoint, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
7046         /**
7047          *  Prevents the channel monitor from being loaded on startup.
7048          * 
7049          *  Archiving the data in a backup location (rather than deleting it fully) is useful for
7050          *  hedging against data loss in case of unexpected failure.
7051          */
7052         inline void archive_persisted_channel(struct LDKOutPoint channel_funding_outpoint);
7053 };
7054 class LockedChannelMonitor {
7055 private:
7056         LDKLockedChannelMonitor self;
7057 public:
7058         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
7059         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
7060         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
7061         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
7062         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
7063         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
7064         LDKLockedChannelMonitor* operator &() { return &self; }
7065         LDKLockedChannelMonitor* operator ->() { return &self; }
7066         const LDKLockedChannelMonitor* operator &() const { return &self; }
7067         const LDKLockedChannelMonitor* operator ->() const { return &self; }
7068 };
7069 class ChainMonitor {
7070 private:
7071         LDKChainMonitor self;
7072 public:
7073         ChainMonitor(const ChainMonitor&) = delete;
7074         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
7075         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
7076         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
7077         ~ChainMonitor() { ChainMonitor_free(self); }
7078         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
7079         LDKChainMonitor* operator &() { return &self; }
7080         LDKChainMonitor* operator ->() { return &self; }
7081         const LDKChainMonitor* operator &() const { return &self; }
7082         const LDKChainMonitor* operator ->() const { return &self; }
7083 };
7084 class CResult_HtlcKeyDecodeErrorZ {
7085 private:
7086         LDKCResult_HtlcKeyDecodeErrorZ self;
7087 public:
7088         CResult_HtlcKeyDecodeErrorZ(const CResult_HtlcKeyDecodeErrorZ&) = delete;
7089         CResult_HtlcKeyDecodeErrorZ(CResult_HtlcKeyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HtlcKeyDecodeErrorZ)); }
7090         CResult_HtlcKeyDecodeErrorZ(LDKCResult_HtlcKeyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HtlcKeyDecodeErrorZ)); }
7091         operator LDKCResult_HtlcKeyDecodeErrorZ() && { LDKCResult_HtlcKeyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HtlcKeyDecodeErrorZ)); return res; }
7092         ~CResult_HtlcKeyDecodeErrorZ() { CResult_HtlcKeyDecodeErrorZ_free(self); }
7093         CResult_HtlcKeyDecodeErrorZ& operator=(CResult_HtlcKeyDecodeErrorZ&& o) { CResult_HtlcKeyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HtlcKeyDecodeErrorZ)); return *this; }
7094         LDKCResult_HtlcKeyDecodeErrorZ* operator &() { return &self; }
7095         LDKCResult_HtlcKeyDecodeErrorZ* operator ->() { return &self; }
7096         const LDKCResult_HtlcKeyDecodeErrorZ* operator &() const { return &self; }
7097         const LDKCResult_HtlcKeyDecodeErrorZ* operator ->() const { return &self; }
7098 };
7099 class CResult_TransactionU16LenLimitedNoneZ {
7100 private:
7101         LDKCResult_TransactionU16LenLimitedNoneZ self;
7102 public:
7103         CResult_TransactionU16LenLimitedNoneZ(const CResult_TransactionU16LenLimitedNoneZ&) = delete;
7104         CResult_TransactionU16LenLimitedNoneZ(CResult_TransactionU16LenLimitedNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedNoneZ)); }
7105         CResult_TransactionU16LenLimitedNoneZ(LDKCResult_TransactionU16LenLimitedNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionU16LenLimitedNoneZ)); }
7106         operator LDKCResult_TransactionU16LenLimitedNoneZ() && { LDKCResult_TransactionU16LenLimitedNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionU16LenLimitedNoneZ)); return res; }
7107         ~CResult_TransactionU16LenLimitedNoneZ() { CResult_TransactionU16LenLimitedNoneZ_free(self); }
7108         CResult_TransactionU16LenLimitedNoneZ& operator=(CResult_TransactionU16LenLimitedNoneZ&& o) { CResult_TransactionU16LenLimitedNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedNoneZ)); return *this; }
7109         LDKCResult_TransactionU16LenLimitedNoneZ* operator &() { return &self; }
7110         LDKCResult_TransactionU16LenLimitedNoneZ* operator ->() { return &self; }
7111         const LDKCResult_TransactionU16LenLimitedNoneZ* operator &() const { return &self; }
7112         const LDKCResult_TransactionU16LenLimitedNoneZ* operator ->() const { return &self; }
7113 };
7114 class CVec_TrackedSpendableOutputZ {
7115 private:
7116         LDKCVec_TrackedSpendableOutputZ self;
7117 public:
7118         CVec_TrackedSpendableOutputZ(const CVec_TrackedSpendableOutputZ&) = delete;
7119         CVec_TrackedSpendableOutputZ(CVec_TrackedSpendableOutputZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TrackedSpendableOutputZ)); }
7120         CVec_TrackedSpendableOutputZ(LDKCVec_TrackedSpendableOutputZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TrackedSpendableOutputZ)); }
7121         operator LDKCVec_TrackedSpendableOutputZ() && { LDKCVec_TrackedSpendableOutputZ res = self; memset(&self, 0, sizeof(LDKCVec_TrackedSpendableOutputZ)); return res; }
7122         ~CVec_TrackedSpendableOutputZ() { CVec_TrackedSpendableOutputZ_free(self); }
7123         CVec_TrackedSpendableOutputZ& operator=(CVec_TrackedSpendableOutputZ&& o) { CVec_TrackedSpendableOutputZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TrackedSpendableOutputZ)); return *this; }
7124         LDKCVec_TrackedSpendableOutputZ* operator &() { return &self; }
7125         LDKCVec_TrackedSpendableOutputZ* operator ->() { return &self; }
7126         const LDKCVec_TrackedSpendableOutputZ* operator &() const { return &self; }
7127         const LDKCVec_TrackedSpendableOutputZ* operator ->() const { return &self; }
7128 };
7129 class CResult_LockedChannelMonitorNoneZ {
7130 private:
7131         LDKCResult_LockedChannelMonitorNoneZ self;
7132 public:
7133         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
7134         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
7135         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
7136         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
7137         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
7138         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
7139         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
7140         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
7141         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
7142         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
7143 };
7144 class CVec_C2Tuple_BlindedPayInfoBlindedPathZZ {
7145 private:
7146         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ self;
7147 public:
7148         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(const CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&) = delete;
7149         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); }
7150         CVec_C2Tuple_BlindedPayInfoBlindedPathZZ(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); }
7151         operator LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ() && { LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ)); return res; }
7152         ~CVec_C2Tuple_BlindedPayInfoBlindedPathZZ() { CVec_C2Tuple_BlindedPayInfoBlindedPathZZ_free(self); }
7153         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; }
7154         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator &() { return &self; }
7155         LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator ->() { return &self; }
7156         const LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator &() const { return &self; }
7157         const LDKCVec_C2Tuple_BlindedPayInfoBlindedPathZZ* operator ->() const { return &self; }
7158 };
7159 class CResult_PhantomRouteHintsDecodeErrorZ {
7160 private:
7161         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
7162 public:
7163         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
7164         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
7165         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
7166         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
7167         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
7168         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
7169         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
7170         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
7171         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
7172         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
7173 };
7174 class CResult_FundingCreatedDecodeErrorZ {
7175 private:
7176         LDKCResult_FundingCreatedDecodeErrorZ self;
7177 public:
7178         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
7179         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
7180         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
7181         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
7182         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
7183         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
7184         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
7185         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
7186         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
7187         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
7188 };
7189 class CVec_C2Tuple_u32TxOutZZ {
7190 private:
7191         LDKCVec_C2Tuple_u32TxOutZZ self;
7192 public:
7193         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
7194         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
7195         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
7196         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
7197         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
7198         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; }
7199         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
7200         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
7201         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
7202         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
7203 };
7204 class CResult_RetryDecodeErrorZ {
7205 private:
7206         LDKCResult_RetryDecodeErrorZ self;
7207 public:
7208         CResult_RetryDecodeErrorZ(const CResult_RetryDecodeErrorZ&) = delete;
7209         CResult_RetryDecodeErrorZ(CResult_RetryDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RetryDecodeErrorZ)); }
7210         CResult_RetryDecodeErrorZ(LDKCResult_RetryDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RetryDecodeErrorZ)); }
7211         operator LDKCResult_RetryDecodeErrorZ() && { LDKCResult_RetryDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RetryDecodeErrorZ)); return res; }
7212         ~CResult_RetryDecodeErrorZ() { CResult_RetryDecodeErrorZ_free(self); }
7213         CResult_RetryDecodeErrorZ& operator=(CResult_RetryDecodeErrorZ&& o) { CResult_RetryDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RetryDecodeErrorZ)); return *this; }
7214         LDKCResult_RetryDecodeErrorZ* operator &() { return &self; }
7215         LDKCResult_RetryDecodeErrorZ* operator ->() { return &self; }
7216         const LDKCResult_RetryDecodeErrorZ* operator &() const { return &self; }
7217         const LDKCResult_RetryDecodeErrorZ* operator ->() const { return &self; }
7218 };
7219 class CResult_BlindedForwardDecodeErrorZ {
7220 private:
7221         LDKCResult_BlindedForwardDecodeErrorZ self;
7222 public:
7223         CResult_BlindedForwardDecodeErrorZ(const CResult_BlindedForwardDecodeErrorZ&) = delete;
7224         CResult_BlindedForwardDecodeErrorZ(CResult_BlindedForwardDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedForwardDecodeErrorZ)); }
7225         CResult_BlindedForwardDecodeErrorZ(LDKCResult_BlindedForwardDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedForwardDecodeErrorZ)); }
7226         operator LDKCResult_BlindedForwardDecodeErrorZ() && { LDKCResult_BlindedForwardDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedForwardDecodeErrorZ)); return res; }
7227         ~CResult_BlindedForwardDecodeErrorZ() { CResult_BlindedForwardDecodeErrorZ_free(self); }
7228         CResult_BlindedForwardDecodeErrorZ& operator=(CResult_BlindedForwardDecodeErrorZ&& o) { CResult_BlindedForwardDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedForwardDecodeErrorZ)); return *this; }
7229         LDKCResult_BlindedForwardDecodeErrorZ* operator &() { return &self; }
7230         LDKCResult_BlindedForwardDecodeErrorZ* operator ->() { return &self; }
7231         const LDKCResult_BlindedForwardDecodeErrorZ* operator &() const { return &self; }
7232         const LDKCResult_BlindedForwardDecodeErrorZ* operator ->() const { return &self; }
7233 };
7234 class CResult_ChannelInfoDecodeErrorZ {
7235 private:
7236         LDKCResult_ChannelInfoDecodeErrorZ self;
7237 public:
7238         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
7239         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
7240         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
7241         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
7242         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
7243         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
7244         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
7245         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
7246         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
7247         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
7248 };
7249 class COption_PaymentContextZ {
7250 private:
7251         LDKCOption_PaymentContextZ self;
7252 public:
7253         COption_PaymentContextZ(const COption_PaymentContextZ&) = delete;
7254         COption_PaymentContextZ(COption_PaymentContextZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentContextZ)); }
7255         COption_PaymentContextZ(LDKCOption_PaymentContextZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentContextZ)); }
7256         operator LDKCOption_PaymentContextZ() && { LDKCOption_PaymentContextZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentContextZ)); return res; }
7257         ~COption_PaymentContextZ() { COption_PaymentContextZ_free(self); }
7258         COption_PaymentContextZ& operator=(COption_PaymentContextZ&& o) { COption_PaymentContextZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentContextZ)); return *this; }
7259         LDKCOption_PaymentContextZ* operator &() { return &self; }
7260         LDKCOption_PaymentContextZ* operator ->() { return &self; }
7261         const LDKCOption_PaymentContextZ* operator &() const { return &self; }
7262         const LDKCOption_PaymentContextZ* operator ->() const { return &self; }
7263 };
7264 class COption_MaxDustHTLCExposureZ {
7265 private:
7266         LDKCOption_MaxDustHTLCExposureZ self;
7267 public:
7268         COption_MaxDustHTLCExposureZ(const COption_MaxDustHTLCExposureZ&) = delete;
7269         COption_MaxDustHTLCExposureZ(COption_MaxDustHTLCExposureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MaxDustHTLCExposureZ)); }
7270         COption_MaxDustHTLCExposureZ(LDKCOption_MaxDustHTLCExposureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MaxDustHTLCExposureZ)); }
7271         operator LDKCOption_MaxDustHTLCExposureZ() && { LDKCOption_MaxDustHTLCExposureZ res = self; memset(&self, 0, sizeof(LDKCOption_MaxDustHTLCExposureZ)); return res; }
7272         ~COption_MaxDustHTLCExposureZ() { COption_MaxDustHTLCExposureZ_free(self); }
7273         COption_MaxDustHTLCExposureZ& operator=(COption_MaxDustHTLCExposureZ&& o) { COption_MaxDustHTLCExposureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MaxDustHTLCExposureZ)); return *this; }
7274         LDKCOption_MaxDustHTLCExposureZ* operator &() { return &self; }
7275         LDKCOption_MaxDustHTLCExposureZ* operator ->() { return &self; }
7276         const LDKCOption_MaxDustHTLCExposureZ* operator &() const { return &self; }
7277         const LDKCOption_MaxDustHTLCExposureZ* operator ->() const { return &self; }
7278 };
7279 class COption_OffersMessageZ {
7280 private:
7281         LDKCOption_OffersMessageZ self;
7282 public:
7283         COption_OffersMessageZ(const COption_OffersMessageZ&) = delete;
7284         COption_OffersMessageZ(COption_OffersMessageZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_OffersMessageZ)); }
7285         COption_OffersMessageZ(LDKCOption_OffersMessageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_OffersMessageZ)); }
7286         operator LDKCOption_OffersMessageZ() && { LDKCOption_OffersMessageZ res = self; memset(&self, 0, sizeof(LDKCOption_OffersMessageZ)); return res; }
7287         ~COption_OffersMessageZ() { COption_OffersMessageZ_free(self); }
7288         COption_OffersMessageZ& operator=(COption_OffersMessageZ&& o) { COption_OffersMessageZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_OffersMessageZ)); return *this; }
7289         LDKCOption_OffersMessageZ* operator &() { return &self; }
7290         LDKCOption_OffersMessageZ* operator ->() { return &self; }
7291         const LDKCOption_OffersMessageZ* operator &() const { return &self; }
7292         const LDKCOption_OffersMessageZ* operator ->() const { return &self; }
7293 };
7294 class CResult_CVec_u8ZPeerHandleErrorZ {
7295 private:
7296         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
7297 public:
7298         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
7299         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
7300         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
7301         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
7302         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
7303         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; }
7304         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
7305         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
7306         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
7307         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
7308 };
7309 class COption_NetworkUpdateZ {
7310 private:
7311         LDKCOption_NetworkUpdateZ self;
7312 public:
7313         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
7314         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
7315         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
7316         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
7317         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
7318         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
7319         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
7320         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
7321         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
7322         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
7323 };
7324 class COption_u64Z {
7325 private:
7326         LDKCOption_u64Z self;
7327 public:
7328         COption_u64Z(const COption_u64Z&) = delete;
7329         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
7330         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
7331         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
7332         ~COption_u64Z() { COption_u64Z_free(self); }
7333         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
7334         LDKCOption_u64Z* operator &() { return &self; }
7335         LDKCOption_u64Z* operator ->() { return &self; }
7336         const LDKCOption_u64Z* operator &() const { return &self; }
7337         const LDKCOption_u64Z* operator ->() const { return &self; }
7338 };
7339 class CResult_OnionPacketDecodeErrorZ {
7340 private:
7341         LDKCResult_OnionPacketDecodeErrorZ self;
7342 public:
7343         CResult_OnionPacketDecodeErrorZ(const CResult_OnionPacketDecodeErrorZ&) = delete;
7344         CResult_OnionPacketDecodeErrorZ(CResult_OnionPacketDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionPacketDecodeErrorZ)); }
7345         CResult_OnionPacketDecodeErrorZ(LDKCResult_OnionPacketDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionPacketDecodeErrorZ)); }
7346         operator LDKCResult_OnionPacketDecodeErrorZ() && { LDKCResult_OnionPacketDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionPacketDecodeErrorZ)); return res; }
7347         ~CResult_OnionPacketDecodeErrorZ() { CResult_OnionPacketDecodeErrorZ_free(self); }
7348         CResult_OnionPacketDecodeErrorZ& operator=(CResult_OnionPacketDecodeErrorZ&& o) { CResult_OnionPacketDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionPacketDecodeErrorZ)); return *this; }
7349         LDKCResult_OnionPacketDecodeErrorZ* operator &() { return &self; }
7350         LDKCResult_OnionPacketDecodeErrorZ* operator ->() { return &self; }
7351         const LDKCResult_OnionPacketDecodeErrorZ* operator &() const { return &self; }
7352         const LDKCResult_OnionPacketDecodeErrorZ* operator ->() const { return &self; }
7353 };
7354 class CResult_GossipTimestampFilterDecodeErrorZ {
7355 private:
7356         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
7357 public:
7358         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
7359         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
7360         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
7361         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
7362         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
7363         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
7364         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
7365         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
7366         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
7367         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
7368 };
7369 class CResult_RouteHintDecodeErrorZ {
7370 private:
7371         LDKCResult_RouteHintDecodeErrorZ self;
7372 public:
7373         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
7374         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
7375         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
7376         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
7377         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
7378         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
7379         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
7380         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
7381         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
7382         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
7383 };
7384 class COption_FilterZ {
7385 private:
7386         LDKCOption_FilterZ self;
7387 public:
7388         COption_FilterZ(const COption_FilterZ&) = delete;
7389         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
7390         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
7391         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
7392         ~COption_FilterZ() { COption_FilterZ_free(self); }
7393         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
7394         LDKCOption_FilterZ* operator &() { return &self; }
7395         LDKCOption_FilterZ* operator ->() { return &self; }
7396         const LDKCOption_FilterZ* operator &() const { return &self; }
7397         const LDKCOption_FilterZ* operator ->() const { return &self; }
7398 };
7399 class C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ {
7400 private:
7401         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ self;
7402 public:
7403         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ(const C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ&) = delete;
7404         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ)); }
7405         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)); }
7406         operator LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ() && { LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ)); return res; }
7407         ~C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ() { C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ_free(self); }
7408         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; }
7409         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ* operator &() { return &self; }
7410         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ* operator ->() { return &self; }
7411         const LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ* operator &() const { return &self; }
7412         const LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZ* operator ->() const { return &self; }
7413 };
7414 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
7415 private:
7416         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
7417 public:
7418         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
7419         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
7420         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
7421         operator LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
7422         ~COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
7423         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; }
7424         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
7425         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
7426         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
7427         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
7428 };
7429 class CResult_COption_APIErrorZDecodeErrorZ {
7430 private:
7431         LDKCResult_COption_APIErrorZDecodeErrorZ self;
7432 public:
7433         CResult_COption_APIErrorZDecodeErrorZ(const CResult_COption_APIErrorZDecodeErrorZ&) = delete;
7434         CResult_COption_APIErrorZDecodeErrorZ(CResult_COption_APIErrorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_APIErrorZDecodeErrorZ)); }
7435         CResult_COption_APIErrorZDecodeErrorZ(LDKCResult_COption_APIErrorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); }
7436         operator LDKCResult_COption_APIErrorZDecodeErrorZ() && { LDKCResult_COption_APIErrorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); return res; }
7437         ~CResult_COption_APIErrorZDecodeErrorZ() { CResult_COption_APIErrorZDecodeErrorZ_free(self); }
7438         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; }
7439         LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() { return &self; }
7440         LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() { return &self; }
7441         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() const { return &self; }
7442         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() const { return &self; }
7443 };
7444 class CVec_UpdateAddHTLCZ {
7445 private:
7446         LDKCVec_UpdateAddHTLCZ self;
7447 public:
7448         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
7449         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
7450         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
7451         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
7452         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
7453         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
7454         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
7455         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
7456         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
7457         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
7458 };
7459 class CResult_TxAbortDecodeErrorZ {
7460 private:
7461         LDKCResult_TxAbortDecodeErrorZ self;
7462 public:
7463         CResult_TxAbortDecodeErrorZ(const CResult_TxAbortDecodeErrorZ&) = delete;
7464         CResult_TxAbortDecodeErrorZ(CResult_TxAbortDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAbortDecodeErrorZ)); }
7465         CResult_TxAbortDecodeErrorZ(LDKCResult_TxAbortDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAbortDecodeErrorZ)); }
7466         operator LDKCResult_TxAbortDecodeErrorZ() && { LDKCResult_TxAbortDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAbortDecodeErrorZ)); return res; }
7467         ~CResult_TxAbortDecodeErrorZ() { CResult_TxAbortDecodeErrorZ_free(self); }
7468         CResult_TxAbortDecodeErrorZ& operator=(CResult_TxAbortDecodeErrorZ&& o) { CResult_TxAbortDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAbortDecodeErrorZ)); return *this; }
7469         LDKCResult_TxAbortDecodeErrorZ* operator &() { return &self; }
7470         LDKCResult_TxAbortDecodeErrorZ* operator ->() { return &self; }
7471         const LDKCResult_TxAbortDecodeErrorZ* operator &() const { return &self; }
7472         const LDKCResult_TxAbortDecodeErrorZ* operator ->() const { return &self; }
7473 };
7474 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
7475 private:
7476         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
7477 public:
7478         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
7479         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
7480         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
7481         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
7482         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
7483         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
7484         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
7485         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
7486         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
7487         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
7488 };
7489 class COption_u32Z {
7490 private:
7491         LDKCOption_u32Z self;
7492 public:
7493         COption_u32Z(const COption_u32Z&) = delete;
7494         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
7495         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
7496         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
7497         ~COption_u32Z() { COption_u32Z_free(self); }
7498         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
7499         LDKCOption_u32Z* operator &() { return &self; }
7500         LDKCOption_u32Z* operator ->() { return &self; }
7501         const LDKCOption_u32Z* operator &() const { return &self; }
7502         const LDKCOption_u32Z* operator ->() const { return &self; }
7503 };
7504 class CResult_RecipientOnionFieldsNoneZ {
7505 private:
7506         LDKCResult_RecipientOnionFieldsNoneZ self;
7507 public:
7508         CResult_RecipientOnionFieldsNoneZ(const CResult_RecipientOnionFieldsNoneZ&) = delete;
7509         CResult_RecipientOnionFieldsNoneZ(CResult_RecipientOnionFieldsNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecipientOnionFieldsNoneZ)); }
7510         CResult_RecipientOnionFieldsNoneZ(LDKCResult_RecipientOnionFieldsNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecipientOnionFieldsNoneZ)); }
7511         operator LDKCResult_RecipientOnionFieldsNoneZ() && { LDKCResult_RecipientOnionFieldsNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecipientOnionFieldsNoneZ)); return res; }
7512         ~CResult_RecipientOnionFieldsNoneZ() { CResult_RecipientOnionFieldsNoneZ_free(self); }
7513         CResult_RecipientOnionFieldsNoneZ& operator=(CResult_RecipientOnionFieldsNoneZ&& o) { CResult_RecipientOnionFieldsNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecipientOnionFieldsNoneZ)); return *this; }
7514         LDKCResult_RecipientOnionFieldsNoneZ* operator &() { return &self; }
7515         LDKCResult_RecipientOnionFieldsNoneZ* operator ->() { return &self; }
7516         const LDKCResult_RecipientOnionFieldsNoneZ* operator &() const { return &self; }
7517         const LDKCResult_RecipientOnionFieldsNoneZ* operator ->() const { return &self; }
7518 };
7519 class C2Tuple__u1632_u1632Z {
7520 private:
7521         LDKC2Tuple__u1632_u1632Z self;
7522 public:
7523         C2Tuple__u1632_u1632Z(const C2Tuple__u1632_u1632Z&) = delete;
7524         C2Tuple__u1632_u1632Z(C2Tuple__u1632_u1632Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple__u1632_u1632Z)); }
7525         C2Tuple__u1632_u1632Z(LDKC2Tuple__u1632_u1632Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple__u1632_u1632Z)); }
7526         operator LDKC2Tuple__u1632_u1632Z() && { LDKC2Tuple__u1632_u1632Z res = self; memset(&self, 0, sizeof(LDKC2Tuple__u1632_u1632Z)); return res; }
7527         ~C2Tuple__u1632_u1632Z() { C2Tuple__u1632_u1632Z_free(self); }
7528         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; }
7529         LDKC2Tuple__u1632_u1632Z* operator &() { return &self; }
7530         LDKC2Tuple__u1632_u1632Z* operator ->() { return &self; }
7531         const LDKC2Tuple__u1632_u1632Z* operator &() const { return &self; }
7532         const LDKC2Tuple__u1632_u1632Z* operator ->() const { return &self; }
7533 };
7534 class CResult_CVec_StrZIOErrorZ {
7535 private:
7536         LDKCResult_CVec_StrZIOErrorZ self;
7537 public:
7538         CResult_CVec_StrZIOErrorZ(const CResult_CVec_StrZIOErrorZ&) = delete;
7539         CResult_CVec_StrZIOErrorZ(CResult_CVec_StrZIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_StrZIOErrorZ)); }
7540         CResult_CVec_StrZIOErrorZ(LDKCResult_CVec_StrZIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_StrZIOErrorZ)); }
7541         operator LDKCResult_CVec_StrZIOErrorZ() && { LDKCResult_CVec_StrZIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_StrZIOErrorZ)); return res; }
7542         ~CResult_CVec_StrZIOErrorZ() { CResult_CVec_StrZIOErrorZ_free(self); }
7543         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; }
7544         LDKCResult_CVec_StrZIOErrorZ* operator &() { return &self; }
7545         LDKCResult_CVec_StrZIOErrorZ* operator ->() { return &self; }
7546         const LDKCResult_CVec_StrZIOErrorZ* operator &() const { return &self; }
7547         const LDKCResult_CVec_StrZIOErrorZ* operator ->() const { return &self; }
7548 };
7549 class COption_ECDSASignatureZ {
7550 private:
7551         LDKCOption_ECDSASignatureZ self;
7552 public:
7553         COption_ECDSASignatureZ(const COption_ECDSASignatureZ&) = delete;
7554         COption_ECDSASignatureZ(COption_ECDSASignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ECDSASignatureZ)); }
7555         COption_ECDSASignatureZ(LDKCOption_ECDSASignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ECDSASignatureZ)); }
7556         operator LDKCOption_ECDSASignatureZ() && { LDKCOption_ECDSASignatureZ res = self; memset(&self, 0, sizeof(LDKCOption_ECDSASignatureZ)); return res; }
7557         ~COption_ECDSASignatureZ() { COption_ECDSASignatureZ_free(self); }
7558         COption_ECDSASignatureZ& operator=(COption_ECDSASignatureZ&& o) { COption_ECDSASignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ECDSASignatureZ)); return *this; }
7559         LDKCOption_ECDSASignatureZ* operator &() { return &self; }
7560         LDKCOption_ECDSASignatureZ* operator ->() { return &self; }
7561         const LDKCOption_ECDSASignatureZ* operator &() const { return &self; }
7562         const LDKCOption_ECDSASignatureZ* operator ->() const { return &self; }
7563 };
7564 class CResult_TransactionNoneZ {
7565 private:
7566         LDKCResult_TransactionNoneZ self;
7567 public:
7568         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
7569         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
7570         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
7571         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
7572         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
7573         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
7574         LDKCResult_TransactionNoneZ* operator &() { return &self; }
7575         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
7576         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
7577         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
7578 };
7579 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
7580 private:
7581         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
7582 public:
7583         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
7584         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
7585         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
7586         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
7587         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
7588         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
7589         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
7590         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
7591         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
7592         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
7593 };
7594 class CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ {
7595 private:
7596         LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ self;
7597 public:
7598         CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ(const CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ&) = delete;
7599         CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ(CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ)); }
7600         CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ(LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ)); }
7601         operator LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ() && { LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ)); return res; }
7602         ~CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ() { CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ_free(self); }
7603         CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ& operator=(CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ&& o) { CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ)); return *this; }
7604         LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ* operator &() { return &self; }
7605         LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
7606         const LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
7607         const LDKCResult_InvoiceWithExplicitSigningPubkeyBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
7608 };
7609 class CResult_CommitmentSignedDecodeErrorZ {
7610 private:
7611         LDKCResult_CommitmentSignedDecodeErrorZ self;
7612 public:
7613         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
7614         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
7615         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
7616         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
7617         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
7618         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
7619         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
7620         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
7621         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
7622         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
7623 };
7624 class CResult_CommitmentTransactionDecodeErrorZ {
7625 private:
7626         LDKCResult_CommitmentTransactionDecodeErrorZ self;
7627 public:
7628         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
7629         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
7630         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
7631         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
7632         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
7633         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
7634         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
7635         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
7636         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
7637         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
7638 };
7639 class CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ {
7640 private:
7641         LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ self;
7642 public:
7643         CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ(const CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ&) = delete;
7644         CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ(CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ)); }
7645         CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ(LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ)); }
7646         operator LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ() && { LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ)); return res; }
7647         ~CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ() { CResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ_free(self); }
7648         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; }
7649         LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ* operator &() { return &self; }
7650         LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ* operator ->() { return &self; }
7651         const LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ* operator &() const { return &self; }
7652         const LDKCResult_C2Tuple_BestBlockOutputSweeperZDecodeErrorZ* operator ->() const { return &self; }
7653 };
7654 class CResult_StfuDecodeErrorZ {
7655 private:
7656         LDKCResult_StfuDecodeErrorZ self;
7657 public:
7658         CResult_StfuDecodeErrorZ(const CResult_StfuDecodeErrorZ&) = delete;
7659         CResult_StfuDecodeErrorZ(CResult_StfuDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StfuDecodeErrorZ)); }
7660         CResult_StfuDecodeErrorZ(LDKCResult_StfuDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StfuDecodeErrorZ)); }
7661         operator LDKCResult_StfuDecodeErrorZ() && { LDKCResult_StfuDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StfuDecodeErrorZ)); return res; }
7662         ~CResult_StfuDecodeErrorZ() { CResult_StfuDecodeErrorZ_free(self); }
7663         CResult_StfuDecodeErrorZ& operator=(CResult_StfuDecodeErrorZ&& o) { CResult_StfuDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StfuDecodeErrorZ)); return *this; }
7664         LDKCResult_StfuDecodeErrorZ* operator &() { return &self; }
7665         LDKCResult_StfuDecodeErrorZ* operator ->() { return &self; }
7666         const LDKCResult_StfuDecodeErrorZ* operator &() const { return &self; }
7667         const LDKCResult_StfuDecodeErrorZ* operator ->() const { return &self; }
7668 };
7669 class CResult_OpenChannelDecodeErrorZ {
7670 private:
7671         LDKCResult_OpenChannelDecodeErrorZ self;
7672 public:
7673         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
7674         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
7675         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
7676         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
7677         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
7678         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
7679         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
7680         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
7681         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
7682         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
7683 };
7684 class CResult_ErrorMessageDecodeErrorZ {
7685 private:
7686         LDKCResult_ErrorMessageDecodeErrorZ self;
7687 public:
7688         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
7689         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
7690         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
7691         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
7692         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
7693         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
7694         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
7695         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
7696         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
7697         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
7698 };
7699 class COption_APIErrorZ {
7700 private:
7701         LDKCOption_APIErrorZ self;
7702 public:
7703         COption_APIErrorZ(const COption_APIErrorZ&) = delete;
7704         COption_APIErrorZ(COption_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_APIErrorZ)); }
7705         COption_APIErrorZ(LDKCOption_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_APIErrorZ)); }
7706         operator LDKCOption_APIErrorZ() && { LDKCOption_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCOption_APIErrorZ)); return res; }
7707         ~COption_APIErrorZ() { COption_APIErrorZ_free(self); }
7708         COption_APIErrorZ& operator=(COption_APIErrorZ&& o) { COption_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_APIErrorZ)); return *this; }
7709         LDKCOption_APIErrorZ* operator &() { return &self; }
7710         LDKCOption_APIErrorZ* operator ->() { return &self; }
7711         const LDKCOption_APIErrorZ* operator &() const { return &self; }
7712         const LDKCOption_APIErrorZ* operator ->() const { return &self; }
7713 };
7714 class CVec_PeerDetailsZ {
7715 private:
7716         LDKCVec_PeerDetailsZ self;
7717 public:
7718         CVec_PeerDetailsZ(const CVec_PeerDetailsZ&) = delete;
7719         CVec_PeerDetailsZ(CVec_PeerDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PeerDetailsZ)); }
7720         CVec_PeerDetailsZ(LDKCVec_PeerDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PeerDetailsZ)); }
7721         operator LDKCVec_PeerDetailsZ() && { LDKCVec_PeerDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_PeerDetailsZ)); return res; }
7722         ~CVec_PeerDetailsZ() { CVec_PeerDetailsZ_free(self); }
7723         CVec_PeerDetailsZ& operator=(CVec_PeerDetailsZ&& o) { CVec_PeerDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PeerDetailsZ)); return *this; }
7724         LDKCVec_PeerDetailsZ* operator &() { return &self; }
7725         LDKCVec_PeerDetailsZ* operator ->() { return &self; }
7726         const LDKCVec_PeerDetailsZ* operator &() const { return &self; }
7727         const LDKCVec_PeerDetailsZ* operator ->() const { return &self; }
7728 };
7729 class CResult_u64ShortChannelIdErrorZ {
7730 private:
7731         LDKCResult_u64ShortChannelIdErrorZ self;
7732 public:
7733         CResult_u64ShortChannelIdErrorZ(const CResult_u64ShortChannelIdErrorZ&) = delete;
7734         CResult_u64ShortChannelIdErrorZ(CResult_u64ShortChannelIdErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u64ShortChannelIdErrorZ)); }
7735         CResult_u64ShortChannelIdErrorZ(LDKCResult_u64ShortChannelIdErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u64ShortChannelIdErrorZ)); }
7736         operator LDKCResult_u64ShortChannelIdErrorZ() && { LDKCResult_u64ShortChannelIdErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u64ShortChannelIdErrorZ)); return res; }
7737         ~CResult_u64ShortChannelIdErrorZ() { CResult_u64ShortChannelIdErrorZ_free(self); }
7738         CResult_u64ShortChannelIdErrorZ& operator=(CResult_u64ShortChannelIdErrorZ&& o) { CResult_u64ShortChannelIdErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u64ShortChannelIdErrorZ)); return *this; }
7739         LDKCResult_u64ShortChannelIdErrorZ* operator &() { return &self; }
7740         LDKCResult_u64ShortChannelIdErrorZ* operator ->() { return &self; }
7741         const LDKCResult_u64ShortChannelIdErrorZ* operator &() const { return &self; }
7742         const LDKCResult_u64ShortChannelIdErrorZ* operator ->() const { return &self; }
7743 };
7744 class CResult_QueryChannelRangeDecodeErrorZ {
7745 private:
7746         LDKCResult_QueryChannelRangeDecodeErrorZ self;
7747 public:
7748         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
7749         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
7750         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
7751         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
7752         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
7753         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
7754         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
7755         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
7756         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
7757         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
7758 };
7759 class CVec_InputZ {
7760 private:
7761         LDKCVec_InputZ self;
7762 public:
7763         CVec_InputZ(const CVec_InputZ&) = delete;
7764         CVec_InputZ(CVec_InputZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_InputZ)); }
7765         CVec_InputZ(LDKCVec_InputZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_InputZ)); }
7766         operator LDKCVec_InputZ() && { LDKCVec_InputZ res = self; memset(&self, 0, sizeof(LDKCVec_InputZ)); return res; }
7767         ~CVec_InputZ() { CVec_InputZ_free(self); }
7768         CVec_InputZ& operator=(CVec_InputZ&& o) { CVec_InputZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_InputZ)); return *this; }
7769         LDKCVec_InputZ* operator &() { return &self; }
7770         LDKCVec_InputZ* operator ->() { return &self; }
7771         const LDKCVec_InputZ* operator &() const { return &self; }
7772         const LDKCVec_InputZ* operator ->() const { return &self; }
7773 };
7774 class CResult_ChannelFeaturesDecodeErrorZ {
7775 private:
7776         LDKCResult_ChannelFeaturesDecodeErrorZ self;
7777 public:
7778         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
7779         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
7780         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
7781         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
7782         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
7783         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
7784         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
7785         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
7786         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
7787         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
7788 };
7789 class CResult_ChannelReadyDecodeErrorZ {
7790 private:
7791         LDKCResult_ChannelReadyDecodeErrorZ self;
7792 public:
7793         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
7794         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
7795         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
7796         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
7797         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
7798         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
7799         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
7800         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
7801         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
7802         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
7803 };
7804 class CVec_TransactionZ {
7805 private:
7806         LDKCVec_TransactionZ self;
7807 public:
7808         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
7809         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
7810         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
7811         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
7812         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
7813         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
7814         LDKCVec_TransactionZ* operator &() { return &self; }
7815         LDKCVec_TransactionZ* operator ->() { return &self; }
7816         const LDKCVec_TransactionZ* operator &() const { return &self; }
7817         const LDKCVec_TransactionZ* operator ->() const { return &self; }
7818 };
7819 class CResult_UpdateFeeDecodeErrorZ {
7820 private:
7821         LDKCResult_UpdateFeeDecodeErrorZ self;
7822 public:
7823         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
7824         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
7825         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
7826         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
7827         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
7828         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
7829         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
7830         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
7831         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
7832         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
7833 };
7834 class CResult_NoneBolt11SemanticErrorZ {
7835 private:
7836         LDKCResult_NoneBolt11SemanticErrorZ self;
7837 public:
7838         CResult_NoneBolt11SemanticErrorZ(const CResult_NoneBolt11SemanticErrorZ&) = delete;
7839         CResult_NoneBolt11SemanticErrorZ(CResult_NoneBolt11SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneBolt11SemanticErrorZ)); }
7840         CResult_NoneBolt11SemanticErrorZ(LDKCResult_NoneBolt11SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneBolt11SemanticErrorZ)); }
7841         operator LDKCResult_NoneBolt11SemanticErrorZ() && { LDKCResult_NoneBolt11SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneBolt11SemanticErrorZ)); return res; }
7842         ~CResult_NoneBolt11SemanticErrorZ() { CResult_NoneBolt11SemanticErrorZ_free(self); }
7843         CResult_NoneBolt11SemanticErrorZ& operator=(CResult_NoneBolt11SemanticErrorZ&& o) { CResult_NoneBolt11SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneBolt11SemanticErrorZ)); return *this; }
7844         LDKCResult_NoneBolt11SemanticErrorZ* operator &() { return &self; }
7845         LDKCResult_NoneBolt11SemanticErrorZ* operator ->() { return &self; }
7846         const LDKCResult_NoneBolt11SemanticErrorZ* operator &() const { return &self; }
7847         const LDKCResult_NoneBolt11SemanticErrorZ* operator ->() const { return &self; }
7848 };
7849 class CResult_RevocationBasepointDecodeErrorZ {
7850 private:
7851         LDKCResult_RevocationBasepointDecodeErrorZ self;
7852 public:
7853         CResult_RevocationBasepointDecodeErrorZ(const CResult_RevocationBasepointDecodeErrorZ&) = delete;
7854         CResult_RevocationBasepointDecodeErrorZ(CResult_RevocationBasepointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevocationBasepointDecodeErrorZ)); }
7855         CResult_RevocationBasepointDecodeErrorZ(LDKCResult_RevocationBasepointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevocationBasepointDecodeErrorZ)); }
7856         operator LDKCResult_RevocationBasepointDecodeErrorZ() && { LDKCResult_RevocationBasepointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevocationBasepointDecodeErrorZ)); return res; }
7857         ~CResult_RevocationBasepointDecodeErrorZ() { CResult_RevocationBasepointDecodeErrorZ_free(self); }
7858         CResult_RevocationBasepointDecodeErrorZ& operator=(CResult_RevocationBasepointDecodeErrorZ&& o) { CResult_RevocationBasepointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevocationBasepointDecodeErrorZ)); return *this; }
7859         LDKCResult_RevocationBasepointDecodeErrorZ* operator &() { return &self; }
7860         LDKCResult_RevocationBasepointDecodeErrorZ* operator ->() { return &self; }
7861         const LDKCResult_RevocationBasepointDecodeErrorZ* operator &() const { return &self; }
7862         const LDKCResult_RevocationBasepointDecodeErrorZ* operator ->() const { return &self; }
7863 };
7864 class COption_OnionMessageContentsZ {
7865 private:
7866         LDKCOption_OnionMessageContentsZ self;
7867 public:
7868         COption_OnionMessageContentsZ(const COption_OnionMessageContentsZ&) = delete;
7869         COption_OnionMessageContentsZ(COption_OnionMessageContentsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_OnionMessageContentsZ)); }
7870         COption_OnionMessageContentsZ(LDKCOption_OnionMessageContentsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_OnionMessageContentsZ)); }
7871         operator LDKCOption_OnionMessageContentsZ() && { LDKCOption_OnionMessageContentsZ res = self; memset(&self, 0, sizeof(LDKCOption_OnionMessageContentsZ)); return res; }
7872         ~COption_OnionMessageContentsZ() { COption_OnionMessageContentsZ_free(self); }
7873         COption_OnionMessageContentsZ& operator=(COption_OnionMessageContentsZ&& o) { COption_OnionMessageContentsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_OnionMessageContentsZ)); return *this; }
7874         LDKCOption_OnionMessageContentsZ* operator &() { return &self; }
7875         LDKCOption_OnionMessageContentsZ* operator ->() { return &self; }
7876         const LDKCOption_OnionMessageContentsZ* operator &() const { return &self; }
7877         const LDKCOption_OnionMessageContentsZ* operator ->() const { return &self; }
7878 };
7879 class CResult_NoneRetryableSendFailureZ {
7880 private:
7881         LDKCResult_NoneRetryableSendFailureZ self;
7882 public:
7883         CResult_NoneRetryableSendFailureZ(const CResult_NoneRetryableSendFailureZ&) = delete;
7884         CResult_NoneRetryableSendFailureZ(CResult_NoneRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); }
7885         CResult_NoneRetryableSendFailureZ(LDKCResult_NoneRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); }
7886         operator LDKCResult_NoneRetryableSendFailureZ() && { LDKCResult_NoneRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); return res; }
7887         ~CResult_NoneRetryableSendFailureZ() { CResult_NoneRetryableSendFailureZ_free(self); }
7888         CResult_NoneRetryableSendFailureZ& operator=(CResult_NoneRetryableSendFailureZ&& o) { CResult_NoneRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); return *this; }
7889         LDKCResult_NoneRetryableSendFailureZ* operator &() { return &self; }
7890         LDKCResult_NoneRetryableSendFailureZ* operator ->() { return &self; }
7891         const LDKCResult_NoneRetryableSendFailureZ* operator &() const { return &self; }
7892         const LDKCResult_NoneRetryableSendFailureZ* operator ->() const { return &self; }
7893 };
7894 class CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ {
7895 private:
7896         LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ self;
7897 public:
7898         CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ(const CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ&) = delete;
7899         CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ(CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ)); }
7900         CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ(LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ)); }
7901         operator LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ() && { LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ)); return res; }
7902         ~CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ() { CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ_free(self); }
7903         CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ& operator=(CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ&& o) { CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ)); return *this; }
7904         LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator &() { return &self; }
7905         LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
7906         const LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
7907         const LDKCResult_RefundMaybeWithDerivedMetadataBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
7908 };
7909 class CResult_NodeIdDecodeErrorZ {
7910 private:
7911         LDKCResult_NodeIdDecodeErrorZ self;
7912 public:
7913         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
7914         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
7915         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
7916         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
7917         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
7918         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
7919         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
7920         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
7921         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
7922         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
7923 };
7924 class CResult_boolLightningErrorZ {
7925 private:
7926         LDKCResult_boolLightningErrorZ self;
7927 public:
7928         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
7929         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
7930         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
7931         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
7932         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
7933         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
7934         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
7935         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
7936         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
7937         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
7938 };
7939 class CResult_ChannelShutdownStateDecodeErrorZ {
7940 private:
7941         LDKCResult_ChannelShutdownStateDecodeErrorZ self;
7942 public:
7943         CResult_ChannelShutdownStateDecodeErrorZ(const CResult_ChannelShutdownStateDecodeErrorZ&) = delete;
7944         CResult_ChannelShutdownStateDecodeErrorZ(CResult_ChannelShutdownStateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelShutdownStateDecodeErrorZ)); }
7945         CResult_ChannelShutdownStateDecodeErrorZ(LDKCResult_ChannelShutdownStateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelShutdownStateDecodeErrorZ)); }
7946         operator LDKCResult_ChannelShutdownStateDecodeErrorZ() && { LDKCResult_ChannelShutdownStateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelShutdownStateDecodeErrorZ)); return res; }
7947         ~CResult_ChannelShutdownStateDecodeErrorZ() { CResult_ChannelShutdownStateDecodeErrorZ_free(self); }
7948         CResult_ChannelShutdownStateDecodeErrorZ& operator=(CResult_ChannelShutdownStateDecodeErrorZ&& o) { CResult_ChannelShutdownStateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelShutdownStateDecodeErrorZ)); return *this; }
7949         LDKCResult_ChannelShutdownStateDecodeErrorZ* operator &() { return &self; }
7950         LDKCResult_ChannelShutdownStateDecodeErrorZ* operator ->() { return &self; }
7951         const LDKCResult_ChannelShutdownStateDecodeErrorZ* operator &() const { return &self; }
7952         const LDKCResult_ChannelShutdownStateDecodeErrorZ* operator ->() const { return &self; }
7953 };
7954 class CResult_NodeAnnouncementInfoDecodeErrorZ {
7955 private:
7956         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
7957 public:
7958         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
7959         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
7960         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
7961         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
7962         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
7963         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
7964         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
7965         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
7966         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
7967         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
7968 };
7969 class CResult_InvoiceRequestBolt12SemanticErrorZ {
7970 private:
7971         LDKCResult_InvoiceRequestBolt12SemanticErrorZ self;
7972 public:
7973         CResult_InvoiceRequestBolt12SemanticErrorZ(const CResult_InvoiceRequestBolt12SemanticErrorZ&) = delete;
7974         CResult_InvoiceRequestBolt12SemanticErrorZ(CResult_InvoiceRequestBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestBolt12SemanticErrorZ)); }
7975         CResult_InvoiceRequestBolt12SemanticErrorZ(LDKCResult_InvoiceRequestBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestBolt12SemanticErrorZ)); }
7976         operator LDKCResult_InvoiceRequestBolt12SemanticErrorZ() && { LDKCResult_InvoiceRequestBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestBolt12SemanticErrorZ)); return res; }
7977         ~CResult_InvoiceRequestBolt12SemanticErrorZ() { CResult_InvoiceRequestBolt12SemanticErrorZ_free(self); }
7978         CResult_InvoiceRequestBolt12SemanticErrorZ& operator=(CResult_InvoiceRequestBolt12SemanticErrorZ&& o) { CResult_InvoiceRequestBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestBolt12SemanticErrorZ)); return *this; }
7979         LDKCResult_InvoiceRequestBolt12SemanticErrorZ* operator &() { return &self; }
7980         LDKCResult_InvoiceRequestBolt12SemanticErrorZ* operator ->() { return &self; }
7981         const LDKCResult_InvoiceRequestBolt12SemanticErrorZ* operator &() const { return &self; }
7982         const LDKCResult_InvoiceRequestBolt12SemanticErrorZ* operator ->() const { return &self; }
7983 };
7984 class CResult_COption_NetworkUpdateZDecodeErrorZ {
7985 private:
7986         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
7987 public:
7988         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
7989         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
7990         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
7991         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
7992         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
7993         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; }
7994         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
7995         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
7996         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
7997         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
7998 };
7999 class CVec_UpdateFailMalformedHTLCZ {
8000 private:
8001         LDKCVec_UpdateFailMalformedHTLCZ self;
8002 public:
8003         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
8004         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
8005         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
8006         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
8007         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
8008         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
8009         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
8010         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
8011         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
8012         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
8013 };
8014 class CResult_ShutdownScriptNoneZ {
8015 private:
8016         LDKCResult_ShutdownScriptNoneZ self;
8017 public:
8018         CResult_ShutdownScriptNoneZ(const CResult_ShutdownScriptNoneZ&) = delete;
8019         CResult_ShutdownScriptNoneZ(CResult_ShutdownScriptNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptNoneZ)); }
8020         CResult_ShutdownScriptNoneZ(LDKCResult_ShutdownScriptNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptNoneZ)); }
8021         operator LDKCResult_ShutdownScriptNoneZ() && { LDKCResult_ShutdownScriptNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptNoneZ)); return res; }
8022         ~CResult_ShutdownScriptNoneZ() { CResult_ShutdownScriptNoneZ_free(self); }
8023         CResult_ShutdownScriptNoneZ& operator=(CResult_ShutdownScriptNoneZ&& o) { CResult_ShutdownScriptNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptNoneZ)); return *this; }
8024         LDKCResult_ShutdownScriptNoneZ* operator &() { return &self; }
8025         LDKCResult_ShutdownScriptNoneZ* operator ->() { return &self; }
8026         const LDKCResult_ShutdownScriptNoneZ* operator &() const { return &self; }
8027         const LDKCResult_ShutdownScriptNoneZ* operator ->() const { return &self; }
8028 };
8029 class CResult_PendingHTLCInfoInboundHTLCErrZ {
8030 private:
8031         LDKCResult_PendingHTLCInfoInboundHTLCErrZ self;
8032 public:
8033         CResult_PendingHTLCInfoInboundHTLCErrZ(const CResult_PendingHTLCInfoInboundHTLCErrZ&) = delete;
8034         CResult_PendingHTLCInfoInboundHTLCErrZ(CResult_PendingHTLCInfoInboundHTLCErrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PendingHTLCInfoInboundHTLCErrZ)); }
8035         CResult_PendingHTLCInfoInboundHTLCErrZ(LDKCResult_PendingHTLCInfoInboundHTLCErrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PendingHTLCInfoInboundHTLCErrZ)); }
8036         operator LDKCResult_PendingHTLCInfoInboundHTLCErrZ() && { LDKCResult_PendingHTLCInfoInboundHTLCErrZ res = self; memset(&self, 0, sizeof(LDKCResult_PendingHTLCInfoInboundHTLCErrZ)); return res; }
8037         ~CResult_PendingHTLCInfoInboundHTLCErrZ() { CResult_PendingHTLCInfoInboundHTLCErrZ_free(self); }
8038         CResult_PendingHTLCInfoInboundHTLCErrZ& operator=(CResult_PendingHTLCInfoInboundHTLCErrZ&& o) { CResult_PendingHTLCInfoInboundHTLCErrZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PendingHTLCInfoInboundHTLCErrZ)); return *this; }
8039         LDKCResult_PendingHTLCInfoInboundHTLCErrZ* operator &() { return &self; }
8040         LDKCResult_PendingHTLCInfoInboundHTLCErrZ* operator ->() { return &self; }
8041         const LDKCResult_PendingHTLCInfoInboundHTLCErrZ* operator &() const { return &self; }
8042         const LDKCResult_PendingHTLCInfoInboundHTLCErrZ* operator ->() const { return &self; }
8043 };
8044 class CResult_PendingHTLCInfoDecodeErrorZ {
8045 private:
8046         LDKCResult_PendingHTLCInfoDecodeErrorZ self;
8047 public:
8048         CResult_PendingHTLCInfoDecodeErrorZ(const CResult_PendingHTLCInfoDecodeErrorZ&) = delete;
8049         CResult_PendingHTLCInfoDecodeErrorZ(CResult_PendingHTLCInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PendingHTLCInfoDecodeErrorZ)); }
8050         CResult_PendingHTLCInfoDecodeErrorZ(LDKCResult_PendingHTLCInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PendingHTLCInfoDecodeErrorZ)); }
8051         operator LDKCResult_PendingHTLCInfoDecodeErrorZ() && { LDKCResult_PendingHTLCInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PendingHTLCInfoDecodeErrorZ)); return res; }
8052         ~CResult_PendingHTLCInfoDecodeErrorZ() { CResult_PendingHTLCInfoDecodeErrorZ_free(self); }
8053         CResult_PendingHTLCInfoDecodeErrorZ& operator=(CResult_PendingHTLCInfoDecodeErrorZ&& o) { CResult_PendingHTLCInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PendingHTLCInfoDecodeErrorZ)); return *this; }
8054         LDKCResult_PendingHTLCInfoDecodeErrorZ* operator &() { return &self; }
8055         LDKCResult_PendingHTLCInfoDecodeErrorZ* operator ->() { return &self; }
8056         const LDKCResult_PendingHTLCInfoDecodeErrorZ* operator &() const { return &self; }
8057         const LDKCResult_PendingHTLCInfoDecodeErrorZ* operator ->() const { return &self; }
8058 };
8059 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
8060 private:
8061         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
8062 public:
8063         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
8064         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
8065         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
8066         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
8067         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
8068         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
8069         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
8070         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
8071         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
8072         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
8073 };
8074 class CResult_ShutdownScriptInvalidShutdownScriptZ {
8075 private:
8076         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
8077 public:
8078         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
8079         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
8080         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
8081         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
8082         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
8083         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
8084         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
8085         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
8086         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
8087         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
8088 };
8089 class COption_HTLCDestinationZ {
8090 private:
8091         LDKCOption_HTLCDestinationZ self;
8092 public:
8093         COption_HTLCDestinationZ(const COption_HTLCDestinationZ&) = delete;
8094         COption_HTLCDestinationZ(COption_HTLCDestinationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCDestinationZ)); }
8095         COption_HTLCDestinationZ(LDKCOption_HTLCDestinationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCDestinationZ)); }
8096         operator LDKCOption_HTLCDestinationZ() && { LDKCOption_HTLCDestinationZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCDestinationZ)); return res; }
8097         ~COption_HTLCDestinationZ() { COption_HTLCDestinationZ_free(self); }
8098         COption_HTLCDestinationZ& operator=(COption_HTLCDestinationZ&& o) { COption_HTLCDestinationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCDestinationZ)); return *this; }
8099         LDKCOption_HTLCDestinationZ* operator &() { return &self; }
8100         LDKCOption_HTLCDestinationZ* operator ->() { return &self; }
8101         const LDKCOption_HTLCDestinationZ* operator &() const { return &self; }
8102         const LDKCOption_HTLCDestinationZ* operator ->() const { return &self; }
8103 };
8104 class CVec_RouteHopZ {
8105 private:
8106         LDKCVec_RouteHopZ self;
8107 public:
8108         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
8109         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
8110         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
8111         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
8112         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
8113         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
8114         LDKCVec_RouteHopZ* operator &() { return &self; }
8115         LDKCVec_RouteHopZ* operator ->() { return &self; }
8116         const LDKCVec_RouteHopZ* operator &() const { return &self; }
8117         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
8118 };
8119 class C2Tuple_PublicKeyCVec_SocketAddressZZ {
8120 private:
8121         LDKC2Tuple_PublicKeyCVec_SocketAddressZZ self;
8122 public:
8123         C2Tuple_PublicKeyCVec_SocketAddressZZ(const C2Tuple_PublicKeyCVec_SocketAddressZZ&) = delete;
8124         C2Tuple_PublicKeyCVec_SocketAddressZZ(C2Tuple_PublicKeyCVec_SocketAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyCVec_SocketAddressZZ)); }
8125         C2Tuple_PublicKeyCVec_SocketAddressZZ(LDKC2Tuple_PublicKeyCVec_SocketAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyCVec_SocketAddressZZ)); }
8126         operator LDKC2Tuple_PublicKeyCVec_SocketAddressZZ() && { LDKC2Tuple_PublicKeyCVec_SocketAddressZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyCVec_SocketAddressZZ)); return res; }
8127         ~C2Tuple_PublicKeyCVec_SocketAddressZZ() { C2Tuple_PublicKeyCVec_SocketAddressZZ_free(self); }
8128         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; }
8129         LDKC2Tuple_PublicKeyCVec_SocketAddressZZ* operator &() { return &self; }
8130         LDKC2Tuple_PublicKeyCVec_SocketAddressZZ* operator ->() { return &self; }
8131         const LDKC2Tuple_PublicKeyCVec_SocketAddressZZ* operator &() const { return &self; }
8132         const LDKC2Tuple_PublicKeyCVec_SocketAddressZZ* operator ->() const { return &self; }
8133 };
8134 class CResult_CVec_UtxoZNoneZ {
8135 private:
8136         LDKCResult_CVec_UtxoZNoneZ self;
8137 public:
8138         CResult_CVec_UtxoZNoneZ(const CResult_CVec_UtxoZNoneZ&) = delete;
8139         CResult_CVec_UtxoZNoneZ(CResult_CVec_UtxoZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_UtxoZNoneZ)); }
8140         CResult_CVec_UtxoZNoneZ(LDKCResult_CVec_UtxoZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_UtxoZNoneZ)); }
8141         operator LDKCResult_CVec_UtxoZNoneZ() && { LDKCResult_CVec_UtxoZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_UtxoZNoneZ)); return res; }
8142         ~CResult_CVec_UtxoZNoneZ() { CResult_CVec_UtxoZNoneZ_free(self); }
8143         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; }
8144         LDKCResult_CVec_UtxoZNoneZ* operator &() { return &self; }
8145         LDKCResult_CVec_UtxoZNoneZ* operator ->() { return &self; }
8146         const LDKCResult_CVec_UtxoZNoneZ* operator &() const { return &self; }
8147         const LDKCResult_CVec_UtxoZNoneZ* operator ->() const { return &self; }
8148 };
8149 class CResult_CVec_u8ZIOErrorZ {
8150 private:
8151         LDKCResult_CVec_u8ZIOErrorZ self;
8152 public:
8153         CResult_CVec_u8ZIOErrorZ(const CResult_CVec_u8ZIOErrorZ&) = delete;
8154         CResult_CVec_u8ZIOErrorZ(CResult_CVec_u8ZIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZIOErrorZ)); }
8155         CResult_CVec_u8ZIOErrorZ(LDKCResult_CVec_u8ZIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZIOErrorZ)); }
8156         operator LDKCResult_CVec_u8ZIOErrorZ() && { LDKCResult_CVec_u8ZIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZIOErrorZ)); return res; }
8157         ~CResult_CVec_u8ZIOErrorZ() { CResult_CVec_u8ZIOErrorZ_free(self); }
8158         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; }
8159         LDKCResult_CVec_u8ZIOErrorZ* operator &() { return &self; }
8160         LDKCResult_CVec_u8ZIOErrorZ* operator ->() { return &self; }
8161         const LDKCResult_CVec_u8ZIOErrorZ* operator &() const { return &self; }
8162         const LDKCResult_CVec_u8ZIOErrorZ* operator ->() const { return &self; }
8163 };
8164 class CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ {
8165 private:
8166         LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ self;
8167 public:
8168         CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ(const CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ&) = delete;
8169         CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ(CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ)); }
8170         CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ(LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ)); }
8171         operator LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ() && { LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ)); return res; }
8172         ~CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ() { CResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ_free(self); }
8173         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; }
8174         LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ* operator &() { return &self; }
8175         LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ* operator ->() { return &self; }
8176         const LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ* operator &() const { return &self; }
8177         const LDKCResult_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ* operator ->() const { return &self; }
8178 };
8179 class CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ {
8180 private:
8181         LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ self;
8182 public:
8183         CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ(const CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ&) = delete;
8184         CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ(CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ)); }
8185         CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ(LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ)); }
8186         operator LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ() && { LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ)); return res; }
8187         ~CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ() { CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ_free(self); }
8188         CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ& operator=(CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ&& o) { CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ)); return *this; }
8189         LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ* operator &() { return &self; }
8190         LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ* operator ->() { return &self; }
8191         const LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ* operator &() const { return &self; }
8192         const LDKCResult_UnsignedBolt12InvoiceBolt12SemanticErrorZ* operator ->() const { return &self; }
8193 };
8194 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ {
8195 private:
8196         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ self;
8197 public:
8198         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(const CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&) = delete;
8199         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
8200         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
8201         operator LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() && { LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); return res; }
8202         ~CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() { CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ_free(self); }
8203         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; }
8204         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() { return &self; }
8205         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() { return &self; }
8206         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() const { return &self; }
8207         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() const { return &self; }
8208 };
8209 class C3Tuple_OffersMessageDestinationBlindedPathZ {
8210 private:
8211         LDKC3Tuple_OffersMessageDestinationBlindedPathZ self;
8212 public:
8213         C3Tuple_OffersMessageDestinationBlindedPathZ(const C3Tuple_OffersMessageDestinationBlindedPathZ&) = delete;
8214         C3Tuple_OffersMessageDestinationBlindedPathZ(C3Tuple_OffersMessageDestinationBlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OffersMessageDestinationBlindedPathZ)); }
8215         C3Tuple_OffersMessageDestinationBlindedPathZ(LDKC3Tuple_OffersMessageDestinationBlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OffersMessageDestinationBlindedPathZ)); }
8216         operator LDKC3Tuple_OffersMessageDestinationBlindedPathZ() && { LDKC3Tuple_OffersMessageDestinationBlindedPathZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OffersMessageDestinationBlindedPathZ)); return res; }
8217         ~C3Tuple_OffersMessageDestinationBlindedPathZ() { C3Tuple_OffersMessageDestinationBlindedPathZ_free(self); }
8218         C3Tuple_OffersMessageDestinationBlindedPathZ& operator=(C3Tuple_OffersMessageDestinationBlindedPathZ&& o) { C3Tuple_OffersMessageDestinationBlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_OffersMessageDestinationBlindedPathZ)); return *this; }
8219         LDKC3Tuple_OffersMessageDestinationBlindedPathZ* operator &() { return &self; }
8220         LDKC3Tuple_OffersMessageDestinationBlindedPathZ* operator ->() { return &self; }
8221         const LDKC3Tuple_OffersMessageDestinationBlindedPathZ* operator &() const { return &self; }
8222         const LDKC3Tuple_OffersMessageDestinationBlindedPathZ* operator ->() const { return &self; }
8223 };
8224 class CVec_ThirtyTwoBytesZ {
8225 private:
8226         LDKCVec_ThirtyTwoBytesZ self;
8227 public:
8228         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
8229         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
8230         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
8231         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
8232         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
8233         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
8234         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
8235         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
8236         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
8237         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
8238 };
8239 class CResult_ChannelMonitorUpdateStatusNoneZ {
8240 private:
8241         LDKCResult_ChannelMonitorUpdateStatusNoneZ self;
8242 public:
8243         CResult_ChannelMonitorUpdateStatusNoneZ(const CResult_ChannelMonitorUpdateStatusNoneZ&) = delete;
8244         CResult_ChannelMonitorUpdateStatusNoneZ(CResult_ChannelMonitorUpdateStatusNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateStatusNoneZ)); }
8245         CResult_ChannelMonitorUpdateStatusNoneZ(LDKCResult_ChannelMonitorUpdateStatusNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateStatusNoneZ)); }
8246         operator LDKCResult_ChannelMonitorUpdateStatusNoneZ() && { LDKCResult_ChannelMonitorUpdateStatusNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateStatusNoneZ)); return res; }
8247         ~CResult_ChannelMonitorUpdateStatusNoneZ() { CResult_ChannelMonitorUpdateStatusNoneZ_free(self); }
8248         CResult_ChannelMonitorUpdateStatusNoneZ& operator=(CResult_ChannelMonitorUpdateStatusNoneZ&& o) { CResult_ChannelMonitorUpdateStatusNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateStatusNoneZ)); return *this; }
8249         LDKCResult_ChannelMonitorUpdateStatusNoneZ* operator &() { return &self; }
8250         LDKCResult_ChannelMonitorUpdateStatusNoneZ* operator ->() { return &self; }
8251         const LDKCResult_ChannelMonitorUpdateStatusNoneZ* operator &() const { return &self; }
8252         const LDKCResult_ChannelMonitorUpdateStatusNoneZ* operator ->() const { return &self; }
8253 };
8254 class CResult_ClosingSignedDecodeErrorZ {
8255 private:
8256         LDKCResult_ClosingSignedDecodeErrorZ self;
8257 public:
8258         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
8259         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
8260         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
8261         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
8262         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
8263         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
8264         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
8265         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
8266         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
8267         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
8268 };
8269 class CVec_CResult_NoneAPIErrorZZ {
8270 private:
8271         LDKCVec_CResult_NoneAPIErrorZZ self;
8272 public:
8273         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
8274         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
8275         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
8276         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
8277         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
8278         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; }
8279         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
8280         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
8281         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
8282         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
8283 };
8284 class CResult_SchnorrSignatureNoneZ {
8285 private:
8286         LDKCResult_SchnorrSignatureNoneZ self;
8287 public:
8288         CResult_SchnorrSignatureNoneZ(const CResult_SchnorrSignatureNoneZ&) = delete;
8289         CResult_SchnorrSignatureNoneZ(CResult_SchnorrSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SchnorrSignatureNoneZ)); }
8290         CResult_SchnorrSignatureNoneZ(LDKCResult_SchnorrSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SchnorrSignatureNoneZ)); }
8291         operator LDKCResult_SchnorrSignatureNoneZ() && { LDKCResult_SchnorrSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SchnorrSignatureNoneZ)); return res; }
8292         ~CResult_SchnorrSignatureNoneZ() { CResult_SchnorrSignatureNoneZ_free(self); }
8293         CResult_SchnorrSignatureNoneZ& operator=(CResult_SchnorrSignatureNoneZ&& o) { CResult_SchnorrSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SchnorrSignatureNoneZ)); return *this; }
8294         LDKCResult_SchnorrSignatureNoneZ* operator &() { return &self; }
8295         LDKCResult_SchnorrSignatureNoneZ* operator ->() { return &self; }
8296         const LDKCResult_SchnorrSignatureNoneZ* operator &() const { return &self; }
8297         const LDKCResult_SchnorrSignatureNoneZ* operator ->() const { return &self; }
8298 };
8299 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
8300 private:
8301         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
8302 public:
8303         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
8304         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
8305         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
8306         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
8307         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
8308         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
8309         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
8310         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
8311         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
8312         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
8313 };
8314 class CResult_HTLCDescriptorDecodeErrorZ {
8315 private:
8316         LDKCResult_HTLCDescriptorDecodeErrorZ self;
8317 public:
8318         CResult_HTLCDescriptorDecodeErrorZ(const CResult_HTLCDescriptorDecodeErrorZ&) = delete;
8319         CResult_HTLCDescriptorDecodeErrorZ(CResult_HTLCDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCDescriptorDecodeErrorZ)); }
8320         CResult_HTLCDescriptorDecodeErrorZ(LDKCResult_HTLCDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCDescriptorDecodeErrorZ)); }
8321         operator LDKCResult_HTLCDescriptorDecodeErrorZ() && { LDKCResult_HTLCDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCDescriptorDecodeErrorZ)); return res; }
8322         ~CResult_HTLCDescriptorDecodeErrorZ() { CResult_HTLCDescriptorDecodeErrorZ_free(self); }
8323         CResult_HTLCDescriptorDecodeErrorZ& operator=(CResult_HTLCDescriptorDecodeErrorZ&& o) { CResult_HTLCDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCDescriptorDecodeErrorZ)); return *this; }
8324         LDKCResult_HTLCDescriptorDecodeErrorZ* operator &() { return &self; }
8325         LDKCResult_HTLCDescriptorDecodeErrorZ* operator ->() { return &self; }
8326         const LDKCResult_HTLCDescriptorDecodeErrorZ* operator &() const { return &self; }
8327         const LDKCResult_HTLCDescriptorDecodeErrorZ* operator ->() const { return &self; }
8328 };
8329 class CVec_RecentPaymentDetailsZ {
8330 private:
8331         LDKCVec_RecentPaymentDetailsZ self;
8332 public:
8333         CVec_RecentPaymentDetailsZ(const CVec_RecentPaymentDetailsZ&) = delete;
8334         CVec_RecentPaymentDetailsZ(CVec_RecentPaymentDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); }
8335         CVec_RecentPaymentDetailsZ(LDKCVec_RecentPaymentDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); }
8336         operator LDKCVec_RecentPaymentDetailsZ() && { LDKCVec_RecentPaymentDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); return res; }
8337         ~CVec_RecentPaymentDetailsZ() { CVec_RecentPaymentDetailsZ_free(self); }
8338         CVec_RecentPaymentDetailsZ& operator=(CVec_RecentPaymentDetailsZ&& o) { CVec_RecentPaymentDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); return *this; }
8339         LDKCVec_RecentPaymentDetailsZ* operator &() { return &self; }
8340         LDKCVec_RecentPaymentDetailsZ* operator ->() { return &self; }
8341         const LDKCVec_RecentPaymentDetailsZ* operator &() const { return &self; }
8342         const LDKCVec_RecentPaymentDetailsZ* operator ->() const { return &self; }
8343 };
8344 class CVec_RouteHintHopZ {
8345 private:
8346         LDKCVec_RouteHintHopZ self;
8347 public:
8348         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
8349         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
8350         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
8351         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
8352         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
8353         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
8354         LDKCVec_RouteHintHopZ* operator &() { return &self; }
8355         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
8356         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
8357         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
8358 };
8359 class CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ {
8360 private:
8361         LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ self;
8362 public:
8363         CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ(const CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ&) = delete;
8364         CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ(CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ)); }
8365         CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ(LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ)); }
8366         operator LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ() && { LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ)); return res; }
8367         ~CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ() { CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ_free(self); }
8368         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; }
8369         LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ* operator &() { return &self; }
8370         LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ* operator ->() { return &self; }
8371         const LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ* operator &() const { return &self; }
8372         const LDKCVec_C3Tuple_OffersMessageDestinationBlindedPathZZ* operator ->() const { return &self; }
8373 };
8374 class CResult_UntrustedStringDecodeErrorZ {
8375 private:
8376         LDKCResult_UntrustedStringDecodeErrorZ self;
8377 public:
8378         CResult_UntrustedStringDecodeErrorZ(const CResult_UntrustedStringDecodeErrorZ&) = delete;
8379         CResult_UntrustedStringDecodeErrorZ(CResult_UntrustedStringDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UntrustedStringDecodeErrorZ)); }
8380         CResult_UntrustedStringDecodeErrorZ(LDKCResult_UntrustedStringDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UntrustedStringDecodeErrorZ)); }
8381         operator LDKCResult_UntrustedStringDecodeErrorZ() && { LDKCResult_UntrustedStringDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UntrustedStringDecodeErrorZ)); return res; }
8382         ~CResult_UntrustedStringDecodeErrorZ() { CResult_UntrustedStringDecodeErrorZ_free(self); }
8383         CResult_UntrustedStringDecodeErrorZ& operator=(CResult_UntrustedStringDecodeErrorZ&& o) { CResult_UntrustedStringDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UntrustedStringDecodeErrorZ)); return *this; }
8384         LDKCResult_UntrustedStringDecodeErrorZ* operator &() { return &self; }
8385         LDKCResult_UntrustedStringDecodeErrorZ* operator ->() { return &self; }
8386         const LDKCResult_UntrustedStringDecodeErrorZ* operator &() const { return &self; }
8387         const LDKCResult_UntrustedStringDecodeErrorZ* operator ->() const { return &self; }
8388 };
8389 class CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ {
8390 private:
8391         LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ self;
8392 public:
8393         CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ(const CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ&) = delete;
8394         CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ(CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ)); }
8395         CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ(LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ)); }
8396         operator LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ() && { LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ)); return res; }
8397         ~CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ() { CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ_free(self); }
8398         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; }
8399         LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ* operator &() { return &self; }
8400         LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ* operator ->() { return &self; }
8401         const LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ* operator &() const { return &self; }
8402         const LDKCVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ* operator ->() const { return &self; }
8403 };
8404 class CVec_U5Z {
8405 private:
8406         LDKCVec_U5Z self;
8407 public:
8408         CVec_U5Z(const CVec_U5Z&) = delete;
8409         CVec_U5Z(CVec_U5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_U5Z)); }
8410         CVec_U5Z(LDKCVec_U5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_U5Z)); }
8411         operator LDKCVec_U5Z() && { LDKCVec_U5Z res = self; memset(&self, 0, sizeof(LDKCVec_U5Z)); return res; }
8412         ~CVec_U5Z() { CVec_U5Z_free(self); }
8413         CVec_U5Z& operator=(CVec_U5Z&& o) { CVec_U5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_U5Z)); return *this; }
8414         LDKCVec_U5Z* operator &() { return &self; }
8415         LDKCVec_U5Z* operator ->() { return &self; }
8416         const LDKCVec_U5Z* operator &() const { return &self; }
8417         const LDKCVec_U5Z* operator ->() const { return &self; }
8418 };
8419 class CResult_PaymentParametersDecodeErrorZ {
8420 private:
8421         LDKCResult_PaymentParametersDecodeErrorZ self;
8422 public:
8423         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
8424         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
8425         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
8426         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
8427         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
8428         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
8429         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
8430         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
8431         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
8432         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
8433 };
8434 class C2Tuple_ThirtyTwoBytesChannelMonitorZ {
8435 private:
8436         LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ self;
8437 public:
8438         C2Tuple_ThirtyTwoBytesChannelMonitorZ(const C2Tuple_ThirtyTwoBytesChannelMonitorZ&) = delete;
8439         C2Tuple_ThirtyTwoBytesChannelMonitorZ(C2Tuple_ThirtyTwoBytesChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesChannelMonitorZ)); }
8440         C2Tuple_ThirtyTwoBytesChannelMonitorZ(LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ)); }
8441         operator LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ() && { LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ)); return res; }
8442         ~C2Tuple_ThirtyTwoBytesChannelMonitorZ() { C2Tuple_ThirtyTwoBytesChannelMonitorZ_free(self); }
8443         C2Tuple_ThirtyTwoBytesChannelMonitorZ& operator=(C2Tuple_ThirtyTwoBytesChannelMonitorZ&& o) { C2Tuple_ThirtyTwoBytesChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesChannelMonitorZ)); return *this; }
8444         LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ* operator &() { return &self; }
8445         LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ* operator ->() { return &self; }
8446         const LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ* operator &() const { return &self; }
8447         const LDKC2Tuple_ThirtyTwoBytesChannelMonitorZ* operator ->() const { return &self; }
8448 };
8449 class COption_U128Z {
8450 private:
8451         LDKCOption_U128Z self;
8452 public:
8453         COption_U128Z(const COption_U128Z&) = delete;
8454         COption_U128Z(COption_U128Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_U128Z)); }
8455         COption_U128Z(LDKCOption_U128Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_U128Z)); }
8456         operator LDKCOption_U128Z() && { LDKCOption_U128Z res = self; memset(&self, 0, sizeof(LDKCOption_U128Z)); return res; }
8457         ~COption_U128Z() { COption_U128Z_free(self); }
8458         COption_U128Z& operator=(COption_U128Z&& o) { COption_U128Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_U128Z)); return *this; }
8459         LDKCOption_U128Z* operator &() { return &self; }
8460         LDKCOption_U128Z* operator ->() { return &self; }
8461         const LDKCOption_U128Z* operator &() const { return &self; }
8462         const LDKCOption_U128Z* operator ->() const { return &self; }
8463 };
8464 class CResult_DelayedPaymentBasepointDecodeErrorZ {
8465 private:
8466         LDKCResult_DelayedPaymentBasepointDecodeErrorZ self;
8467 public:
8468         CResult_DelayedPaymentBasepointDecodeErrorZ(const CResult_DelayedPaymentBasepointDecodeErrorZ&) = delete;
8469         CResult_DelayedPaymentBasepointDecodeErrorZ(CResult_DelayedPaymentBasepointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentBasepointDecodeErrorZ)); }
8470         CResult_DelayedPaymentBasepointDecodeErrorZ(LDKCResult_DelayedPaymentBasepointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentBasepointDecodeErrorZ)); }
8471         operator LDKCResult_DelayedPaymentBasepointDecodeErrorZ() && { LDKCResult_DelayedPaymentBasepointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentBasepointDecodeErrorZ)); return res; }
8472         ~CResult_DelayedPaymentBasepointDecodeErrorZ() { CResult_DelayedPaymentBasepointDecodeErrorZ_free(self); }
8473         CResult_DelayedPaymentBasepointDecodeErrorZ& operator=(CResult_DelayedPaymentBasepointDecodeErrorZ&& o) { CResult_DelayedPaymentBasepointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentBasepointDecodeErrorZ)); return *this; }
8474         LDKCResult_DelayedPaymentBasepointDecodeErrorZ* operator &() { return &self; }
8475         LDKCResult_DelayedPaymentBasepointDecodeErrorZ* operator ->() { return &self; }
8476         const LDKCResult_DelayedPaymentBasepointDecodeErrorZ* operator &() const { return &self; }
8477         const LDKCResult_DelayedPaymentBasepointDecodeErrorZ* operator ->() const { return &self; }
8478 };
8479 class C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ {
8480 private:
8481         LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ self;
8482 public:
8483         C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ(const C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ&) = delete;
8484         C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ(C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ)); }
8485         C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ(LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ)); }
8486         operator LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ() && { LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ)); return res; }
8487         ~C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ() { C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ_free(self); }
8488         C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ& operator=(C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ&& o) { C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesThirtyTwoBytesZ)); return *this; }
8489         LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ* operator &() { return &self; }
8490         LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ* operator ->() { return &self; }
8491         const LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ* operator &() const { return &self; }
8492         const LDKC2Tuple_ThirtyTwoBytesThirtyTwoBytesZ* operator ->() const { return &self; }
8493 };
8494 class CResult_TxAckRbfDecodeErrorZ {
8495 private:
8496         LDKCResult_TxAckRbfDecodeErrorZ self;
8497 public:
8498         CResult_TxAckRbfDecodeErrorZ(const CResult_TxAckRbfDecodeErrorZ&) = delete;
8499         CResult_TxAckRbfDecodeErrorZ(CResult_TxAckRbfDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAckRbfDecodeErrorZ)); }
8500         CResult_TxAckRbfDecodeErrorZ(LDKCResult_TxAckRbfDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAckRbfDecodeErrorZ)); }
8501         operator LDKCResult_TxAckRbfDecodeErrorZ() && { LDKCResult_TxAckRbfDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAckRbfDecodeErrorZ)); return res; }
8502         ~CResult_TxAckRbfDecodeErrorZ() { CResult_TxAckRbfDecodeErrorZ_free(self); }
8503         CResult_TxAckRbfDecodeErrorZ& operator=(CResult_TxAckRbfDecodeErrorZ&& o) { CResult_TxAckRbfDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAckRbfDecodeErrorZ)); return *this; }
8504         LDKCResult_TxAckRbfDecodeErrorZ* operator &() { return &self; }
8505         LDKCResult_TxAckRbfDecodeErrorZ* operator ->() { return &self; }
8506         const LDKCResult_TxAckRbfDecodeErrorZ* operator &() const { return &self; }
8507         const LDKCResult_TxAckRbfDecodeErrorZ* operator ->() const { return &self; }
8508 };
8509 class CResult_Bolt11InvoiceBolt11SemanticErrorZ {
8510 private:
8511         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ self;
8512 public:
8513         CResult_Bolt11InvoiceBolt11SemanticErrorZ(const CResult_Bolt11InvoiceBolt11SemanticErrorZ&) = delete;
8514         CResult_Bolt11InvoiceBolt11SemanticErrorZ(CResult_Bolt11InvoiceBolt11SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceBolt11SemanticErrorZ)); }
8515         CResult_Bolt11InvoiceBolt11SemanticErrorZ(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ)); }
8516         operator LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ() && { LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ)); return res; }
8517         ~CResult_Bolt11InvoiceBolt11SemanticErrorZ() { CResult_Bolt11InvoiceBolt11SemanticErrorZ_free(self); }
8518         CResult_Bolt11InvoiceBolt11SemanticErrorZ& operator=(CResult_Bolt11InvoiceBolt11SemanticErrorZ&& o) { CResult_Bolt11InvoiceBolt11SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceBolt11SemanticErrorZ)); return *this; }
8519         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator &() { return &self; }
8520         LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator ->() { return &self; }
8521         const LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator &() const { return &self; }
8522         const LDKCResult_Bolt11InvoiceBolt11SemanticErrorZ* operator ->() const { return &self; }
8523 };
8524 class COption_UtxoLookupZ {
8525 private:
8526         LDKCOption_UtxoLookupZ self;
8527 public:
8528         COption_UtxoLookupZ(const COption_UtxoLookupZ&) = delete;
8529         COption_UtxoLookupZ(COption_UtxoLookupZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_UtxoLookupZ)); }
8530         COption_UtxoLookupZ(LDKCOption_UtxoLookupZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_UtxoLookupZ)); }
8531         operator LDKCOption_UtxoLookupZ() && { LDKCOption_UtxoLookupZ res = self; memset(&self, 0, sizeof(LDKCOption_UtxoLookupZ)); return res; }
8532         ~COption_UtxoLookupZ() { COption_UtxoLookupZ_free(self); }
8533         COption_UtxoLookupZ& operator=(COption_UtxoLookupZ&& o) { COption_UtxoLookupZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_UtxoLookupZ)); return *this; }
8534         LDKCOption_UtxoLookupZ* operator &() { return &self; }
8535         LDKCOption_UtxoLookupZ* operator ->() { return &self; }
8536         const LDKCOption_UtxoLookupZ* operator &() const { return &self; }
8537         const LDKCOption_UtxoLookupZ* operator ->() const { return &self; }
8538 };
8539 class CResult_PongDecodeErrorZ {
8540 private:
8541         LDKCResult_PongDecodeErrorZ self;
8542 public:
8543         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
8544         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
8545         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
8546         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
8547         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
8548         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
8549         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
8550         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
8551         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
8552         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
8553 };
8554 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
8555 private:
8556         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
8557 public:
8558         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
8559         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
8560         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
8561         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
8562         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
8563         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
8564         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
8565         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
8566         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
8567         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
8568 };
8569 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ {
8570 private:
8571         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ self;
8572 public:
8573         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(const C2Tuple_OutPointCVec_MonitorUpdateIdZZ&) = delete;
8574         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(C2Tuple_OutPointCVec_MonitorUpdateIdZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
8575         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
8576         operator LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ() && { LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); return res; }
8577         ~C2Tuple_OutPointCVec_MonitorUpdateIdZZ() { C2Tuple_OutPointCVec_MonitorUpdateIdZZ_free(self); }
8578         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; }
8579         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() { return &self; }
8580         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() { return &self; }
8581         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() const { return &self; }
8582         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() const { return &self; }
8583 };
8584 class CResult_ChannelIdAPIErrorZ {
8585 private:
8586         LDKCResult_ChannelIdAPIErrorZ self;
8587 public:
8588         CResult_ChannelIdAPIErrorZ(const CResult_ChannelIdAPIErrorZ&) = delete;
8589         CResult_ChannelIdAPIErrorZ(CResult_ChannelIdAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelIdAPIErrorZ)); }
8590         CResult_ChannelIdAPIErrorZ(LDKCResult_ChannelIdAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelIdAPIErrorZ)); }
8591         operator LDKCResult_ChannelIdAPIErrorZ() && { LDKCResult_ChannelIdAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelIdAPIErrorZ)); return res; }
8592         ~CResult_ChannelIdAPIErrorZ() { CResult_ChannelIdAPIErrorZ_free(self); }
8593         CResult_ChannelIdAPIErrorZ& operator=(CResult_ChannelIdAPIErrorZ&& o) { CResult_ChannelIdAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelIdAPIErrorZ)); return *this; }
8594         LDKCResult_ChannelIdAPIErrorZ* operator &() { return &self; }
8595         LDKCResult_ChannelIdAPIErrorZ* operator ->() { return &self; }
8596         const LDKCResult_ChannelIdAPIErrorZ* operator &() const { return &self; }
8597         const LDKCResult_ChannelIdAPIErrorZ* operator ->() const { return &self; }
8598 };
8599 class CResult_CVec_u8ZNoneZ {
8600 private:
8601         LDKCResult_CVec_u8ZNoneZ self;
8602 public:
8603         CResult_CVec_u8ZNoneZ(const CResult_CVec_u8ZNoneZ&) = delete;
8604         CResult_CVec_u8ZNoneZ(CResult_CVec_u8ZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZNoneZ)); }
8605         CResult_CVec_u8ZNoneZ(LDKCResult_CVec_u8ZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZNoneZ)); }
8606         operator LDKCResult_CVec_u8ZNoneZ() && { LDKCResult_CVec_u8ZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZNoneZ)); return res; }
8607         ~CResult_CVec_u8ZNoneZ() { CResult_CVec_u8ZNoneZ_free(self); }
8608         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; }
8609         LDKCResult_CVec_u8ZNoneZ* operator &() { return &self; }
8610         LDKCResult_CVec_u8ZNoneZ* operator ->() { return &self; }
8611         const LDKCResult_CVec_u8ZNoneZ* operator &() const { return &self; }
8612         const LDKCResult_CVec_u8ZNoneZ* operator ->() const { return &self; }
8613 };
8614 class CVec_C2Tuple_ChannelIdPublicKeyZZ {
8615 private:
8616         LDKCVec_C2Tuple_ChannelIdPublicKeyZZ self;
8617 public:
8618         CVec_C2Tuple_ChannelIdPublicKeyZZ(const CVec_C2Tuple_ChannelIdPublicKeyZZ&) = delete;
8619         CVec_C2Tuple_ChannelIdPublicKeyZZ(CVec_C2Tuple_ChannelIdPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_ChannelIdPublicKeyZZ)); }
8620         CVec_C2Tuple_ChannelIdPublicKeyZZ(LDKCVec_C2Tuple_ChannelIdPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_ChannelIdPublicKeyZZ)); }
8621         operator LDKCVec_C2Tuple_ChannelIdPublicKeyZZ() && { LDKCVec_C2Tuple_ChannelIdPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_ChannelIdPublicKeyZZ)); return res; }
8622         ~CVec_C2Tuple_ChannelIdPublicKeyZZ() { CVec_C2Tuple_ChannelIdPublicKeyZZ_free(self); }
8623         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; }
8624         LDKCVec_C2Tuple_ChannelIdPublicKeyZZ* operator &() { return &self; }
8625         LDKCVec_C2Tuple_ChannelIdPublicKeyZZ* operator ->() { return &self; }
8626         const LDKCVec_C2Tuple_ChannelIdPublicKeyZZ* operator &() const { return &self; }
8627         const LDKCVec_C2Tuple_ChannelIdPublicKeyZZ* operator ->() const { return &self; }
8628 };
8629 class C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ {
8630 private:
8631         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ self;
8632 public:
8633         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ&) = delete;
8634         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ)); }
8635         C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ)); }
8636         operator LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ)); return res; }
8637         ~C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ_free(self); }
8638         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; }
8639         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
8640         LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
8641         const LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
8642         const LDKC2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
8643 };
8644 class CResult_ChannelTransactionParametersDecodeErrorZ {
8645 private:
8646         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
8647 public:
8648         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
8649         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
8650         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
8651         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
8652         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
8653         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
8654         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
8655         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
8656         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
8657         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
8658 };
8659 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ {
8660 private:
8661         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ self;
8662 public:
8663         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(const CResult_WriteableEcdsaChannelSignerDecodeErrorZ&) = delete;
8664         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
8665         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
8666         operator LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ() && { LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return res; }
8667         ~CResult_WriteableEcdsaChannelSignerDecodeErrorZ() { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); }
8668         CResult_WriteableEcdsaChannelSignerDecodeErrorZ& operator=(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return *this; }
8669         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() { return &self; }
8670         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() { return &self; }
8671         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() const { return &self; }
8672         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() const { return &self; }
8673 };
8674 class CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ {
8675 private:
8676         LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ self;
8677 public:
8678         CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ(const CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ&) = delete;
8679         CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ(CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ)); }
8680         CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ(LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ)); }
8681         operator LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ() && { LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ)); return res; }
8682         ~CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ() { CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ_free(self); }
8683         CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ& operator=(CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ&& o) { CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ)); return *this; }
8684         LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ* operator &() { return &self; }
8685         LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
8686         const LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
8687         const LDKCResult_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
8688 };
8689 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
8690 private:
8691         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
8692 public:
8693         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
8694         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
8695         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
8696         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
8697         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
8698         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
8699         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
8700         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
8701         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
8702         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
8703 };
8704 class CResult_InFlightHtlcsDecodeErrorZ {
8705 private:
8706         LDKCResult_InFlightHtlcsDecodeErrorZ self;
8707 public:
8708         CResult_InFlightHtlcsDecodeErrorZ(const CResult_InFlightHtlcsDecodeErrorZ&) = delete;
8709         CResult_InFlightHtlcsDecodeErrorZ(CResult_InFlightHtlcsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); }
8710         CResult_InFlightHtlcsDecodeErrorZ(LDKCResult_InFlightHtlcsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); }
8711         operator LDKCResult_InFlightHtlcsDecodeErrorZ() && { LDKCResult_InFlightHtlcsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); return res; }
8712         ~CResult_InFlightHtlcsDecodeErrorZ() { CResult_InFlightHtlcsDecodeErrorZ_free(self); }
8713         CResult_InFlightHtlcsDecodeErrorZ& operator=(CResult_InFlightHtlcsDecodeErrorZ&& o) { CResult_InFlightHtlcsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); return *this; }
8714         LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() { return &self; }
8715         LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() { return &self; }
8716         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() const { return &self; }
8717         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() const { return &self; }
8718 };
8719 class CResult_COption_HTLCDestinationZDecodeErrorZ {
8720 private:
8721         LDKCResult_COption_HTLCDestinationZDecodeErrorZ self;
8722 public:
8723         CResult_COption_HTLCDestinationZDecodeErrorZ(const CResult_COption_HTLCDestinationZDecodeErrorZ&) = delete;
8724         CResult_COption_HTLCDestinationZDecodeErrorZ(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); }
8725         CResult_COption_HTLCDestinationZDecodeErrorZ(LDKCResult_COption_HTLCDestinationZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); }
8726         operator LDKCResult_COption_HTLCDestinationZDecodeErrorZ() && { LDKCResult_COption_HTLCDestinationZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); return res; }
8727         ~CResult_COption_HTLCDestinationZDecodeErrorZ() { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); }
8728         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; }
8729         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() { return &self; }
8730         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() { return &self; }
8731         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() const { return &self; }
8732         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() const { return &self; }
8733 };
8734 class CResult_Bolt12OfferContextDecodeErrorZ {
8735 private:
8736         LDKCResult_Bolt12OfferContextDecodeErrorZ self;
8737 public:
8738         CResult_Bolt12OfferContextDecodeErrorZ(const CResult_Bolt12OfferContextDecodeErrorZ&) = delete;
8739         CResult_Bolt12OfferContextDecodeErrorZ(CResult_Bolt12OfferContextDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12OfferContextDecodeErrorZ)); }
8740         CResult_Bolt12OfferContextDecodeErrorZ(LDKCResult_Bolt12OfferContextDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12OfferContextDecodeErrorZ)); }
8741         operator LDKCResult_Bolt12OfferContextDecodeErrorZ() && { LDKCResult_Bolt12OfferContextDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12OfferContextDecodeErrorZ)); return res; }
8742         ~CResult_Bolt12OfferContextDecodeErrorZ() { CResult_Bolt12OfferContextDecodeErrorZ_free(self); }
8743         CResult_Bolt12OfferContextDecodeErrorZ& operator=(CResult_Bolt12OfferContextDecodeErrorZ&& o) { CResult_Bolt12OfferContextDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12OfferContextDecodeErrorZ)); return *this; }
8744         LDKCResult_Bolt12OfferContextDecodeErrorZ* operator &() { return &self; }
8745         LDKCResult_Bolt12OfferContextDecodeErrorZ* operator ->() { return &self; }
8746         const LDKCResult_Bolt12OfferContextDecodeErrorZ* operator &() const { return &self; }
8747         const LDKCResult_Bolt12OfferContextDecodeErrorZ* operator ->() const { return &self; }
8748 };
8749 class CResult_ThirtyTwoBytesNoneZ {
8750 private:
8751         LDKCResult_ThirtyTwoBytesNoneZ self;
8752 public:
8753         CResult_ThirtyTwoBytesNoneZ(const CResult_ThirtyTwoBytesNoneZ&) = delete;
8754         CResult_ThirtyTwoBytesNoneZ(CResult_ThirtyTwoBytesNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ThirtyTwoBytesNoneZ)); }
8755         CResult_ThirtyTwoBytesNoneZ(LDKCResult_ThirtyTwoBytesNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ThirtyTwoBytesNoneZ)); }
8756         operator LDKCResult_ThirtyTwoBytesNoneZ() && { LDKCResult_ThirtyTwoBytesNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ThirtyTwoBytesNoneZ)); return res; }
8757         ~CResult_ThirtyTwoBytesNoneZ() { CResult_ThirtyTwoBytesNoneZ_free(self); }
8758         CResult_ThirtyTwoBytesNoneZ& operator=(CResult_ThirtyTwoBytesNoneZ&& o) { CResult_ThirtyTwoBytesNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ThirtyTwoBytesNoneZ)); return *this; }
8759         LDKCResult_ThirtyTwoBytesNoneZ* operator &() { return &self; }
8760         LDKCResult_ThirtyTwoBytesNoneZ* operator ->() { return &self; }
8761         const LDKCResult_ThirtyTwoBytesNoneZ* operator &() const { return &self; }
8762         const LDKCResult_ThirtyTwoBytesNoneZ* operator ->() const { return &self; }
8763 };
8764 class C3Tuple_OnionMessageContentsDestinationBlindedPathZ {
8765 private:
8766         LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ self;
8767 public:
8768         C3Tuple_OnionMessageContentsDestinationBlindedPathZ(const C3Tuple_OnionMessageContentsDestinationBlindedPathZ&) = delete;
8769         C3Tuple_OnionMessageContentsDestinationBlindedPathZ(C3Tuple_OnionMessageContentsDestinationBlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OnionMessageContentsDestinationBlindedPathZ)); }
8770         C3Tuple_OnionMessageContentsDestinationBlindedPathZ(LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ)); }
8771         operator LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ() && { LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ)); return res; }
8772         ~C3Tuple_OnionMessageContentsDestinationBlindedPathZ() { C3Tuple_OnionMessageContentsDestinationBlindedPathZ_free(self); }
8773         C3Tuple_OnionMessageContentsDestinationBlindedPathZ& operator=(C3Tuple_OnionMessageContentsDestinationBlindedPathZ&& o) { C3Tuple_OnionMessageContentsDestinationBlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_OnionMessageContentsDestinationBlindedPathZ)); return *this; }
8774         LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ* operator &() { return &self; }
8775         LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ* operator ->() { return &self; }
8776         const LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ* operator &() const { return &self; }
8777         const LDKC3Tuple_OnionMessageContentsDestinationBlindedPathZ* operator ->() const { return &self; }
8778 };
8779 class C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ {
8780 private:
8781         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ self;
8782 public:
8783         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(const C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&) = delete;
8784         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); }
8785         C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); }
8786         operator LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ() && { LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ)); return res; }
8787         ~C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ() { C3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ_free(self); }
8788         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; }
8789         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator &() { return &self; }
8790         LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator ->() { return &self; }
8791         const LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator &() const { return &self; }
8792         const LDKC3Tuple_RawBolt11Invoice_u832Bolt11InvoiceSignatureZ* operator ->() const { return &self; }
8793 };
8794 class CResult_SendSuccessSendErrorZ {
8795 private:
8796         LDKCResult_SendSuccessSendErrorZ self;
8797 public:
8798         CResult_SendSuccessSendErrorZ(const CResult_SendSuccessSendErrorZ&) = delete;
8799         CResult_SendSuccessSendErrorZ(CResult_SendSuccessSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SendSuccessSendErrorZ)); }
8800         CResult_SendSuccessSendErrorZ(LDKCResult_SendSuccessSendErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SendSuccessSendErrorZ)); }
8801         operator LDKCResult_SendSuccessSendErrorZ() && { LDKCResult_SendSuccessSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SendSuccessSendErrorZ)); return res; }
8802         ~CResult_SendSuccessSendErrorZ() { CResult_SendSuccessSendErrorZ_free(self); }
8803         CResult_SendSuccessSendErrorZ& operator=(CResult_SendSuccessSendErrorZ&& o) { CResult_SendSuccessSendErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SendSuccessSendErrorZ)); return *this; }
8804         LDKCResult_SendSuccessSendErrorZ* operator &() { return &self; }
8805         LDKCResult_SendSuccessSendErrorZ* operator ->() { return &self; }
8806         const LDKCResult_SendSuccessSendErrorZ* operator &() const { return &self; }
8807         const LDKCResult_SendSuccessSendErrorZ* operator ->() const { return &self; }
8808 };
8809 class CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ {
8810 private:
8811         LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ self;
8812 public:
8813         CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ(const CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ&) = delete;
8814         CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ(CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ)); }
8815         CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ(LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ)); }
8816         operator LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ() && { LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ)); return res; }
8817         ~CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ() { CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ_free(self); }
8818         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; }
8819         LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ* operator &() { return &self; }
8820         LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ* operator ->() { return &self; }
8821         const LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ* operator &() const { return &self; }
8822         const LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ* operator ->() const { return &self; }
8823 };
8824 class C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ {
8825 private:
8826         LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ self;
8827 public:
8828         C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ(const C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ&) = delete;
8829         C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ(C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ)); }
8830         C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ(LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ)); }
8831         operator LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ() && { LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ)); return res; }
8832         ~C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ() { C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ_free(self); }
8833         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; }
8834         LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ* operator &() { return &self; }
8835         LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ* operator ->() { return &self; }
8836         const LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ* operator &() const { return &self; }
8837         const LDKC3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZ* operator ->() const { return &self; }
8838 };
8839 class CResult_BlindedHopDecodeErrorZ {
8840 private:
8841         LDKCResult_BlindedHopDecodeErrorZ self;
8842 public:
8843         CResult_BlindedHopDecodeErrorZ(const CResult_BlindedHopDecodeErrorZ&) = delete;
8844         CResult_BlindedHopDecodeErrorZ(CResult_BlindedHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); }
8845         CResult_BlindedHopDecodeErrorZ(LDKCResult_BlindedHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); }
8846         operator LDKCResult_BlindedHopDecodeErrorZ() && { LDKCResult_BlindedHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); return res; }
8847         ~CResult_BlindedHopDecodeErrorZ() { CResult_BlindedHopDecodeErrorZ_free(self); }
8848         CResult_BlindedHopDecodeErrorZ& operator=(CResult_BlindedHopDecodeErrorZ&& o) { CResult_BlindedHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); return *this; }
8849         LDKCResult_BlindedHopDecodeErrorZ* operator &() { return &self; }
8850         LDKCResult_BlindedHopDecodeErrorZ* operator ->() { return &self; }
8851         const LDKCResult_BlindedHopDecodeErrorZ* operator &() const { return &self; }
8852         const LDKCResult_BlindedHopDecodeErrorZ* operator ->() const { return &self; }
8853 };
8854 class CResult_NoneLightningErrorZ {
8855 private:
8856         LDKCResult_NoneLightningErrorZ self;
8857 public:
8858         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
8859         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
8860         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
8861         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
8862         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
8863         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
8864         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
8865         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
8866         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
8867         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
8868 };
8869 class CResult_FixedPenaltyScorerDecodeErrorZ {
8870 private:
8871         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
8872 public:
8873         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
8874         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
8875         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
8876         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
8877         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
8878         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
8879         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
8880         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
8881         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
8882         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
8883 };
8884 class CVec_BlindedPathZ {
8885 private:
8886         LDKCVec_BlindedPathZ self;
8887 public:
8888         CVec_BlindedPathZ(const CVec_BlindedPathZ&) = delete;
8889         CVec_BlindedPathZ(CVec_BlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BlindedPathZ)); }
8890         CVec_BlindedPathZ(LDKCVec_BlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BlindedPathZ)); }
8891         operator LDKCVec_BlindedPathZ() && { LDKCVec_BlindedPathZ res = self; memset(&self, 0, sizeof(LDKCVec_BlindedPathZ)); return res; }
8892         ~CVec_BlindedPathZ() { CVec_BlindedPathZ_free(self); }
8893         CVec_BlindedPathZ& operator=(CVec_BlindedPathZ&& o) { CVec_BlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BlindedPathZ)); return *this; }
8894         LDKCVec_BlindedPathZ* operator &() { return &self; }
8895         LDKCVec_BlindedPathZ* operator ->() { return &self; }
8896         const LDKCVec_BlindedPathZ* operator &() const { return &self; }
8897         const LDKCVec_BlindedPathZ* operator ->() const { return &self; }
8898 };
8899 class CResult_NonePeerHandleErrorZ {
8900 private:
8901         LDKCResult_NonePeerHandleErrorZ self;
8902 public:
8903         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
8904         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
8905         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
8906         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
8907         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
8908         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
8909         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
8910         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
8911         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
8912         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
8913 };
8914 class CResult_FinalOnionHopDataDecodeErrorZ {
8915 private:
8916         LDKCResult_FinalOnionHopDataDecodeErrorZ self;
8917 public:
8918         CResult_FinalOnionHopDataDecodeErrorZ(const CResult_FinalOnionHopDataDecodeErrorZ&) = delete;
8919         CResult_FinalOnionHopDataDecodeErrorZ(CResult_FinalOnionHopDataDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FinalOnionHopDataDecodeErrorZ)); }
8920         CResult_FinalOnionHopDataDecodeErrorZ(LDKCResult_FinalOnionHopDataDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FinalOnionHopDataDecodeErrorZ)); }
8921         operator LDKCResult_FinalOnionHopDataDecodeErrorZ() && { LDKCResult_FinalOnionHopDataDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FinalOnionHopDataDecodeErrorZ)); return res; }
8922         ~CResult_FinalOnionHopDataDecodeErrorZ() { CResult_FinalOnionHopDataDecodeErrorZ_free(self); }
8923         CResult_FinalOnionHopDataDecodeErrorZ& operator=(CResult_FinalOnionHopDataDecodeErrorZ&& o) { CResult_FinalOnionHopDataDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FinalOnionHopDataDecodeErrorZ)); return *this; }
8924         LDKCResult_FinalOnionHopDataDecodeErrorZ* operator &() { return &self; }
8925         LDKCResult_FinalOnionHopDataDecodeErrorZ* operator ->() { return &self; }
8926         const LDKCResult_FinalOnionHopDataDecodeErrorZ* operator &() const { return &self; }
8927         const LDKCResult_FinalOnionHopDataDecodeErrorZ* operator ->() const { return &self; }
8928 };
8929 class CResult_TrustedCommitmentTransactionNoneZ {
8930 private:
8931         LDKCResult_TrustedCommitmentTransactionNoneZ self;
8932 public:
8933         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
8934         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
8935         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
8936         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
8937         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
8938         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
8939         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
8940         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
8941         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
8942         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
8943 };
8944 class CResult_COption_EventZDecodeErrorZ {
8945 private:
8946         LDKCResult_COption_EventZDecodeErrorZ self;
8947 public:
8948         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
8949         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
8950         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
8951         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
8952         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
8953         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; }
8954         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
8955         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
8956         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
8957         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
8958 };
8959 class CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ {
8960 private:
8961         LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ self;
8962 public:
8963         CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ(const CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ&) = delete;
8964         CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ(CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ)); }
8965         CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ(LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ)); }
8966         operator LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ() && { LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ)); return res; }
8967         ~CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ() { CResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ_free(self); }
8968         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; }
8969         LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ* operator &() { return &self; }
8970         LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ* operator ->() { return &self; }
8971         const LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ* operator &() const { return &self; }
8972         const LDKCResult_C2Tuple_BlindedPayInfoBlindedPathZNoneZ* operator ->() const { return &self; }
8973 };
8974 class CResult_PaymentFailureReasonDecodeErrorZ {
8975 private:
8976         LDKCResult_PaymentFailureReasonDecodeErrorZ self;
8977 public:
8978         CResult_PaymentFailureReasonDecodeErrorZ(const CResult_PaymentFailureReasonDecodeErrorZ&) = delete;
8979         CResult_PaymentFailureReasonDecodeErrorZ(CResult_PaymentFailureReasonDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentFailureReasonDecodeErrorZ)); }
8980         CResult_PaymentFailureReasonDecodeErrorZ(LDKCResult_PaymentFailureReasonDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentFailureReasonDecodeErrorZ)); }
8981         operator LDKCResult_PaymentFailureReasonDecodeErrorZ() && { LDKCResult_PaymentFailureReasonDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentFailureReasonDecodeErrorZ)); return res; }
8982         ~CResult_PaymentFailureReasonDecodeErrorZ() { CResult_PaymentFailureReasonDecodeErrorZ_free(self); }
8983         CResult_PaymentFailureReasonDecodeErrorZ& operator=(CResult_PaymentFailureReasonDecodeErrorZ&& o) { CResult_PaymentFailureReasonDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentFailureReasonDecodeErrorZ)); return *this; }
8984         LDKCResult_PaymentFailureReasonDecodeErrorZ* operator &() { return &self; }
8985         LDKCResult_PaymentFailureReasonDecodeErrorZ* operator ->() { return &self; }
8986         const LDKCResult_PaymentFailureReasonDecodeErrorZ* operator &() const { return &self; }
8987         const LDKCResult_PaymentFailureReasonDecodeErrorZ* operator ->() const { return &self; }
8988 };
8989 class COption_SocketAddressZ {
8990 private:
8991         LDKCOption_SocketAddressZ self;
8992 public:
8993         COption_SocketAddressZ(const COption_SocketAddressZ&) = delete;
8994         COption_SocketAddressZ(COption_SocketAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_SocketAddressZ)); }
8995         COption_SocketAddressZ(LDKCOption_SocketAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_SocketAddressZ)); }
8996         operator LDKCOption_SocketAddressZ() && { LDKCOption_SocketAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_SocketAddressZ)); return res; }
8997         ~COption_SocketAddressZ() { COption_SocketAddressZ_free(self); }
8998         COption_SocketAddressZ& operator=(COption_SocketAddressZ&& o) { COption_SocketAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_SocketAddressZ)); return *this; }
8999         LDKCOption_SocketAddressZ* operator &() { return &self; }
9000         LDKCOption_SocketAddressZ* operator ->() { return &self; }
9001         const LDKCOption_SocketAddressZ* operator &() const { return &self; }
9002         const LDKCOption_SocketAddressZ* operator ->() const { return &self; }
9003 };
9004 class CResult_COption_MonitorEventZDecodeErrorZ {
9005 private:
9006         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
9007 public:
9008         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
9009         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
9010         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
9011         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
9012         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
9013         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; }
9014         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
9015         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
9016         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
9017         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
9018 };
9019 class COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ {
9020 private:
9021         LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ self;
9022 public:
9023         COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ(const COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ&) = delete;
9024         COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ(COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ)); }
9025         COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ(LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ)); }
9026         operator LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ() && { LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ)); return res; }
9027         ~COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ() { COption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ_free(self); }
9028         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; }
9029         LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ* operator &() { return &self; }
9030         LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ* operator ->() { return &self; }
9031         const LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ* operator &() const { return &self; }
9032         const LDKCOption_C2Tuple_ThirtyTwoU16sThirtyTwoU16sZZ* operator ->() const { return &self; }
9033 };
9034 class CResult_DescriptionCreationErrorZ {
9035 private:
9036         LDKCResult_DescriptionCreationErrorZ self;
9037 public:
9038         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
9039         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
9040         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
9041         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
9042         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
9043         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
9044         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
9045         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
9046         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
9047         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
9048 };
9049 class CResult_RoutingFeesDecodeErrorZ {
9050 private:
9051         LDKCResult_RoutingFeesDecodeErrorZ self;
9052 public:
9053         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
9054         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
9055         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
9056         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
9057         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
9058         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
9059         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
9060         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
9061         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
9062         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
9063 };
9064 class CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ {
9065 private:
9066         LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ self;
9067 public:
9068         CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ(const CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ&) = delete;
9069         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)); }
9070         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)); }
9071         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; }
9072         ~CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ() { CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ_free(self); }
9073         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; }
9074         LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ* operator &() { return &self; }
9075         LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ* operator ->() { return &self; }
9076         const LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ* operator &() const { return &self; }
9077         const LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32CVec_u8ZZZZZ* operator ->() const { return &self; }
9078 };
9079 class CResult_PaymentRelayDecodeErrorZ {
9080 private:
9081         LDKCResult_PaymentRelayDecodeErrorZ self;
9082 public:
9083         CResult_PaymentRelayDecodeErrorZ(const CResult_PaymentRelayDecodeErrorZ&) = delete;
9084         CResult_PaymentRelayDecodeErrorZ(CResult_PaymentRelayDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentRelayDecodeErrorZ)); }
9085         CResult_PaymentRelayDecodeErrorZ(LDKCResult_PaymentRelayDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentRelayDecodeErrorZ)); }
9086         operator LDKCResult_PaymentRelayDecodeErrorZ() && { LDKCResult_PaymentRelayDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentRelayDecodeErrorZ)); return res; }
9087         ~CResult_PaymentRelayDecodeErrorZ() { CResult_PaymentRelayDecodeErrorZ_free(self); }
9088         CResult_PaymentRelayDecodeErrorZ& operator=(CResult_PaymentRelayDecodeErrorZ&& o) { CResult_PaymentRelayDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentRelayDecodeErrorZ)); return *this; }
9089         LDKCResult_PaymentRelayDecodeErrorZ* operator &() { return &self; }
9090         LDKCResult_PaymentRelayDecodeErrorZ* operator ->() { return &self; }
9091         const LDKCResult_PaymentRelayDecodeErrorZ* operator &() const { return &self; }
9092         const LDKCResult_PaymentRelayDecodeErrorZ* operator ->() const { return &self; }
9093 };
9094 class CResult_QueryShortChannelIdsDecodeErrorZ {
9095 private:
9096         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
9097 public:
9098         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
9099         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
9100         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
9101         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
9102         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
9103         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
9104         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
9105         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
9106         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
9107         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
9108 };
9109 class CResult_VerifiedInvoiceRequestNoneZ {
9110 private:
9111         LDKCResult_VerifiedInvoiceRequestNoneZ self;
9112 public:
9113         CResult_VerifiedInvoiceRequestNoneZ(const CResult_VerifiedInvoiceRequestNoneZ&) = delete;
9114         CResult_VerifiedInvoiceRequestNoneZ(CResult_VerifiedInvoiceRequestNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_VerifiedInvoiceRequestNoneZ)); }
9115         CResult_VerifiedInvoiceRequestNoneZ(LDKCResult_VerifiedInvoiceRequestNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_VerifiedInvoiceRequestNoneZ)); }
9116         operator LDKCResult_VerifiedInvoiceRequestNoneZ() && { LDKCResult_VerifiedInvoiceRequestNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_VerifiedInvoiceRequestNoneZ)); return res; }
9117         ~CResult_VerifiedInvoiceRequestNoneZ() { CResult_VerifiedInvoiceRequestNoneZ_free(self); }
9118         CResult_VerifiedInvoiceRequestNoneZ& operator=(CResult_VerifiedInvoiceRequestNoneZ&& o) { CResult_VerifiedInvoiceRequestNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_VerifiedInvoiceRequestNoneZ)); return *this; }
9119         LDKCResult_VerifiedInvoiceRequestNoneZ* operator &() { return &self; }
9120         LDKCResult_VerifiedInvoiceRequestNoneZ* operator ->() { return &self; }
9121         const LDKCResult_VerifiedInvoiceRequestNoneZ* operator &() const { return &self; }
9122         const LDKCResult_VerifiedInvoiceRequestNoneZ* operator ->() const { return &self; }
9123 };
9124 class CResult_UpdateAddHTLCDecodeErrorZ {
9125 private:
9126         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
9127 public:
9128         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
9129         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
9130         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
9131         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
9132         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
9133         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
9134         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
9135         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
9136         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
9137         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
9138 };
9139 class COption_MonitorEventZ {
9140 private:
9141         LDKCOption_MonitorEventZ self;
9142 public:
9143         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
9144         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
9145         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
9146         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
9147         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
9148         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
9149         LDKCOption_MonitorEventZ* operator &() { return &self; }
9150         LDKCOption_MonitorEventZ* operator ->() { return &self; }
9151         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
9152         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
9153 };
9154 class COption_TypeZ {
9155 private:
9156         LDKCOption_TypeZ self;
9157 public:
9158         COption_TypeZ(const COption_TypeZ&) = delete;
9159         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
9160         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
9161         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
9162         ~COption_TypeZ() { COption_TypeZ_free(self); }
9163         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
9164         LDKCOption_TypeZ* operator &() { return &self; }
9165         LDKCOption_TypeZ* operator ->() { return &self; }
9166         const LDKCOption_TypeZ* operator &() const { return &self; }
9167         const LDKCOption_TypeZ* operator ->() const { return &self; }
9168 };
9169 class CResult_COption_TypeZDecodeErrorZ {
9170 private:
9171         LDKCResult_COption_TypeZDecodeErrorZ self;
9172 public:
9173         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
9174         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
9175         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
9176         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
9177         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
9178         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; }
9179         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
9180         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
9181         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
9182         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
9183 };
9184 class CResult_COption_PathFailureZDecodeErrorZ {
9185 private:
9186         LDKCResult_COption_PathFailureZDecodeErrorZ self;
9187 public:
9188         CResult_COption_PathFailureZDecodeErrorZ(const CResult_COption_PathFailureZDecodeErrorZ&) = delete;
9189         CResult_COption_PathFailureZDecodeErrorZ(CResult_COption_PathFailureZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_PathFailureZDecodeErrorZ)); }
9190         CResult_COption_PathFailureZDecodeErrorZ(LDKCResult_COption_PathFailureZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); }
9191         operator LDKCResult_COption_PathFailureZDecodeErrorZ() && { LDKCResult_COption_PathFailureZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); return res; }
9192         ~CResult_COption_PathFailureZDecodeErrorZ() { CResult_COption_PathFailureZDecodeErrorZ_free(self); }
9193         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; }
9194         LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() { return &self; }
9195         LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() { return &self; }
9196         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() const { return &self; }
9197         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() const { return &self; }
9198 };
9199 class CResult_Bolt11InvoiceSignOrCreationErrorZ {
9200 private:
9201         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ self;
9202 public:
9203         CResult_Bolt11InvoiceSignOrCreationErrorZ(const CResult_Bolt11InvoiceSignOrCreationErrorZ&) = delete;
9204         CResult_Bolt11InvoiceSignOrCreationErrorZ(CResult_Bolt11InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceSignOrCreationErrorZ)); }
9205         CResult_Bolt11InvoiceSignOrCreationErrorZ(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ)); }
9206         operator LDKCResult_Bolt11InvoiceSignOrCreationErrorZ() && { LDKCResult_Bolt11InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceSignOrCreationErrorZ)); return res; }
9207         ~CResult_Bolt11InvoiceSignOrCreationErrorZ() { CResult_Bolt11InvoiceSignOrCreationErrorZ_free(self); }
9208         CResult_Bolt11InvoiceSignOrCreationErrorZ& operator=(CResult_Bolt11InvoiceSignOrCreationErrorZ&& o) { CResult_Bolt11InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceSignOrCreationErrorZ)); return *this; }
9209         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator &() { return &self; }
9210         LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
9211         const LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
9212         const LDKCResult_Bolt11InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
9213 };
9214 class CResult_UpdateFailHTLCDecodeErrorZ {
9215 private:
9216         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
9217 public:
9218         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
9219         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
9220         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
9221         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
9222         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
9223         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
9224         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
9225         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
9226         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
9227         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
9228 };
9229 class CResult_CVec_BlindedPathZNoneZ {
9230 private:
9231         LDKCResult_CVec_BlindedPathZNoneZ self;
9232 public:
9233         CResult_CVec_BlindedPathZNoneZ(const CResult_CVec_BlindedPathZNoneZ&) = delete;
9234         CResult_CVec_BlindedPathZNoneZ(CResult_CVec_BlindedPathZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_BlindedPathZNoneZ)); }
9235         CResult_CVec_BlindedPathZNoneZ(LDKCResult_CVec_BlindedPathZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_BlindedPathZNoneZ)); }
9236         operator LDKCResult_CVec_BlindedPathZNoneZ() && { LDKCResult_CVec_BlindedPathZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_BlindedPathZNoneZ)); return res; }
9237         ~CResult_CVec_BlindedPathZNoneZ() { CResult_CVec_BlindedPathZNoneZ_free(self); }
9238         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; }
9239         LDKCResult_CVec_BlindedPathZNoneZ* operator &() { return &self; }
9240         LDKCResult_CVec_BlindedPathZNoneZ* operator ->() { return &self; }
9241         const LDKCResult_CVec_BlindedPathZNoneZ* operator &() const { return &self; }
9242         const LDKCResult_CVec_BlindedPathZNoneZ* operator ->() const { return &self; }
9243 };
9244 class CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ {
9245 private:
9246         LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ self;
9247 public:
9248         CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ(const CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ&) = delete;
9249         CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ(CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ)); }
9250         CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ(LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ)); }
9251         operator LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ() && { LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ)); return res; }
9252         ~CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ() { CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ_free(self); }
9253         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; }
9254         LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ* operator &() { return &self; }
9255         LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ* operator ->() { return &self; }
9256         const LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ* operator &() const { return &self; }
9257         const LDKCVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZ* operator ->() const { return &self; }
9258 };
9259 class CResult_RevokeAndACKDecodeErrorZ {
9260 private:
9261         LDKCResult_RevokeAndACKDecodeErrorZ self;
9262 public:
9263         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
9264         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
9265         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
9266         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
9267         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
9268         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
9269         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
9270         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
9271         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
9272         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
9273 };
9274 class CResult_SpendableOutputDescriptorDecodeErrorZ {
9275 private:
9276         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
9277 public:
9278         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
9279         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
9280         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
9281         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
9282         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
9283         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
9284         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
9285         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
9286         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
9287         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
9288 };
9289 class CResult_UnsignedChannelUpdateDecodeErrorZ {
9290 private:
9291         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
9292 public:
9293         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
9294         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
9295         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
9296         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
9297         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
9298         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
9299         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
9300         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
9301         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
9302         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
9303 };
9304 class C2Tuple__u832u16Z {
9305 private:
9306         LDKC2Tuple__u832u16Z self;
9307 public:
9308         C2Tuple__u832u16Z(const C2Tuple__u832u16Z&) = delete;
9309         C2Tuple__u832u16Z(C2Tuple__u832u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple__u832u16Z)); }
9310         C2Tuple__u832u16Z(LDKC2Tuple__u832u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple__u832u16Z)); }
9311         operator LDKC2Tuple__u832u16Z() && { LDKC2Tuple__u832u16Z res = self; memset(&self, 0, sizeof(LDKC2Tuple__u832u16Z)); return res; }
9312         ~C2Tuple__u832u16Z() { C2Tuple__u832u16Z_free(self); }
9313         C2Tuple__u832u16Z& operator=(C2Tuple__u832u16Z&& o) { C2Tuple__u832u16Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple__u832u16Z)); return *this; }
9314         LDKC2Tuple__u832u16Z* operator &() { return &self; }
9315         LDKC2Tuple__u832u16Z* operator ->() { return &self; }
9316         const LDKC2Tuple__u832u16Z* operator &() const { return &self; }
9317         const LDKC2Tuple__u832u16Z* operator ->() const { return &self; }
9318 };
9319 class CResult_PayeePubKeySecp256k1ErrorZ {
9320 private:
9321         LDKCResult_PayeePubKeySecp256k1ErrorZ self;
9322 public:
9323         CResult_PayeePubKeySecp256k1ErrorZ(const CResult_PayeePubKeySecp256k1ErrorZ&) = delete;
9324         CResult_PayeePubKeySecp256k1ErrorZ(CResult_PayeePubKeySecp256k1ErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeySecp256k1ErrorZ)); }
9325         CResult_PayeePubKeySecp256k1ErrorZ(LDKCResult_PayeePubKeySecp256k1ErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeySecp256k1ErrorZ)); }
9326         operator LDKCResult_PayeePubKeySecp256k1ErrorZ() && { LDKCResult_PayeePubKeySecp256k1ErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeySecp256k1ErrorZ)); return res; }
9327         ~CResult_PayeePubKeySecp256k1ErrorZ() { CResult_PayeePubKeySecp256k1ErrorZ_free(self); }
9328         CResult_PayeePubKeySecp256k1ErrorZ& operator=(CResult_PayeePubKeySecp256k1ErrorZ&& o) { CResult_PayeePubKeySecp256k1ErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeySecp256k1ErrorZ)); return *this; }
9329         LDKCResult_PayeePubKeySecp256k1ErrorZ* operator &() { return &self; }
9330         LDKCResult_PayeePubKeySecp256k1ErrorZ* operator ->() { return &self; }
9331         const LDKCResult_PayeePubKeySecp256k1ErrorZ* operator &() const { return &self; }
9332         const LDKCResult_PayeePubKeySecp256k1ErrorZ* operator ->() const { return &self; }
9333 };
9334 class COption_BigEndianScalarZ {
9335 private:
9336         LDKCOption_BigEndianScalarZ self;
9337 public:
9338         COption_BigEndianScalarZ(const COption_BigEndianScalarZ&) = delete;
9339         COption_BigEndianScalarZ(COption_BigEndianScalarZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_BigEndianScalarZ)); }
9340         COption_BigEndianScalarZ(LDKCOption_BigEndianScalarZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_BigEndianScalarZ)); }
9341         operator LDKCOption_BigEndianScalarZ() && { LDKCOption_BigEndianScalarZ res = self; memset(&self, 0, sizeof(LDKCOption_BigEndianScalarZ)); return res; }
9342         ~COption_BigEndianScalarZ() { COption_BigEndianScalarZ_free(self); }
9343         COption_BigEndianScalarZ& operator=(COption_BigEndianScalarZ&& o) { COption_BigEndianScalarZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_BigEndianScalarZ)); return *this; }
9344         LDKCOption_BigEndianScalarZ* operator &() { return &self; }
9345         LDKCOption_BigEndianScalarZ* operator ->() { return &self; }
9346         const LDKCOption_BigEndianScalarZ* operator &() const { return &self; }
9347         const LDKCOption_BigEndianScalarZ* operator ->() const { return &self; }
9348 };
9349 class CVec_ChannelIdZ {
9350 private:
9351         LDKCVec_ChannelIdZ self;
9352 public:
9353         CVec_ChannelIdZ(const CVec_ChannelIdZ&) = delete;
9354         CVec_ChannelIdZ(CVec_ChannelIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelIdZ)); }
9355         CVec_ChannelIdZ(LDKCVec_ChannelIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelIdZ)); }
9356         operator LDKCVec_ChannelIdZ() && { LDKCVec_ChannelIdZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelIdZ)); return res; }
9357         ~CVec_ChannelIdZ() { CVec_ChannelIdZ_free(self); }
9358         CVec_ChannelIdZ& operator=(CVec_ChannelIdZ&& o) { CVec_ChannelIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelIdZ)); return *this; }
9359         LDKCVec_ChannelIdZ* operator &() { return &self; }
9360         LDKCVec_ChannelIdZ* operator ->() { return &self; }
9361         const LDKCVec_ChannelIdZ* operator &() const { return &self; }
9362         const LDKCVec_ChannelIdZ* operator ->() const { return &self; }
9363 };
9364 class CResult_PublicKeySecp256k1ErrorZ {
9365 private:
9366         LDKCResult_PublicKeySecp256k1ErrorZ self;
9367 public:
9368         CResult_PublicKeySecp256k1ErrorZ(const CResult_PublicKeySecp256k1ErrorZ&) = delete;
9369         CResult_PublicKeySecp256k1ErrorZ(CResult_PublicKeySecp256k1ErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeySecp256k1ErrorZ)); }
9370         CResult_PublicKeySecp256k1ErrorZ(LDKCResult_PublicKeySecp256k1ErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeySecp256k1ErrorZ)); }
9371         operator LDKCResult_PublicKeySecp256k1ErrorZ() && { LDKCResult_PublicKeySecp256k1ErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeySecp256k1ErrorZ)); return res; }
9372         ~CResult_PublicKeySecp256k1ErrorZ() { CResult_PublicKeySecp256k1ErrorZ_free(self); }
9373         CResult_PublicKeySecp256k1ErrorZ& operator=(CResult_PublicKeySecp256k1ErrorZ&& o) { CResult_PublicKeySecp256k1ErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeySecp256k1ErrorZ)); return *this; }
9374         LDKCResult_PublicKeySecp256k1ErrorZ* operator &() { return &self; }
9375         LDKCResult_PublicKeySecp256k1ErrorZ* operator ->() { return &self; }
9376         const LDKCResult_PublicKeySecp256k1ErrorZ* operator &() const { return &self; }
9377         const LDKCResult_PublicKeySecp256k1ErrorZ* operator ->() const { return &self; }
9378 };
9379 class CResult_CVec_ECDSASignatureZNoneZ {
9380 private:
9381         LDKCResult_CVec_ECDSASignatureZNoneZ self;
9382 public:
9383         CResult_CVec_ECDSASignatureZNoneZ(const CResult_CVec_ECDSASignatureZNoneZ&) = delete;
9384         CResult_CVec_ECDSASignatureZNoneZ(CResult_CVec_ECDSASignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_ECDSASignatureZNoneZ)); }
9385         CResult_CVec_ECDSASignatureZNoneZ(LDKCResult_CVec_ECDSASignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_ECDSASignatureZNoneZ)); }
9386         operator LDKCResult_CVec_ECDSASignatureZNoneZ() && { LDKCResult_CVec_ECDSASignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_ECDSASignatureZNoneZ)); return res; }
9387         ~CResult_CVec_ECDSASignatureZNoneZ() { CResult_CVec_ECDSASignatureZNoneZ_free(self); }
9388         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; }
9389         LDKCResult_CVec_ECDSASignatureZNoneZ* operator &() { return &self; }
9390         LDKCResult_CVec_ECDSASignatureZNoneZ* operator ->() { return &self; }
9391         const LDKCResult_CVec_ECDSASignatureZNoneZ* operator &() const { return &self; }
9392         const LDKCResult_CVec_ECDSASignatureZNoneZ* operator ->() const { return &self; }
9393 };
9394 class CVec_BlindedHopZ {
9395 private:
9396         LDKCVec_BlindedHopZ self;
9397 public:
9398         CVec_BlindedHopZ(const CVec_BlindedHopZ&) = delete;
9399         CVec_BlindedHopZ(CVec_BlindedHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BlindedHopZ)); }
9400         CVec_BlindedHopZ(LDKCVec_BlindedHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BlindedHopZ)); }
9401         operator LDKCVec_BlindedHopZ() && { LDKCVec_BlindedHopZ res = self; memset(&self, 0, sizeof(LDKCVec_BlindedHopZ)); return res; }
9402         ~CVec_BlindedHopZ() { CVec_BlindedHopZ_free(self); }
9403         CVec_BlindedHopZ& operator=(CVec_BlindedHopZ&& o) { CVec_BlindedHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BlindedHopZ)); return *this; }
9404         LDKCVec_BlindedHopZ* operator &() { return &self; }
9405         LDKCVec_BlindedHopZ* operator ->() { return &self; }
9406         const LDKCVec_BlindedHopZ* operator &() const { return &self; }
9407         const LDKCVec_BlindedHopZ* operator ->() const { return &self; }
9408 };
9409 class CResult_COption_ClosureReasonZDecodeErrorZ {
9410 private:
9411         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
9412 public:
9413         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
9414         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
9415         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
9416         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
9417         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
9418         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; }
9419         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
9420         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
9421         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
9422         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
9423 };
9424 class CResult_InvoiceErrorDecodeErrorZ {
9425 private:
9426         LDKCResult_InvoiceErrorDecodeErrorZ self;
9427 public:
9428         CResult_InvoiceErrorDecodeErrorZ(const CResult_InvoiceErrorDecodeErrorZ&) = delete;
9429         CResult_InvoiceErrorDecodeErrorZ(CResult_InvoiceErrorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceErrorDecodeErrorZ)); }
9430         CResult_InvoiceErrorDecodeErrorZ(LDKCResult_InvoiceErrorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceErrorDecodeErrorZ)); }
9431         operator LDKCResult_InvoiceErrorDecodeErrorZ() && { LDKCResult_InvoiceErrorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceErrorDecodeErrorZ)); return res; }
9432         ~CResult_InvoiceErrorDecodeErrorZ() { CResult_InvoiceErrorDecodeErrorZ_free(self); }
9433         CResult_InvoiceErrorDecodeErrorZ& operator=(CResult_InvoiceErrorDecodeErrorZ&& o) { CResult_InvoiceErrorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceErrorDecodeErrorZ)); return *this; }
9434         LDKCResult_InvoiceErrorDecodeErrorZ* operator &() { return &self; }
9435         LDKCResult_InvoiceErrorDecodeErrorZ* operator ->() { return &self; }
9436         const LDKCResult_InvoiceErrorDecodeErrorZ* operator &() const { return &self; }
9437         const LDKCResult_InvoiceErrorDecodeErrorZ* operator ->() const { return &self; }
9438 };
9439 class C2Tuple_BestBlockOutputSweeperZ {
9440 private:
9441         LDKC2Tuple_BestBlockOutputSweeperZ self;
9442 public:
9443         C2Tuple_BestBlockOutputSweeperZ(const C2Tuple_BestBlockOutputSweeperZ&) = delete;
9444         C2Tuple_BestBlockOutputSweeperZ(C2Tuple_BestBlockOutputSweeperZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BestBlockOutputSweeperZ)); }
9445         C2Tuple_BestBlockOutputSweeperZ(LDKC2Tuple_BestBlockOutputSweeperZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BestBlockOutputSweeperZ)); }
9446         operator LDKC2Tuple_BestBlockOutputSweeperZ() && { LDKC2Tuple_BestBlockOutputSweeperZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BestBlockOutputSweeperZ)); return res; }
9447         ~C2Tuple_BestBlockOutputSweeperZ() { C2Tuple_BestBlockOutputSweeperZ_free(self); }
9448         C2Tuple_BestBlockOutputSweeperZ& operator=(C2Tuple_BestBlockOutputSweeperZ&& o) { C2Tuple_BestBlockOutputSweeperZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BestBlockOutputSweeperZ)); return *this; }
9449         LDKC2Tuple_BestBlockOutputSweeperZ* operator &() { return &self; }
9450         LDKC2Tuple_BestBlockOutputSweeperZ* operator ->() { return &self; }
9451         const LDKC2Tuple_BestBlockOutputSweeperZ* operator &() const { return &self; }
9452         const LDKC2Tuple_BestBlockOutputSweeperZ* operator ->() const { return &self; }
9453 };
9454 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
9455 private:
9456         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
9457 public:
9458         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
9459         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
9460         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
9461         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
9462         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
9463         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
9464         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
9465         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
9466         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
9467         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
9468 };
9469 class CResult_RouteParametersDecodeErrorZ {
9470 private:
9471         LDKCResult_RouteParametersDecodeErrorZ self;
9472 public:
9473         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
9474         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
9475         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
9476         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
9477         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
9478         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
9479         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
9480         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
9481         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
9482         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
9483 };
9484 class CResult_PrivateRouteCreationErrorZ {
9485 private:
9486         LDKCResult_PrivateRouteCreationErrorZ self;
9487 public:
9488         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
9489         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
9490         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
9491         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
9492         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
9493         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
9494         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
9495         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
9496         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
9497         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
9498 };
9499 class CResult_NodeAliasDecodeErrorZ {
9500 private:
9501         LDKCResult_NodeAliasDecodeErrorZ self;
9502 public:
9503         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
9504         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
9505         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
9506         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
9507         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
9508         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
9509         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
9510         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
9511         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
9512         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
9513 };
9514 class CVec_UpdateFulfillHTLCZ {
9515 private:
9516         LDKCVec_UpdateFulfillHTLCZ self;
9517 public:
9518         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
9519         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
9520         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
9521         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
9522         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
9523         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
9524         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
9525         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
9526         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
9527         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
9528 };
9529 class CVec_C2Tuple_u32CVec_u8ZZZ {
9530 private:
9531         LDKCVec_C2Tuple_u32CVec_u8ZZZ self;
9532 public:
9533         CVec_C2Tuple_u32CVec_u8ZZZ(const CVec_C2Tuple_u32CVec_u8ZZZ&) = delete;
9534         CVec_C2Tuple_u32CVec_u8ZZZ(CVec_C2Tuple_u32CVec_u8ZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32CVec_u8ZZZ)); }
9535         CVec_C2Tuple_u32CVec_u8ZZZ(LDKCVec_C2Tuple_u32CVec_u8ZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32CVec_u8ZZZ)); }
9536         operator LDKCVec_C2Tuple_u32CVec_u8ZZZ() && { LDKCVec_C2Tuple_u32CVec_u8ZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32CVec_u8ZZZ)); return res; }
9537         ~CVec_C2Tuple_u32CVec_u8ZZZ() { CVec_C2Tuple_u32CVec_u8ZZZ_free(self); }
9538         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; }
9539         LDKCVec_C2Tuple_u32CVec_u8ZZZ* operator &() { return &self; }
9540         LDKCVec_C2Tuple_u32CVec_u8ZZZ* operator ->() { return &self; }
9541         const LDKCVec_C2Tuple_u32CVec_u8ZZZ* operator &() const { return &self; }
9542         const LDKCVec_C2Tuple_u32CVec_u8ZZZ* operator ->() const { return &self; }
9543 };
9544 class C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ {
9545 private:
9546         LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ self;
9547 public:
9548         C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ(const C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ&) = delete;
9549         C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ(C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ)); }
9550         C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ(LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ)); }
9551         operator LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ() && { LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ)); return res; }
9552         ~C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ() { C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ_free(self); }
9553         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; }
9554         LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ* operator &() { return &self; }
9555         LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ* operator ->() { return &self; }
9556         const LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ* operator &() const { return &self; }
9557         const LDKC3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZ* operator ->() const { return &self; }
9558 };
9559 class CResult_AnnouncementSignaturesDecodeErrorZ {
9560 private:
9561         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
9562 public:
9563         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
9564         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
9565         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
9566         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
9567         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
9568         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
9569         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
9570         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
9571         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
9572         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
9573 };
9574 class CResult_TxCompleteDecodeErrorZ {
9575 private:
9576         LDKCResult_TxCompleteDecodeErrorZ self;
9577 public:
9578         CResult_TxCompleteDecodeErrorZ(const CResult_TxCompleteDecodeErrorZ&) = delete;
9579         CResult_TxCompleteDecodeErrorZ(CResult_TxCompleteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCompleteDecodeErrorZ)); }
9580         CResult_TxCompleteDecodeErrorZ(LDKCResult_TxCompleteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCompleteDecodeErrorZ)); }
9581         operator LDKCResult_TxCompleteDecodeErrorZ() && { LDKCResult_TxCompleteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCompleteDecodeErrorZ)); return res; }
9582         ~CResult_TxCompleteDecodeErrorZ() { CResult_TxCompleteDecodeErrorZ_free(self); }
9583         CResult_TxCompleteDecodeErrorZ& operator=(CResult_TxCompleteDecodeErrorZ&& o) { CResult_TxCompleteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCompleteDecodeErrorZ)); return *this; }
9584         LDKCResult_TxCompleteDecodeErrorZ* operator &() { return &self; }
9585         LDKCResult_TxCompleteDecodeErrorZ* operator ->() { return &self; }
9586         const LDKCResult_TxCompleteDecodeErrorZ* operator &() const { return &self; }
9587         const LDKCResult_TxCompleteDecodeErrorZ* operator ->() const { return &self; }
9588 };
9589 class CResult_UpdateFulfillHTLCDecodeErrorZ {
9590 private:
9591         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
9592 public:
9593         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
9594         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
9595         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
9596         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
9597         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
9598         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
9599         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
9600         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
9601         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
9602         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
9603 };
9604 class CResult_NodeFeaturesDecodeErrorZ {
9605 private:
9606         LDKCResult_NodeFeaturesDecodeErrorZ self;
9607 public:
9608         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
9609         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
9610         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
9611         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
9612         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
9613         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
9614         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
9615         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
9616         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
9617         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
9618 };
9619 class CResult_InMemorySignerDecodeErrorZ {
9620 private:
9621         LDKCResult_InMemorySignerDecodeErrorZ self;
9622 public:
9623         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
9624         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
9625         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
9626         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
9627         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
9628         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
9629         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
9630         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
9631         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
9632         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
9633 };
9634 class CResult_TxSignaturesDecodeErrorZ {
9635 private:
9636         LDKCResult_TxSignaturesDecodeErrorZ self;
9637 public:
9638         CResult_TxSignaturesDecodeErrorZ(const CResult_TxSignaturesDecodeErrorZ&) = delete;
9639         CResult_TxSignaturesDecodeErrorZ(CResult_TxSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxSignaturesDecodeErrorZ)); }
9640         CResult_TxSignaturesDecodeErrorZ(LDKCResult_TxSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxSignaturesDecodeErrorZ)); }
9641         operator LDKCResult_TxSignaturesDecodeErrorZ() && { LDKCResult_TxSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxSignaturesDecodeErrorZ)); return res; }
9642         ~CResult_TxSignaturesDecodeErrorZ() { CResult_TxSignaturesDecodeErrorZ_free(self); }
9643         CResult_TxSignaturesDecodeErrorZ& operator=(CResult_TxSignaturesDecodeErrorZ&& o) { CResult_TxSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxSignaturesDecodeErrorZ)); return *this; }
9644         LDKCResult_TxSignaturesDecodeErrorZ* operator &() { return &self; }
9645         LDKCResult_TxSignaturesDecodeErrorZ* operator ->() { return &self; }
9646         const LDKCResult_TxSignaturesDecodeErrorZ* operator &() const { return &self; }
9647         const LDKCResult_TxSignaturesDecodeErrorZ* operator ->() const { return &self; }
9648 };
9649 class CVec_HTLCDescriptorZ {
9650 private:
9651         LDKCVec_HTLCDescriptorZ self;
9652 public:
9653         CVec_HTLCDescriptorZ(const CVec_HTLCDescriptorZ&) = delete;
9654         CVec_HTLCDescriptorZ(CVec_HTLCDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_HTLCDescriptorZ)); }
9655         CVec_HTLCDescriptorZ(LDKCVec_HTLCDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_HTLCDescriptorZ)); }
9656         operator LDKCVec_HTLCDescriptorZ() && { LDKCVec_HTLCDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_HTLCDescriptorZ)); return res; }
9657         ~CVec_HTLCDescriptorZ() { CVec_HTLCDescriptorZ_free(self); }
9658         CVec_HTLCDescriptorZ& operator=(CVec_HTLCDescriptorZ&& o) { CVec_HTLCDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_HTLCDescriptorZ)); return *this; }
9659         LDKCVec_HTLCDescriptorZ* operator &() { return &self; }
9660         LDKCVec_HTLCDescriptorZ* operator ->() { return &self; }
9661         const LDKCVec_HTLCDescriptorZ* operator &() const { return &self; }
9662         const LDKCVec_HTLCDescriptorZ* operator ->() const { return &self; }
9663 };
9664 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
9665 private:
9666         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
9667 public:
9668         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
9669         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
9670         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
9671         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
9672         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
9673         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
9674         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
9675         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
9676         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
9677         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
9678 };
9679 class COption_PathFailureZ {
9680 private:
9681         LDKCOption_PathFailureZ self;
9682 public:
9683         COption_PathFailureZ(const COption_PathFailureZ&) = delete;
9684         COption_PathFailureZ(COption_PathFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PathFailureZ)); }
9685         COption_PathFailureZ(LDKCOption_PathFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PathFailureZ)); }
9686         operator LDKCOption_PathFailureZ() && { LDKCOption_PathFailureZ res = self; memset(&self, 0, sizeof(LDKCOption_PathFailureZ)); return res; }
9687         ~COption_PathFailureZ() { COption_PathFailureZ_free(self); }
9688         COption_PathFailureZ& operator=(COption_PathFailureZ&& o) { COption_PathFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PathFailureZ)); return *this; }
9689         LDKCOption_PathFailureZ* operator &() { return &self; }
9690         LDKCOption_PathFailureZ* operator ->() { return &self; }
9691         const LDKCOption_PathFailureZ* operator &() const { return &self; }
9692         const LDKCOption_PathFailureZ* operator ->() const { return &self; }
9693 };
9694 class CResult_StrSecp256k1ErrorZ {
9695 private:
9696         LDKCResult_StrSecp256k1ErrorZ self;
9697 public:
9698         CResult_StrSecp256k1ErrorZ(const CResult_StrSecp256k1ErrorZ&) = delete;
9699         CResult_StrSecp256k1ErrorZ(CResult_StrSecp256k1ErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StrSecp256k1ErrorZ)); }
9700         CResult_StrSecp256k1ErrorZ(LDKCResult_StrSecp256k1ErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StrSecp256k1ErrorZ)); }
9701         operator LDKCResult_StrSecp256k1ErrorZ() && { LDKCResult_StrSecp256k1ErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StrSecp256k1ErrorZ)); return res; }
9702         ~CResult_StrSecp256k1ErrorZ() { CResult_StrSecp256k1ErrorZ_free(self); }
9703         CResult_StrSecp256k1ErrorZ& operator=(CResult_StrSecp256k1ErrorZ&& o) { CResult_StrSecp256k1ErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StrSecp256k1ErrorZ)); return *this; }
9704         LDKCResult_StrSecp256k1ErrorZ* operator &() { return &self; }
9705         LDKCResult_StrSecp256k1ErrorZ* operator ->() { return &self; }
9706         const LDKCResult_StrSecp256k1ErrorZ* operator &() const { return &self; }
9707         const LDKCResult_StrSecp256k1ErrorZ* operator ->() const { return &self; }
9708 };
9709 class CVec_ECDSASignatureZ {
9710 private:
9711         LDKCVec_ECDSASignatureZ self;
9712 public:
9713         CVec_ECDSASignatureZ(const CVec_ECDSASignatureZ&) = delete;
9714         CVec_ECDSASignatureZ(CVec_ECDSASignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ECDSASignatureZ)); }
9715         CVec_ECDSASignatureZ(LDKCVec_ECDSASignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ECDSASignatureZ)); }
9716         operator LDKCVec_ECDSASignatureZ() && { LDKCVec_ECDSASignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_ECDSASignatureZ)); return res; }
9717         ~CVec_ECDSASignatureZ() { CVec_ECDSASignatureZ_free(self); }
9718         CVec_ECDSASignatureZ& operator=(CVec_ECDSASignatureZ&& o) { CVec_ECDSASignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ECDSASignatureZ)); return *this; }
9719         LDKCVec_ECDSASignatureZ* operator &() { return &self; }
9720         LDKCVec_ECDSASignatureZ* operator ->() { return &self; }
9721         const LDKCVec_ECDSASignatureZ* operator &() const { return &self; }
9722         const LDKCVec_ECDSASignatureZ* operator ->() const { return &self; }
9723 };
9724 class CResult_ChannelUpdateInfoDecodeErrorZ {
9725 private:
9726         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
9727 public:
9728         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
9729         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
9730         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
9731         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
9732         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
9733         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
9734         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
9735         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
9736         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
9737         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
9738 };
9739 class CVec_UpdateFailHTLCZ {
9740 private:
9741         LDKCVec_UpdateFailHTLCZ self;
9742 public:
9743         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
9744         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
9745         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
9746         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
9747         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
9748         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
9749         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
9750         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
9751         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
9752         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
9753 };
9754 class CVec_TxOutZ {
9755 private:
9756         LDKCVec_TxOutZ self;
9757 public:
9758         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
9759         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
9760         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
9761         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
9762         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
9763         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
9764         LDKCVec_TxOutZ* operator &() { return &self; }
9765         LDKCVec_TxOutZ* operator ->() { return &self; }
9766         const LDKCVec_TxOutZ* operator &() const { return &self; }
9767         const LDKCVec_TxOutZ* operator ->() const { return &self; }
9768 };
9769 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
9770 private:
9771         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
9772 public:
9773         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
9774         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
9775         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
9776         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
9777         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
9778         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
9779         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
9780         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
9781         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
9782         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
9783 };
9784 class CResult_TrackedSpendableOutputDecodeErrorZ {
9785 private:
9786         LDKCResult_TrackedSpendableOutputDecodeErrorZ self;
9787 public:
9788         CResult_TrackedSpendableOutputDecodeErrorZ(const CResult_TrackedSpendableOutputDecodeErrorZ&) = delete;
9789         CResult_TrackedSpendableOutputDecodeErrorZ(CResult_TrackedSpendableOutputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrackedSpendableOutputDecodeErrorZ)); }
9790         CResult_TrackedSpendableOutputDecodeErrorZ(LDKCResult_TrackedSpendableOutputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrackedSpendableOutputDecodeErrorZ)); }
9791         operator LDKCResult_TrackedSpendableOutputDecodeErrorZ() && { LDKCResult_TrackedSpendableOutputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TrackedSpendableOutputDecodeErrorZ)); return res; }
9792         ~CResult_TrackedSpendableOutputDecodeErrorZ() { CResult_TrackedSpendableOutputDecodeErrorZ_free(self); }
9793         CResult_TrackedSpendableOutputDecodeErrorZ& operator=(CResult_TrackedSpendableOutputDecodeErrorZ&& o) { CResult_TrackedSpendableOutputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrackedSpendableOutputDecodeErrorZ)); return *this; }
9794         LDKCResult_TrackedSpendableOutputDecodeErrorZ* operator &() { return &self; }
9795         LDKCResult_TrackedSpendableOutputDecodeErrorZ* operator ->() { return &self; }
9796         const LDKCResult_TrackedSpendableOutputDecodeErrorZ* operator &() const { return &self; }
9797         const LDKCResult_TrackedSpendableOutputDecodeErrorZ* operator ->() const { return &self; }
9798 };
9799 class CVec_SpendableOutputDescriptorZ {
9800 private:
9801         LDKCVec_SpendableOutputDescriptorZ self;
9802 public:
9803         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
9804         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
9805         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
9806         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
9807         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
9808         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
9809         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
9810         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
9811         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
9812         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
9813 };
9814 class C2Tuple_OutPointCVec_u8ZZ {
9815 private:
9816         LDKC2Tuple_OutPointCVec_u8ZZ self;
9817 public:
9818         C2Tuple_OutPointCVec_u8ZZ(const C2Tuple_OutPointCVec_u8ZZ&) = delete;
9819         C2Tuple_OutPointCVec_u8ZZ(C2Tuple_OutPointCVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_u8ZZ)); }
9820         C2Tuple_OutPointCVec_u8ZZ(LDKC2Tuple_OutPointCVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_u8ZZ)); }
9821         operator LDKC2Tuple_OutPointCVec_u8ZZ() && { LDKC2Tuple_OutPointCVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_u8ZZ)); return res; }
9822         ~C2Tuple_OutPointCVec_u8ZZ() { C2Tuple_OutPointCVec_u8ZZ_free(self); }
9823         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; }
9824         LDKC2Tuple_OutPointCVec_u8ZZ* operator &() { return &self; }
9825         LDKC2Tuple_OutPointCVec_u8ZZ* operator ->() { return &self; }
9826         const LDKC2Tuple_OutPointCVec_u8ZZ* operator &() const { return &self; }
9827         const LDKC2Tuple_OutPointCVec_u8ZZ* operator ->() const { return &self; }
9828 };
9829 class CResult_WitnessNoneZ {
9830 private:
9831         LDKCResult_WitnessNoneZ self;
9832 public:
9833         CResult_WitnessNoneZ(const CResult_WitnessNoneZ&) = delete;
9834         CResult_WitnessNoneZ(CResult_WitnessNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WitnessNoneZ)); }
9835         CResult_WitnessNoneZ(LDKCResult_WitnessNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WitnessNoneZ)); }
9836         operator LDKCResult_WitnessNoneZ() && { LDKCResult_WitnessNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_WitnessNoneZ)); return res; }
9837         ~CResult_WitnessNoneZ() { CResult_WitnessNoneZ_free(self); }
9838         CResult_WitnessNoneZ& operator=(CResult_WitnessNoneZ&& o) { CResult_WitnessNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WitnessNoneZ)); return *this; }
9839         LDKCResult_WitnessNoneZ* operator &() { return &self; }
9840         LDKCResult_WitnessNoneZ* operator ->() { return &self; }
9841         const LDKCResult_WitnessNoneZ* operator &() const { return &self; }
9842         const LDKCResult_WitnessNoneZ* operator ->() const { return &self; }
9843 };
9844 class COption_C2Tuple_u64u64ZZ {
9845 private:
9846         LDKCOption_C2Tuple_u64u64ZZ self;
9847 public:
9848         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
9849         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
9850         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
9851         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
9852         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
9853         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; }
9854         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
9855         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
9856         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
9857         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
9858 };
9859 class CResult_ChannelAnnouncementDecodeErrorZ {
9860 private:
9861         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
9862 public:
9863         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
9864         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
9865         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
9866         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
9867         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
9868         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
9869         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
9870         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
9871         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
9872         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
9873 };
9874 class CResult_HTLCUpdateDecodeErrorZ {
9875 private:
9876         LDKCResult_HTLCUpdateDecodeErrorZ self;
9877 public:
9878         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
9879         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
9880         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
9881         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
9882         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
9883         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
9884         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
9885         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
9886         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
9887         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
9888 };
9889 class CResult_TxAddInputDecodeErrorZ {
9890 private:
9891         LDKCResult_TxAddInputDecodeErrorZ self;
9892 public:
9893         CResult_TxAddInputDecodeErrorZ(const CResult_TxAddInputDecodeErrorZ&) = delete;
9894         CResult_TxAddInputDecodeErrorZ(CResult_TxAddInputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAddInputDecodeErrorZ)); }
9895         CResult_TxAddInputDecodeErrorZ(LDKCResult_TxAddInputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAddInputDecodeErrorZ)); }
9896         operator LDKCResult_TxAddInputDecodeErrorZ() && { LDKCResult_TxAddInputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAddInputDecodeErrorZ)); return res; }
9897         ~CResult_TxAddInputDecodeErrorZ() { CResult_TxAddInputDecodeErrorZ_free(self); }
9898         CResult_TxAddInputDecodeErrorZ& operator=(CResult_TxAddInputDecodeErrorZ&& o) { CResult_TxAddInputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAddInputDecodeErrorZ)); return *this; }
9899         LDKCResult_TxAddInputDecodeErrorZ* operator &() { return &self; }
9900         LDKCResult_TxAddInputDecodeErrorZ* operator ->() { return &self; }
9901         const LDKCResult_TxAddInputDecodeErrorZ* operator &() const { return &self; }
9902         const LDKCResult_TxAddInputDecodeErrorZ* operator ->() const { return &self; }
9903 };
9904 class CResult_PeeledOnionNoneZ {
9905 private:
9906         LDKCResult_PeeledOnionNoneZ self;
9907 public:
9908         CResult_PeeledOnionNoneZ(const CResult_PeeledOnionNoneZ&) = delete;
9909         CResult_PeeledOnionNoneZ(CResult_PeeledOnionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PeeledOnionNoneZ)); }
9910         CResult_PeeledOnionNoneZ(LDKCResult_PeeledOnionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PeeledOnionNoneZ)); }
9911         operator LDKCResult_PeeledOnionNoneZ() && { LDKCResult_PeeledOnionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PeeledOnionNoneZ)); return res; }
9912         ~CResult_PeeledOnionNoneZ() { CResult_PeeledOnionNoneZ_free(self); }
9913         CResult_PeeledOnionNoneZ& operator=(CResult_PeeledOnionNoneZ&& o) { CResult_PeeledOnionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PeeledOnionNoneZ)); return *this; }
9914         LDKCResult_PeeledOnionNoneZ* operator &() { return &self; }
9915         LDKCResult_PeeledOnionNoneZ* operator ->() { return &self; }
9916         const LDKCResult_PeeledOnionNoneZ* operator &() const { return &self; }
9917         const LDKCResult_PeeledOnionNoneZ* operator ->() const { return &self; }
9918 };
9919 class CResult_TxInitRbfDecodeErrorZ {
9920 private:
9921         LDKCResult_TxInitRbfDecodeErrorZ self;
9922 public:
9923         CResult_TxInitRbfDecodeErrorZ(const CResult_TxInitRbfDecodeErrorZ&) = delete;
9924         CResult_TxInitRbfDecodeErrorZ(CResult_TxInitRbfDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxInitRbfDecodeErrorZ)); }
9925         CResult_TxInitRbfDecodeErrorZ(LDKCResult_TxInitRbfDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxInitRbfDecodeErrorZ)); }
9926         operator LDKCResult_TxInitRbfDecodeErrorZ() && { LDKCResult_TxInitRbfDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxInitRbfDecodeErrorZ)); return res; }
9927         ~CResult_TxInitRbfDecodeErrorZ() { CResult_TxInitRbfDecodeErrorZ_free(self); }
9928         CResult_TxInitRbfDecodeErrorZ& operator=(CResult_TxInitRbfDecodeErrorZ&& o) { CResult_TxInitRbfDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxInitRbfDecodeErrorZ)); return *this; }
9929         LDKCResult_TxInitRbfDecodeErrorZ* operator &() { return &self; }
9930         LDKCResult_TxInitRbfDecodeErrorZ* operator ->() { return &self; }
9931         const LDKCResult_TxInitRbfDecodeErrorZ* operator &() const { return &self; }
9932         const LDKCResult_TxInitRbfDecodeErrorZ* operator ->() const { return &self; }
9933 };
9934 class COption_WriteableScoreZ {
9935 private:
9936         LDKCOption_WriteableScoreZ self;
9937 public:
9938         COption_WriteableScoreZ(const COption_WriteableScoreZ&) = delete;
9939         COption_WriteableScoreZ(COption_WriteableScoreZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_WriteableScoreZ)); }
9940         COption_WriteableScoreZ(LDKCOption_WriteableScoreZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_WriteableScoreZ)); }
9941         operator LDKCOption_WriteableScoreZ() && { LDKCOption_WriteableScoreZ res = self; memset(&self, 0, sizeof(LDKCOption_WriteableScoreZ)); return res; }
9942         ~COption_WriteableScoreZ() { COption_WriteableScoreZ_free(self); }
9943         COption_WriteableScoreZ& operator=(COption_WriteableScoreZ&& o) { COption_WriteableScoreZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_WriteableScoreZ)); return *this; }
9944         LDKCOption_WriteableScoreZ* operator &() { return &self; }
9945         LDKCOption_WriteableScoreZ* operator ->() { return &self; }
9946         const LDKCOption_WriteableScoreZ* operator &() const { return &self; }
9947         const LDKCOption_WriteableScoreZ* operator ->() const { return &self; }
9948 };
9949 class CVec_StrZ {
9950 private:
9951         LDKCVec_StrZ self;
9952 public:
9953         CVec_StrZ(const CVec_StrZ&) = delete;
9954         CVec_StrZ(CVec_StrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_StrZ)); }
9955         CVec_StrZ(LDKCVec_StrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_StrZ)); }
9956         operator LDKCVec_StrZ() && { LDKCVec_StrZ res = self; memset(&self, 0, sizeof(LDKCVec_StrZ)); return res; }
9957         ~CVec_StrZ() { CVec_StrZ_free(self); }
9958         CVec_StrZ& operator=(CVec_StrZ&& o) { CVec_StrZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_StrZ)); return *this; }
9959         LDKCVec_StrZ* operator &() { return &self; }
9960         LDKCVec_StrZ* operator ->() { return &self; }
9961         const LDKCVec_StrZ* operator &() const { return &self; }
9962         const LDKCVec_StrZ* operator ->() const { return &self; }
9963 };
9964 class CResult_SpliceAckDecodeErrorZ {
9965 private:
9966         LDKCResult_SpliceAckDecodeErrorZ self;
9967 public:
9968         CResult_SpliceAckDecodeErrorZ(const CResult_SpliceAckDecodeErrorZ&) = delete;
9969         CResult_SpliceAckDecodeErrorZ(CResult_SpliceAckDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpliceAckDecodeErrorZ)); }
9970         CResult_SpliceAckDecodeErrorZ(LDKCResult_SpliceAckDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpliceAckDecodeErrorZ)); }
9971         operator LDKCResult_SpliceAckDecodeErrorZ() && { LDKCResult_SpliceAckDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpliceAckDecodeErrorZ)); return res; }
9972         ~CResult_SpliceAckDecodeErrorZ() { CResult_SpliceAckDecodeErrorZ_free(self); }
9973         CResult_SpliceAckDecodeErrorZ& operator=(CResult_SpliceAckDecodeErrorZ&& o) { CResult_SpliceAckDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpliceAckDecodeErrorZ)); return *this; }
9974         LDKCResult_SpliceAckDecodeErrorZ* operator &() { return &self; }
9975         LDKCResult_SpliceAckDecodeErrorZ* operator ->() { return &self; }
9976         const LDKCResult_SpliceAckDecodeErrorZ* operator &() const { return &self; }
9977         const LDKCResult_SpliceAckDecodeErrorZ* operator ->() const { return &self; }
9978 };
9979 class CResult_PositiveTimestampCreationErrorZ {
9980 private:
9981         LDKCResult_PositiveTimestampCreationErrorZ self;
9982 public:
9983         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
9984         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
9985         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
9986         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
9987         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
9988         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
9989         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
9990         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
9991         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
9992         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
9993 };
9994 class CVec_C2Tuple_OutPointChannelIdZZ {
9995 private:
9996         LDKCVec_C2Tuple_OutPointChannelIdZZ self;
9997 public:
9998         CVec_C2Tuple_OutPointChannelIdZZ(const CVec_C2Tuple_OutPointChannelIdZZ&) = delete;
9999         CVec_C2Tuple_OutPointChannelIdZZ(CVec_C2Tuple_OutPointChannelIdZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointChannelIdZZ)); }
10000         CVec_C2Tuple_OutPointChannelIdZZ(LDKCVec_C2Tuple_OutPointChannelIdZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointChannelIdZZ)); }
10001         operator LDKCVec_C2Tuple_OutPointChannelIdZZ() && { LDKCVec_C2Tuple_OutPointChannelIdZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointChannelIdZZ)); return res; }
10002         ~CVec_C2Tuple_OutPointChannelIdZZ() { CVec_C2Tuple_OutPointChannelIdZZ_free(self); }
10003         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; }
10004         LDKCVec_C2Tuple_OutPointChannelIdZZ* operator &() { return &self; }
10005         LDKCVec_C2Tuple_OutPointChannelIdZZ* operator ->() { return &self; }
10006         const LDKCVec_C2Tuple_OutPointChannelIdZZ* operator &() const { return &self; }
10007         const LDKCVec_C2Tuple_OutPointChannelIdZZ* operator ->() const { return &self; }
10008 };
10009 class CResult_ChannelMonitorUpdateDecodeErrorZ {
10010 private:
10011         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
10012 public:
10013         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
10014         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
10015         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
10016         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
10017         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
10018         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
10019         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
10020         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
10021         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
10022         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
10023 };
10024 class C2Tuple_BlindedPayInfoBlindedPathZ {
10025 private:
10026         LDKC2Tuple_BlindedPayInfoBlindedPathZ self;
10027 public:
10028         C2Tuple_BlindedPayInfoBlindedPathZ(const C2Tuple_BlindedPayInfoBlindedPathZ&) = delete;
10029         C2Tuple_BlindedPayInfoBlindedPathZ(C2Tuple_BlindedPayInfoBlindedPathZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlindedPayInfoBlindedPathZ)); }
10030         C2Tuple_BlindedPayInfoBlindedPathZ(LDKC2Tuple_BlindedPayInfoBlindedPathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlindedPayInfoBlindedPathZ)); }
10031         operator LDKC2Tuple_BlindedPayInfoBlindedPathZ() && { LDKC2Tuple_BlindedPayInfoBlindedPathZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlindedPayInfoBlindedPathZ)); return res; }
10032         ~C2Tuple_BlindedPayInfoBlindedPathZ() { C2Tuple_BlindedPayInfoBlindedPathZ_free(self); }
10033         C2Tuple_BlindedPayInfoBlindedPathZ& operator=(C2Tuple_BlindedPayInfoBlindedPathZ&& o) { C2Tuple_BlindedPayInfoBlindedPathZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlindedPayInfoBlindedPathZ)); return *this; }
10034         LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator &() { return &self; }
10035         LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator ->() { return &self; }
10036         const LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator &() const { return &self; }
10037         const LDKC2Tuple_BlindedPayInfoBlindedPathZ* operator ->() const { return &self; }
10038 };
10039 class CResult_ReplyChannelRangeDecodeErrorZ {
10040 private:
10041         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
10042 public:
10043         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
10044         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
10045         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
10046         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
10047         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
10048         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
10049         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
10050         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
10051         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
10052         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
10053 };
10054 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
10055 private:
10056         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
10057 public:
10058         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
10059         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
10060         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
10061         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
10062         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
10063         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
10064         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
10065         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
10066         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
10067         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
10068 };
10069 class CResult_TrustedClosingTransactionNoneZ {
10070 private:
10071         LDKCResult_TrustedClosingTransactionNoneZ self;
10072 public:
10073         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
10074         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
10075         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
10076         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
10077         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
10078         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
10079         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
10080         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
10081         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
10082         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
10083 };
10084 class CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ {
10085 private:
10086         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ self;
10087 public:
10088         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ(const CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ&) = delete;
10089         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ)); }
10090         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ)); }
10091         operator LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ)); return res; }
10092         ~CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ() { CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ_free(self); }
10093         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; }
10094         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ* operator &() { return &self; }
10095         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ* operator ->() { return &self; }
10096         const LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ* operator &() const { return &self; }
10097         const LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZPaymentSendFailureZ* operator ->() const { return &self; }
10098 };
10099 class C2Tuple_PublicKeyTypeZ {
10100 private:
10101         LDKC2Tuple_PublicKeyTypeZ self;
10102 public:
10103         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
10104         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
10105         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
10106         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
10107         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
10108         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
10109         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
10110         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
10111         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
10112         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
10113 };
10114 class CResult_TxRemoveOutputDecodeErrorZ {
10115 private:
10116         LDKCResult_TxRemoveOutputDecodeErrorZ self;
10117 public:
10118         CResult_TxRemoveOutputDecodeErrorZ(const CResult_TxRemoveOutputDecodeErrorZ&) = delete;
10119         CResult_TxRemoveOutputDecodeErrorZ(CResult_TxRemoveOutputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxRemoveOutputDecodeErrorZ)); }
10120         CResult_TxRemoveOutputDecodeErrorZ(LDKCResult_TxRemoveOutputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxRemoveOutputDecodeErrorZ)); }
10121         operator LDKCResult_TxRemoveOutputDecodeErrorZ() && { LDKCResult_TxRemoveOutputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxRemoveOutputDecodeErrorZ)); return res; }
10122         ~CResult_TxRemoveOutputDecodeErrorZ() { CResult_TxRemoveOutputDecodeErrorZ_free(self); }
10123         CResult_TxRemoveOutputDecodeErrorZ& operator=(CResult_TxRemoveOutputDecodeErrorZ&& o) { CResult_TxRemoveOutputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxRemoveOutputDecodeErrorZ)); return *this; }
10124         LDKCResult_TxRemoveOutputDecodeErrorZ* operator &() { return &self; }
10125         LDKCResult_TxRemoveOutputDecodeErrorZ* operator ->() { return &self; }
10126         const LDKCResult_TxRemoveOutputDecodeErrorZ* operator &() const { return &self; }
10127         const LDKCResult_TxRemoveOutputDecodeErrorZ* operator ->() const { return &self; }
10128 };
10129 class CResult_ChannelReestablishDecodeErrorZ {
10130 private:
10131         LDKCResult_ChannelReestablishDecodeErrorZ self;
10132 public:
10133         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
10134         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
10135         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
10136         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
10137         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
10138         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
10139         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
10140         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
10141         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
10142         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
10143 };
10144 class CResult_OnionMessageDecodeErrorZ {
10145 private:
10146         LDKCResult_OnionMessageDecodeErrorZ self;
10147 public:
10148         CResult_OnionMessageDecodeErrorZ(const CResult_OnionMessageDecodeErrorZ&) = delete;
10149         CResult_OnionMessageDecodeErrorZ(CResult_OnionMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); }
10150         CResult_OnionMessageDecodeErrorZ(LDKCResult_OnionMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); }
10151         operator LDKCResult_OnionMessageDecodeErrorZ() && { LDKCResult_OnionMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); return res; }
10152         ~CResult_OnionMessageDecodeErrorZ() { CResult_OnionMessageDecodeErrorZ_free(self); }
10153         CResult_OnionMessageDecodeErrorZ& operator=(CResult_OnionMessageDecodeErrorZ&& o) { CResult_OnionMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); return *this; }
10154         LDKCResult_OnionMessageDecodeErrorZ* operator &() { return &self; }
10155         LDKCResult_OnionMessageDecodeErrorZ* operator ->() { return &self; }
10156         const LDKCResult_OnionMessageDecodeErrorZ* operator &() const { return &self; }
10157         const LDKCResult_OnionMessageDecodeErrorZ* operator ->() const { return &self; }
10158 };
10159 class CResult_Bolt11InvoiceParseOrSemanticErrorZ {
10160 private:
10161         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ self;
10162 public:
10163         CResult_Bolt11InvoiceParseOrSemanticErrorZ(const CResult_Bolt11InvoiceParseOrSemanticErrorZ&) = delete;
10164         CResult_Bolt11InvoiceParseOrSemanticErrorZ(CResult_Bolt11InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceParseOrSemanticErrorZ)); }
10165         CResult_Bolt11InvoiceParseOrSemanticErrorZ(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ)); }
10166         operator LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ() && { LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ)); return res; }
10167         ~CResult_Bolt11InvoiceParseOrSemanticErrorZ() { CResult_Bolt11InvoiceParseOrSemanticErrorZ_free(self); }
10168         CResult_Bolt11InvoiceParseOrSemanticErrorZ& operator=(CResult_Bolt11InvoiceParseOrSemanticErrorZ&& o) { CResult_Bolt11InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceParseOrSemanticErrorZ)); return *this; }
10169         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
10170         LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
10171         const LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
10172         const LDKCResult_Bolt11InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
10173 };
10174 class CResult_InitFeaturesDecodeErrorZ {
10175 private:
10176         LDKCResult_InitFeaturesDecodeErrorZ self;
10177 public:
10178         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
10179         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
10180         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
10181         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
10182         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
10183         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
10184         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
10185         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
10186         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
10187         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
10188 };
10189 class CResult_PublicKeyNoneZ {
10190 private:
10191         LDKCResult_PublicKeyNoneZ self;
10192 public:
10193         CResult_PublicKeyNoneZ(const CResult_PublicKeyNoneZ&) = delete;
10194         CResult_PublicKeyNoneZ(CResult_PublicKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); }
10195         CResult_PublicKeyNoneZ(LDKCResult_PublicKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); }
10196         operator LDKCResult_PublicKeyNoneZ() && { LDKCResult_PublicKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); return res; }
10197         ~CResult_PublicKeyNoneZ() { CResult_PublicKeyNoneZ_free(self); }
10198         CResult_PublicKeyNoneZ& operator=(CResult_PublicKeyNoneZ&& o) { CResult_PublicKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); return *this; }
10199         LDKCResult_PublicKeyNoneZ* operator &() { return &self; }
10200         LDKCResult_PublicKeyNoneZ* operator ->() { return &self; }
10201         const LDKCResult_PublicKeyNoneZ* operator &() const { return &self; }
10202         const LDKCResult_PublicKeyNoneZ* operator ->() const { return &self; }
10203 };
10204 class CResult_PingDecodeErrorZ {
10205 private:
10206         LDKCResult_PingDecodeErrorZ self;
10207 public:
10208         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
10209         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
10210         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
10211         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
10212         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
10213         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
10214         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
10215         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
10216         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
10217         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
10218 };
10219 class CResult_RevocationKeyDecodeErrorZ {
10220 private:
10221         LDKCResult_RevocationKeyDecodeErrorZ self;
10222 public:
10223         CResult_RevocationKeyDecodeErrorZ(const CResult_RevocationKeyDecodeErrorZ&) = delete;
10224         CResult_RevocationKeyDecodeErrorZ(CResult_RevocationKeyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevocationKeyDecodeErrorZ)); }
10225         CResult_RevocationKeyDecodeErrorZ(LDKCResult_RevocationKeyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevocationKeyDecodeErrorZ)); }
10226         operator LDKCResult_RevocationKeyDecodeErrorZ() && { LDKCResult_RevocationKeyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevocationKeyDecodeErrorZ)); return res; }
10227         ~CResult_RevocationKeyDecodeErrorZ() { CResult_RevocationKeyDecodeErrorZ_free(self); }
10228         CResult_RevocationKeyDecodeErrorZ& operator=(CResult_RevocationKeyDecodeErrorZ&& o) { CResult_RevocationKeyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevocationKeyDecodeErrorZ)); return *this; }
10229         LDKCResult_RevocationKeyDecodeErrorZ* operator &() { return &self; }
10230         LDKCResult_RevocationKeyDecodeErrorZ* operator ->() { return &self; }
10231         const LDKCResult_RevocationKeyDecodeErrorZ* operator &() const { return &self; }
10232         const LDKCResult_RevocationKeyDecodeErrorZ* operator ->() const { return &self; }
10233 };
10234 class CResult_ChannelIdDecodeErrorZ {
10235 private:
10236         LDKCResult_ChannelIdDecodeErrorZ self;
10237 public:
10238         CResult_ChannelIdDecodeErrorZ(const CResult_ChannelIdDecodeErrorZ&) = delete;
10239         CResult_ChannelIdDecodeErrorZ(CResult_ChannelIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelIdDecodeErrorZ)); }
10240         CResult_ChannelIdDecodeErrorZ(LDKCResult_ChannelIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelIdDecodeErrorZ)); }
10241         operator LDKCResult_ChannelIdDecodeErrorZ() && { LDKCResult_ChannelIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelIdDecodeErrorZ)); return res; }
10242         ~CResult_ChannelIdDecodeErrorZ() { CResult_ChannelIdDecodeErrorZ_free(self); }
10243         CResult_ChannelIdDecodeErrorZ& operator=(CResult_ChannelIdDecodeErrorZ&& o) { CResult_ChannelIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelIdDecodeErrorZ)); return *this; }
10244         LDKCResult_ChannelIdDecodeErrorZ* operator &() { return &self; }
10245         LDKCResult_ChannelIdDecodeErrorZ* operator ->() { return &self; }
10246         const LDKCResult_ChannelIdDecodeErrorZ* operator &() const { return &self; }
10247         const LDKCResult_ChannelIdDecodeErrorZ* operator ->() const { return &self; }
10248 };
10249 class CResult_BlindedHopFeaturesDecodeErrorZ {
10250 private:
10251         LDKCResult_BlindedHopFeaturesDecodeErrorZ self;
10252 public:
10253         CResult_BlindedHopFeaturesDecodeErrorZ(const CResult_BlindedHopFeaturesDecodeErrorZ&) = delete;
10254         CResult_BlindedHopFeaturesDecodeErrorZ(CResult_BlindedHopFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); }
10255         CResult_BlindedHopFeaturesDecodeErrorZ(LDKCResult_BlindedHopFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); }
10256         operator LDKCResult_BlindedHopFeaturesDecodeErrorZ() && { LDKCResult_BlindedHopFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); return res; }
10257         ~CResult_BlindedHopFeaturesDecodeErrorZ() { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); }
10258         CResult_BlindedHopFeaturesDecodeErrorZ& operator=(CResult_BlindedHopFeaturesDecodeErrorZ&& o) { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); return *this; }
10259         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() { return &self; }
10260         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() { return &self; }
10261         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() const { return &self; }
10262         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() const { return &self; }
10263 };
10264 class CVec_TransactionOutputsZ {
10265 private:
10266         LDKCVec_TransactionOutputsZ self;
10267 public:
10268         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
10269         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
10270         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
10271         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
10272         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
10273         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
10274         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
10275         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
10276         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
10277         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
10278 };
10279 class COption_HTLCClaimZ {
10280 private:
10281         LDKCOption_HTLCClaimZ self;
10282 public:
10283         COption_HTLCClaimZ(const COption_HTLCClaimZ&) = delete;
10284         COption_HTLCClaimZ(COption_HTLCClaimZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCClaimZ)); }
10285         COption_HTLCClaimZ(LDKCOption_HTLCClaimZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCClaimZ)); }
10286         operator LDKCOption_HTLCClaimZ() && { LDKCOption_HTLCClaimZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCClaimZ)); return res; }
10287         ~COption_HTLCClaimZ() { COption_HTLCClaimZ_free(self); }
10288         COption_HTLCClaimZ& operator=(COption_HTLCClaimZ&& o) { COption_HTLCClaimZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCClaimZ)); return *this; }
10289         LDKCOption_HTLCClaimZ* operator &() { return &self; }
10290         LDKCOption_HTLCClaimZ* operator ->() { return &self; }
10291         const LDKCOption_HTLCClaimZ* operator &() const { return &self; }
10292         const LDKCOption_HTLCClaimZ* operator ->() const { return &self; }
10293 };
10294 class COption_boolZ {
10295 private:
10296         LDKCOption_boolZ self;
10297 public:
10298         COption_boolZ(const COption_boolZ&) = delete;
10299         COption_boolZ(COption_boolZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_boolZ)); }
10300         COption_boolZ(LDKCOption_boolZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_boolZ)); }
10301         operator LDKCOption_boolZ() && { LDKCOption_boolZ res = self; memset(&self, 0, sizeof(LDKCOption_boolZ)); return res; }
10302         ~COption_boolZ() { COption_boolZ_free(self); }
10303         COption_boolZ& operator=(COption_boolZ&& o) { COption_boolZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_boolZ)); return *this; }
10304         LDKCOption_boolZ* operator &() { return &self; }
10305         LDKCOption_boolZ* operator ->() { return &self; }
10306         const LDKCOption_boolZ* operator &() const { return &self; }
10307         const LDKCOption_boolZ* operator ->() const { return &self; }
10308 };
10309 class COption_StrZ {
10310 private:
10311         LDKCOption_StrZ self;
10312 public:
10313         COption_StrZ(const COption_StrZ&) = delete;
10314         COption_StrZ(COption_StrZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_StrZ)); }
10315         COption_StrZ(LDKCOption_StrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_StrZ)); }
10316         operator LDKCOption_StrZ() && { LDKCOption_StrZ res = self; memset(&self, 0, sizeof(LDKCOption_StrZ)); return res; }
10317         ~COption_StrZ() { COption_StrZ_free(self); }
10318         COption_StrZ& operator=(COption_StrZ&& o) { COption_StrZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_StrZ)); return *this; }
10319         LDKCOption_StrZ* operator &() { return &self; }
10320         LDKCOption_StrZ* operator ->() { return &self; }
10321         const LDKCOption_StrZ* operator &() const { return &self; }
10322         const LDKCOption_StrZ* operator ->() const { return &self; }
10323 };
10324 class CResult_ProbabilisticScorerDecodeErrorZ {
10325 private:
10326         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
10327 public:
10328         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
10329         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
10330         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
10331         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
10332         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
10333         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
10334         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
10335         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
10336         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
10337         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
10338 };
10339 class CResult_ShutdownScriptDecodeErrorZ {
10340 private:
10341         LDKCResult_ShutdownScriptDecodeErrorZ self;
10342 public:
10343         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
10344         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
10345         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
10346         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
10347         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
10348         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
10349         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
10350         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
10351         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
10352         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
10353 };
10354 class CResult_SiPrefixBolt11ParseErrorZ {
10355 private:
10356         LDKCResult_SiPrefixBolt11ParseErrorZ self;
10357 public:
10358         CResult_SiPrefixBolt11ParseErrorZ(const CResult_SiPrefixBolt11ParseErrorZ&) = delete;
10359         CResult_SiPrefixBolt11ParseErrorZ(CResult_SiPrefixBolt11ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixBolt11ParseErrorZ)); }
10360         CResult_SiPrefixBolt11ParseErrorZ(LDKCResult_SiPrefixBolt11ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixBolt11ParseErrorZ)); }
10361         operator LDKCResult_SiPrefixBolt11ParseErrorZ() && { LDKCResult_SiPrefixBolt11ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixBolt11ParseErrorZ)); return res; }
10362         ~CResult_SiPrefixBolt11ParseErrorZ() { CResult_SiPrefixBolt11ParseErrorZ_free(self); }
10363         CResult_SiPrefixBolt11ParseErrorZ& operator=(CResult_SiPrefixBolt11ParseErrorZ&& o) { CResult_SiPrefixBolt11ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixBolt11ParseErrorZ)); return *this; }
10364         LDKCResult_SiPrefixBolt11ParseErrorZ* operator &() { return &self; }
10365         LDKCResult_SiPrefixBolt11ParseErrorZ* operator ->() { return &self; }
10366         const LDKCResult_SiPrefixBolt11ParseErrorZ* operator &() const { return &self; }
10367         const LDKCResult_SiPrefixBolt11ParseErrorZ* operator ->() const { return &self; }
10368 };
10369 class C2Tuple_usizeTransactionZ {
10370 private:
10371         LDKC2Tuple_usizeTransactionZ self;
10372 public:
10373         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
10374         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
10375         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
10376         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
10377         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
10378         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
10379         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
10380         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
10381         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
10382         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
10383 };
10384 class CResult_NodeAnnouncementDecodeErrorZ {
10385 private:
10386         LDKCResult_NodeAnnouncementDecodeErrorZ self;
10387 public:
10388         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
10389         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
10390         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
10391         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
10392         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
10393         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
10394         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
10395         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
10396         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
10397         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
10398 };
10399 class CVec_FutureZ {
10400 private:
10401         LDKCVec_FutureZ self;
10402 public:
10403         CVec_FutureZ(const CVec_FutureZ&) = delete;
10404         CVec_FutureZ(CVec_FutureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_FutureZ)); }
10405         CVec_FutureZ(LDKCVec_FutureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_FutureZ)); }
10406         operator LDKCVec_FutureZ() && { LDKCVec_FutureZ res = self; memset(&self, 0, sizeof(LDKCVec_FutureZ)); return res; }
10407         ~CVec_FutureZ() { CVec_FutureZ_free(self); }
10408         CVec_FutureZ& operator=(CVec_FutureZ&& o) { CVec_FutureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_FutureZ)); return *this; }
10409         LDKCVec_FutureZ* operator &() { return &self; }
10410         LDKCVec_FutureZ* operator ->() { return &self; }
10411         const LDKCVec_FutureZ* operator &() const { return &self; }
10412         const LDKCVec_FutureZ* operator ->() const { return &self; }
10413 };
10414 class CVec_ChannelMonitorZ {
10415 private:
10416         LDKCVec_ChannelMonitorZ self;
10417 public:
10418         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
10419         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
10420         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
10421         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
10422         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
10423         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
10424         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
10425         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
10426         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
10427         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
10428 };
10429 class CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ {
10430 private:
10431         LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ self;
10432 public:
10433         CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ(const CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ&) = delete;
10434         CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ(CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ)); }
10435         CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ(LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ)); }
10436         operator LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ() && { LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ)); return res; }
10437         ~CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ() { CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ_free(self); }
10438         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; }
10439         LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ* operator &() { return &self; }
10440         LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ* operator ->() { return &self; }
10441         const LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ* operator &() const { return &self; }
10442         const LDKCVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ* operator ->() const { return &self; }
10443 };
10444 class CResult_AcceptChannelV2DecodeErrorZ {
10445 private:
10446         LDKCResult_AcceptChannelV2DecodeErrorZ self;
10447 public:
10448         CResult_AcceptChannelV2DecodeErrorZ(const CResult_AcceptChannelV2DecodeErrorZ&) = delete;
10449         CResult_AcceptChannelV2DecodeErrorZ(CResult_AcceptChannelV2DecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelV2DecodeErrorZ)); }
10450         CResult_AcceptChannelV2DecodeErrorZ(LDKCResult_AcceptChannelV2DecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelV2DecodeErrorZ)); }
10451         operator LDKCResult_AcceptChannelV2DecodeErrorZ() && { LDKCResult_AcceptChannelV2DecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelV2DecodeErrorZ)); return res; }
10452         ~CResult_AcceptChannelV2DecodeErrorZ() { CResult_AcceptChannelV2DecodeErrorZ_free(self); }
10453         CResult_AcceptChannelV2DecodeErrorZ& operator=(CResult_AcceptChannelV2DecodeErrorZ&& o) { CResult_AcceptChannelV2DecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelV2DecodeErrorZ)); return *this; }
10454         LDKCResult_AcceptChannelV2DecodeErrorZ* operator &() { return &self; }
10455         LDKCResult_AcceptChannelV2DecodeErrorZ* operator ->() { return &self; }
10456         const LDKCResult_AcceptChannelV2DecodeErrorZ* operator &() const { return &self; }
10457         const LDKCResult_AcceptChannelV2DecodeErrorZ* operator ->() const { return &self; }
10458 };
10459 class CResult_RouteHopDecodeErrorZ {
10460 private:
10461         LDKCResult_RouteHopDecodeErrorZ self;
10462 public:
10463         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
10464         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
10465         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
10466         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
10467         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
10468         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
10469         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
10470         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
10471         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
10472         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
10473 };
10474 class CResult_OfferIdDecodeErrorZ {
10475 private:
10476         LDKCResult_OfferIdDecodeErrorZ self;
10477 public:
10478         CResult_OfferIdDecodeErrorZ(const CResult_OfferIdDecodeErrorZ&) = delete;
10479         CResult_OfferIdDecodeErrorZ(CResult_OfferIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OfferIdDecodeErrorZ)); }
10480         CResult_OfferIdDecodeErrorZ(LDKCResult_OfferIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OfferIdDecodeErrorZ)); }
10481         operator LDKCResult_OfferIdDecodeErrorZ() && { LDKCResult_OfferIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OfferIdDecodeErrorZ)); return res; }
10482         ~CResult_OfferIdDecodeErrorZ() { CResult_OfferIdDecodeErrorZ_free(self); }
10483         CResult_OfferIdDecodeErrorZ& operator=(CResult_OfferIdDecodeErrorZ&& o) { CResult_OfferIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OfferIdDecodeErrorZ)); return *this; }
10484         LDKCResult_OfferIdDecodeErrorZ* operator &() { return &self; }
10485         LDKCResult_OfferIdDecodeErrorZ* operator ->() { return &self; }
10486         const LDKCResult_OfferIdDecodeErrorZ* operator &() const { return &self; }
10487         const LDKCResult_OfferIdDecodeErrorZ* operator ->() const { return &self; }
10488 };
10489 class CVec_HTLCOutputInCommitmentZ {
10490 private:
10491         LDKCVec_HTLCOutputInCommitmentZ self;
10492 public:
10493         CVec_HTLCOutputInCommitmentZ(const CVec_HTLCOutputInCommitmentZ&) = delete;
10494         CVec_HTLCOutputInCommitmentZ(CVec_HTLCOutputInCommitmentZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_HTLCOutputInCommitmentZ)); }
10495         CVec_HTLCOutputInCommitmentZ(LDKCVec_HTLCOutputInCommitmentZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_HTLCOutputInCommitmentZ)); }
10496         operator LDKCVec_HTLCOutputInCommitmentZ() && { LDKCVec_HTLCOutputInCommitmentZ res = self; memset(&self, 0, sizeof(LDKCVec_HTLCOutputInCommitmentZ)); return res; }
10497         ~CVec_HTLCOutputInCommitmentZ() { CVec_HTLCOutputInCommitmentZ_free(self); }
10498         CVec_HTLCOutputInCommitmentZ& operator=(CVec_HTLCOutputInCommitmentZ&& o) { CVec_HTLCOutputInCommitmentZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_HTLCOutputInCommitmentZ)); return *this; }
10499         LDKCVec_HTLCOutputInCommitmentZ* operator &() { return &self; }
10500         LDKCVec_HTLCOutputInCommitmentZ* operator ->() { return &self; }
10501         const LDKCVec_HTLCOutputInCommitmentZ* operator &() const { return &self; }
10502         const LDKCVec_HTLCOutputInCommitmentZ* operator ->() const { return &self; }
10503 };
10504 class CResult_CoinSelectionNoneZ {
10505 private:
10506         LDKCResult_CoinSelectionNoneZ self;
10507 public:
10508         CResult_CoinSelectionNoneZ(const CResult_CoinSelectionNoneZ&) = delete;
10509         CResult_CoinSelectionNoneZ(CResult_CoinSelectionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CoinSelectionNoneZ)); }
10510         CResult_CoinSelectionNoneZ(LDKCResult_CoinSelectionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CoinSelectionNoneZ)); }
10511         operator LDKCResult_CoinSelectionNoneZ() && { LDKCResult_CoinSelectionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CoinSelectionNoneZ)); return res; }
10512         ~CResult_CoinSelectionNoneZ() { CResult_CoinSelectionNoneZ_free(self); }
10513         CResult_CoinSelectionNoneZ& operator=(CResult_CoinSelectionNoneZ&& o) { CResult_CoinSelectionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CoinSelectionNoneZ)); return *this; }
10514         LDKCResult_CoinSelectionNoneZ* operator &() { return &self; }
10515         LDKCResult_CoinSelectionNoneZ* operator ->() { return &self; }
10516         const LDKCResult_CoinSelectionNoneZ* operator &() const { return &self; }
10517         const LDKCResult_CoinSelectionNoneZ* operator ->() const { return &self; }
10518 };
10519 class CResult_TxCreationKeysDecodeErrorZ {
10520 private:
10521         LDKCResult_TxCreationKeysDecodeErrorZ self;
10522 public:
10523         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
10524         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
10525         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
10526         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
10527         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
10528         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
10529         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
10530         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
10531         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
10532         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
10533 };
10534 class CResult_BlindedPathDecodeErrorZ {
10535 private:
10536         LDKCResult_BlindedPathDecodeErrorZ self;
10537 public:
10538         CResult_BlindedPathDecodeErrorZ(const CResult_BlindedPathDecodeErrorZ&) = delete;
10539         CResult_BlindedPathDecodeErrorZ(CResult_BlindedPathDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); }
10540         CResult_BlindedPathDecodeErrorZ(LDKCResult_BlindedPathDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); }
10541         operator LDKCResult_BlindedPathDecodeErrorZ() && { LDKCResult_BlindedPathDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); return res; }
10542         ~CResult_BlindedPathDecodeErrorZ() { CResult_BlindedPathDecodeErrorZ_free(self); }
10543         CResult_BlindedPathDecodeErrorZ& operator=(CResult_BlindedPathDecodeErrorZ&& o) { CResult_BlindedPathDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); return *this; }
10544         LDKCResult_BlindedPathDecodeErrorZ* operator &() { return &self; }
10545         LDKCResult_BlindedPathDecodeErrorZ* operator ->() { return &self; }
10546         const LDKCResult_BlindedPathDecodeErrorZ* operator &() const { return &self; }
10547         const LDKCResult_BlindedPathDecodeErrorZ* operator ->() const { return &self; }
10548 };
10549 class CResult_RefundBolt12SemanticErrorZ {
10550 private:
10551         LDKCResult_RefundBolt12SemanticErrorZ self;
10552 public:
10553         CResult_RefundBolt12SemanticErrorZ(const CResult_RefundBolt12SemanticErrorZ&) = delete;
10554         CResult_RefundBolt12SemanticErrorZ(CResult_RefundBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RefundBolt12SemanticErrorZ)); }
10555         CResult_RefundBolt12SemanticErrorZ(LDKCResult_RefundBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RefundBolt12SemanticErrorZ)); }
10556         operator LDKCResult_RefundBolt12SemanticErrorZ() && { LDKCResult_RefundBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RefundBolt12SemanticErrorZ)); return res; }
10557         ~CResult_RefundBolt12SemanticErrorZ() { CResult_RefundBolt12SemanticErrorZ_free(self); }
10558         CResult_RefundBolt12SemanticErrorZ& operator=(CResult_RefundBolt12SemanticErrorZ&& o) { CResult_RefundBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RefundBolt12SemanticErrorZ)); return *this; }
10559         LDKCResult_RefundBolt12SemanticErrorZ* operator &() { return &self; }
10560         LDKCResult_RefundBolt12SemanticErrorZ* operator ->() { return &self; }
10561         const LDKCResult_RefundBolt12SemanticErrorZ* operator &() const { return &self; }
10562         const LDKCResult_RefundBolt12SemanticErrorZ* operator ->() const { return &self; }
10563 };
10564 class CResult_NoneIOErrorZ {
10565 private:
10566         LDKCResult_NoneIOErrorZ self;
10567 public:
10568         CResult_NoneIOErrorZ(const CResult_NoneIOErrorZ&) = delete;
10569         CResult_NoneIOErrorZ(CResult_NoneIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneIOErrorZ)); }
10570         CResult_NoneIOErrorZ(LDKCResult_NoneIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneIOErrorZ)); }
10571         operator LDKCResult_NoneIOErrorZ() && { LDKCResult_NoneIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneIOErrorZ)); return res; }
10572         ~CResult_NoneIOErrorZ() { CResult_NoneIOErrorZ_free(self); }
10573         CResult_NoneIOErrorZ& operator=(CResult_NoneIOErrorZ&& o) { CResult_NoneIOErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneIOErrorZ)); return *this; }
10574         LDKCResult_NoneIOErrorZ* operator &() { return &self; }
10575         LDKCResult_NoneIOErrorZ* operator ->() { return &self; }
10576         const LDKCResult_NoneIOErrorZ* operator &() const { return &self; }
10577         const LDKCResult_NoneIOErrorZ* operator ->() const { return &self; }
10578 };
10579 class CResult_MaxDustHTLCExposureDecodeErrorZ {
10580 private:
10581         LDKCResult_MaxDustHTLCExposureDecodeErrorZ self;
10582 public:
10583         CResult_MaxDustHTLCExposureDecodeErrorZ(const CResult_MaxDustHTLCExposureDecodeErrorZ&) = delete;
10584         CResult_MaxDustHTLCExposureDecodeErrorZ(CResult_MaxDustHTLCExposureDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_MaxDustHTLCExposureDecodeErrorZ)); }
10585         CResult_MaxDustHTLCExposureDecodeErrorZ(LDKCResult_MaxDustHTLCExposureDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_MaxDustHTLCExposureDecodeErrorZ)); }
10586         operator LDKCResult_MaxDustHTLCExposureDecodeErrorZ() && { LDKCResult_MaxDustHTLCExposureDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_MaxDustHTLCExposureDecodeErrorZ)); return res; }
10587         ~CResult_MaxDustHTLCExposureDecodeErrorZ() { CResult_MaxDustHTLCExposureDecodeErrorZ_free(self); }
10588         CResult_MaxDustHTLCExposureDecodeErrorZ& operator=(CResult_MaxDustHTLCExposureDecodeErrorZ&& o) { CResult_MaxDustHTLCExposureDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_MaxDustHTLCExposureDecodeErrorZ)); return *this; }
10589         LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator &() { return &self; }
10590         LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator ->() { return &self; }
10591         const LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator &() const { return &self; }
10592         const LDKCResult_MaxDustHTLCExposureDecodeErrorZ* operator ->() const { return &self; }
10593 };
10594 class CVec_BalanceZ {
10595 private:
10596         LDKCVec_BalanceZ self;
10597 public:
10598         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
10599         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
10600         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
10601         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
10602         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
10603         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
10604         LDKCVec_BalanceZ* operator &() { return &self; }
10605         LDKCVec_BalanceZ* operator ->() { return &self; }
10606         const LDKCVec_BalanceZ* operator &() const { return &self; }
10607         const LDKCVec_BalanceZ* operator ->() const { return &self; }
10608 };
10609 class CVec_CommitmentTransactionZ {
10610 private:
10611         LDKCVec_CommitmentTransactionZ self;
10612 public:
10613         CVec_CommitmentTransactionZ(const CVec_CommitmentTransactionZ&) = delete;
10614         CVec_CommitmentTransactionZ(CVec_CommitmentTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CommitmentTransactionZ)); }
10615         CVec_CommitmentTransactionZ(LDKCVec_CommitmentTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CommitmentTransactionZ)); }
10616         operator LDKCVec_CommitmentTransactionZ() && { LDKCVec_CommitmentTransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_CommitmentTransactionZ)); return res; }
10617         ~CVec_CommitmentTransactionZ() { CVec_CommitmentTransactionZ_free(self); }
10618         CVec_CommitmentTransactionZ& operator=(CVec_CommitmentTransactionZ&& o) { CVec_CommitmentTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_CommitmentTransactionZ)); return *this; }
10619         LDKCVec_CommitmentTransactionZ* operator &() { return &self; }
10620         LDKCVec_CommitmentTransactionZ* operator ->() { return &self; }
10621         const LDKCVec_CommitmentTransactionZ* operator &() const { return &self; }
10622         const LDKCVec_CommitmentTransactionZ* operator ->() const { return &self; }
10623 };
10624 class CResult_FundingSignedDecodeErrorZ {
10625 private:
10626         LDKCResult_FundingSignedDecodeErrorZ self;
10627 public:
10628         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
10629         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
10630         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
10631         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
10632         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
10633         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
10634         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
10635         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
10636         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
10637         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
10638 };
10639 class CResult_RecoverableSignatureNoneZ {
10640 private:
10641         LDKCResult_RecoverableSignatureNoneZ self;
10642 public:
10643         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
10644         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
10645         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
10646         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
10647         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
10648         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
10649         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
10650         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
10651         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
10652         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
10653 };
10654 class CResult_SocketAddressDecodeErrorZ {
10655 private:
10656         LDKCResult_SocketAddressDecodeErrorZ self;
10657 public:
10658         CResult_SocketAddressDecodeErrorZ(const CResult_SocketAddressDecodeErrorZ&) = delete;
10659         CResult_SocketAddressDecodeErrorZ(CResult_SocketAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SocketAddressDecodeErrorZ)); }
10660         CResult_SocketAddressDecodeErrorZ(LDKCResult_SocketAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SocketAddressDecodeErrorZ)); }
10661         operator LDKCResult_SocketAddressDecodeErrorZ() && { LDKCResult_SocketAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SocketAddressDecodeErrorZ)); return res; }
10662         ~CResult_SocketAddressDecodeErrorZ() { CResult_SocketAddressDecodeErrorZ_free(self); }
10663         CResult_SocketAddressDecodeErrorZ& operator=(CResult_SocketAddressDecodeErrorZ&& o) { CResult_SocketAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SocketAddressDecodeErrorZ)); return *this; }
10664         LDKCResult_SocketAddressDecodeErrorZ* operator &() { return &self; }
10665         LDKCResult_SocketAddressDecodeErrorZ* operator ->() { return &self; }
10666         const LDKCResult_SocketAddressDecodeErrorZ* operator &() const { return &self; }
10667         const LDKCResult_SocketAddressDecodeErrorZ* operator ->() const { return &self; }
10668 };
10669 class C2Tuple_Z {
10670 private:
10671         LDKC2Tuple_Z self;
10672 public:
10673         C2Tuple_Z(const C2Tuple_Z&) = delete;
10674         C2Tuple_Z(C2Tuple_Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_Z)); }
10675         C2Tuple_Z(LDKC2Tuple_Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_Z)); }
10676         operator LDKC2Tuple_Z() && { LDKC2Tuple_Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_Z)); return res; }
10677         ~C2Tuple_Z() { C2Tuple_Z_free(self); }
10678         C2Tuple_Z& operator=(C2Tuple_Z&& o) { C2Tuple_Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_Z)); return *this; }
10679         LDKC2Tuple_Z* operator &() { return &self; }
10680         LDKC2Tuple_Z* operator ->() { return &self; }
10681         const LDKC2Tuple_Z* operator &() const { return &self; }
10682         const LDKC2Tuple_Z* operator ->() const { return &self; }
10683 };
10684 class C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ {
10685 private:
10686         LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ self;
10687 public:
10688         C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ(const C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ&) = delete;
10689         C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ(C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ)); }
10690         C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ(LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ)); }
10691         operator LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ() && { LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ)); return res; }
10692         ~C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ() { C2Tuple_ECDSASignatureCVec_ECDSASignatureZZ_free(self); }
10693         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; }
10694         LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ* operator &() { return &self; }
10695         LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ* operator ->() { return &self; }
10696         const LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ* operator &() const { return &self; }
10697         const LDKC2Tuple_ECDSASignatureCVec_ECDSASignatureZZ* operator ->() const { return &self; }
10698 };
10699 class CVec_PathZ {
10700 private:
10701         LDKCVec_PathZ self;
10702 public:
10703         CVec_PathZ(const CVec_PathZ&) = delete;
10704         CVec_PathZ(CVec_PathZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PathZ)); }
10705         CVec_PathZ(LDKCVec_PathZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PathZ)); }
10706         operator LDKCVec_PathZ() && { LDKCVec_PathZ res = self; memset(&self, 0, sizeof(LDKCVec_PathZ)); return res; }
10707         ~CVec_PathZ() { CVec_PathZ_free(self); }
10708         CVec_PathZ& operator=(CVec_PathZ&& o) { CVec_PathZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PathZ)); return *this; }
10709         LDKCVec_PathZ* operator &() { return &self; }
10710         LDKCVec_PathZ* operator ->() { return &self; }
10711         const LDKCVec_PathZ* operator &() const { return &self; }
10712         const LDKCVec_PathZ* operator ->() const { return &self; }
10713 };
10714 class CResult_NetworkGraphDecodeErrorZ {
10715 private:
10716         LDKCResult_NetworkGraphDecodeErrorZ self;
10717 public:
10718         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
10719         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
10720         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
10721         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
10722         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
10723         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
10724         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
10725         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
10726         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
10727         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
10728 };
10729 class CResult_NodeInfoDecodeErrorZ {
10730 private:
10731         LDKCResult_NodeInfoDecodeErrorZ self;
10732 public:
10733         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
10734         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
10735         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
10736         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
10737         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
10738         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
10739         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
10740         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
10741         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
10742         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
10743 };
10744 class CVec_NodeIdZ {
10745 private:
10746         LDKCVec_NodeIdZ self;
10747 public:
10748         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
10749         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
10750         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
10751         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
10752         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
10753         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
10754         LDKCVec_NodeIdZ* operator &() { return &self; }
10755         LDKCVec_NodeIdZ* operator ->() { return &self; }
10756         const LDKCVec_NodeIdZ* operator &() const { return &self; }
10757         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
10758 };
10759 class CVec_u8Z {
10760 private:
10761         LDKCVec_u8Z self;
10762 public:
10763         CVec_u8Z(const CVec_u8Z&) = delete;
10764         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
10765         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
10766         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
10767         ~CVec_u8Z() { CVec_u8Z_free(self); }
10768         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
10769         LDKCVec_u8Z* operator &() { return &self; }
10770         LDKCVec_u8Z* operator ->() { return &self; }
10771         const LDKCVec_u8Z* operator &() const { return &self; }
10772         const LDKCVec_u8Z* operator ->() const { return &self; }
10773 };
10774 class CResult_RouteLightningErrorZ {
10775 private:
10776         LDKCResult_RouteLightningErrorZ self;
10777 public:
10778         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
10779         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
10780         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
10781         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
10782         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
10783         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
10784         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
10785         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
10786         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
10787         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
10788 };
10789 class CResult_NonePaymentSendFailureZ {
10790 private:
10791         LDKCResult_NonePaymentSendFailureZ self;
10792 public:
10793         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
10794         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
10795         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
10796         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
10797         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
10798         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
10799         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
10800         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
10801         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
10802         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
10803 };
10804 class CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ {
10805 private:
10806         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ self;
10807 public:
10808         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ&) = delete;
10809         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ)); }
10810         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ)); }
10811         operator LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ)); return res; }
10812         ~CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ_free(self); }
10813         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; }
10814         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ* operator &() { return &self; }
10815         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
10816         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
10817         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
10818 };
10819 class CResult_ChannelPublicKeysDecodeErrorZ {
10820 private:
10821         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
10822 public:
10823         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
10824         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
10825         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
10826         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
10827         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
10828         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
10829         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
10830         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
10831         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
10832         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
10833 };
10834 class CVec_ClaimedHTLCZ {
10835 private:
10836         LDKCVec_ClaimedHTLCZ self;
10837 public:
10838         CVec_ClaimedHTLCZ(const CVec_ClaimedHTLCZ&) = delete;
10839         CVec_ClaimedHTLCZ(CVec_ClaimedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ClaimedHTLCZ)); }
10840         CVec_ClaimedHTLCZ(LDKCVec_ClaimedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ClaimedHTLCZ)); }
10841         operator LDKCVec_ClaimedHTLCZ() && { LDKCVec_ClaimedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_ClaimedHTLCZ)); return res; }
10842         ~CVec_ClaimedHTLCZ() { CVec_ClaimedHTLCZ_free(self); }
10843         CVec_ClaimedHTLCZ& operator=(CVec_ClaimedHTLCZ&& o) { CVec_ClaimedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ClaimedHTLCZ)); return *this; }
10844         LDKCVec_ClaimedHTLCZ* operator &() { return &self; }
10845         LDKCVec_ClaimedHTLCZ* operator ->() { return &self; }
10846         const LDKCVec_ClaimedHTLCZ* operator &() const { return &self; }
10847         const LDKCVec_ClaimedHTLCZ* operator ->() const { return &self; }
10848 };
10849 class COption_CVec_ThirtyTwoBytesZZ {
10850 private:
10851         LDKCOption_CVec_ThirtyTwoBytesZZ self;
10852 public:
10853         COption_CVec_ThirtyTwoBytesZZ(const COption_CVec_ThirtyTwoBytesZZ&) = delete;
10854         COption_CVec_ThirtyTwoBytesZZ(COption_CVec_ThirtyTwoBytesZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_ThirtyTwoBytesZZ)); }
10855         COption_CVec_ThirtyTwoBytesZZ(LDKCOption_CVec_ThirtyTwoBytesZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_ThirtyTwoBytesZZ)); }
10856         operator LDKCOption_CVec_ThirtyTwoBytesZZ() && { LDKCOption_CVec_ThirtyTwoBytesZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_ThirtyTwoBytesZZ)); return res; }
10857         ~COption_CVec_ThirtyTwoBytesZZ() { COption_CVec_ThirtyTwoBytesZZ_free(self); }
10858         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; }
10859         LDKCOption_CVec_ThirtyTwoBytesZZ* operator &() { return &self; }
10860         LDKCOption_CVec_ThirtyTwoBytesZZ* operator ->() { return &self; }
10861         const LDKCOption_CVec_ThirtyTwoBytesZZ* operator &() const { return &self; }
10862         const LDKCOption_CVec_ThirtyTwoBytesZZ* operator ->() const { return &self; }
10863 };
10864 class CVec_SocketAddressZ {
10865 private:
10866         LDKCVec_SocketAddressZ self;
10867 public:
10868         CVec_SocketAddressZ(const CVec_SocketAddressZ&) = delete;
10869         CVec_SocketAddressZ(CVec_SocketAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SocketAddressZ)); }
10870         CVec_SocketAddressZ(LDKCVec_SocketAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SocketAddressZ)); }
10871         operator LDKCVec_SocketAddressZ() && { LDKCVec_SocketAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_SocketAddressZ)); return res; }
10872         ~CVec_SocketAddressZ() { CVec_SocketAddressZ_free(self); }
10873         CVec_SocketAddressZ& operator=(CVec_SocketAddressZ&& o) { CVec_SocketAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SocketAddressZ)); return *this; }
10874         LDKCVec_SocketAddressZ* operator &() { return &self; }
10875         LDKCVec_SocketAddressZ* operator ->() { return &self; }
10876         const LDKCVec_SocketAddressZ* operator &() const { return &self; }
10877         const LDKCVec_SocketAddressZ* operator ->() const { return &self; }
10878 };
10879 class CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ {
10880 private:
10881         LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ self;
10882 public:
10883         CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ(const CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ&) = delete;
10884         CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ(CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ)); }
10885         CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ(LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ)); }
10886         operator LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ() && { LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ)); return res; }
10887         ~CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ() { CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ_free(self); }
10888         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; }
10889         LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ* operator &() { return &self; }
10890         LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ* operator ->() { return &self; }
10891         const LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ* operator &() const { return &self; }
10892         const LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ* operator ->() const { return &self; }
10893 };
10894 class CResult_ThirtyTwoBytesPaymentSendFailureZ {
10895 private:
10896         LDKCResult_ThirtyTwoBytesPaymentSendFailureZ self;
10897 public:
10898         CResult_ThirtyTwoBytesPaymentSendFailureZ(const CResult_ThirtyTwoBytesPaymentSendFailureZ&) = delete;
10899         CResult_ThirtyTwoBytesPaymentSendFailureZ(CResult_ThirtyTwoBytesPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ThirtyTwoBytesPaymentSendFailureZ)); }
10900         CResult_ThirtyTwoBytesPaymentSendFailureZ(LDKCResult_ThirtyTwoBytesPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ThirtyTwoBytesPaymentSendFailureZ)); }
10901         operator LDKCResult_ThirtyTwoBytesPaymentSendFailureZ() && { LDKCResult_ThirtyTwoBytesPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_ThirtyTwoBytesPaymentSendFailureZ)); return res; }
10902         ~CResult_ThirtyTwoBytesPaymentSendFailureZ() { CResult_ThirtyTwoBytesPaymentSendFailureZ_free(self); }
10903         CResult_ThirtyTwoBytesPaymentSendFailureZ& operator=(CResult_ThirtyTwoBytesPaymentSendFailureZ&& o) { CResult_ThirtyTwoBytesPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ThirtyTwoBytesPaymentSendFailureZ)); return *this; }
10904         LDKCResult_ThirtyTwoBytesPaymentSendFailureZ* operator &() { return &self; }
10905         LDKCResult_ThirtyTwoBytesPaymentSendFailureZ* operator ->() { return &self; }
10906         const LDKCResult_ThirtyTwoBytesPaymentSendFailureZ* operator &() const { return &self; }
10907         const LDKCResult_ThirtyTwoBytesPaymentSendFailureZ* operator ->() const { return &self; }
10908 };
10909 class CResult_WarningMessageDecodeErrorZ {
10910 private:
10911         LDKCResult_WarningMessageDecodeErrorZ self;
10912 public:
10913         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
10914         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
10915         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
10916         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
10917         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
10918         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
10919         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
10920         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
10921         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
10922         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
10923 };
10924 class CResult_ChannelCounterpartyDecodeErrorZ {
10925 private:
10926         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
10927 public:
10928         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
10929         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
10930         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
10931         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
10932         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
10933         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
10934         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
10935         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
10936         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
10937         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
10938 };
10939 class CResult_HolderCommitmentTransactionDecodeErrorZ {
10940 private:
10941         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
10942 public:
10943         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
10944         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
10945         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
10946         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
10947         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
10948         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
10949         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
10950         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
10951         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
10952         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
10953 };
10954 class CVec_ForwardNodeZ {
10955 private:
10956         LDKCVec_ForwardNodeZ self;
10957 public:
10958         CVec_ForwardNodeZ(const CVec_ForwardNodeZ&) = delete;
10959         CVec_ForwardNodeZ(CVec_ForwardNodeZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ForwardNodeZ)); }
10960         CVec_ForwardNodeZ(LDKCVec_ForwardNodeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ForwardNodeZ)); }
10961         operator LDKCVec_ForwardNodeZ() && { LDKCVec_ForwardNodeZ res = self; memset(&self, 0, sizeof(LDKCVec_ForwardNodeZ)); return res; }
10962         ~CVec_ForwardNodeZ() { CVec_ForwardNodeZ_free(self); }
10963         CVec_ForwardNodeZ& operator=(CVec_ForwardNodeZ&& o) { CVec_ForwardNodeZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ForwardNodeZ)); return *this; }
10964         LDKCVec_ForwardNodeZ* operator &() { return &self; }
10965         LDKCVec_ForwardNodeZ* operator ->() { return &self; }
10966         const LDKCVec_ForwardNodeZ* operator &() const { return &self; }
10967         const LDKCVec_ForwardNodeZ* operator ->() const { return &self; }
10968 };
10969 class CResult_DelayedPaymentKeyDecodeErrorZ {
10970 private:
10971         LDKCResult_DelayedPaymentKeyDecodeErrorZ self;
10972 public:
10973         CResult_DelayedPaymentKeyDecodeErrorZ(const CResult_DelayedPaymentKeyDecodeErrorZ&) = delete;
10974         CResult_DelayedPaymentKeyDecodeErrorZ(CResult_DelayedPaymentKeyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentKeyDecodeErrorZ)); }
10975         CResult_DelayedPaymentKeyDecodeErrorZ(LDKCResult_DelayedPaymentKeyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentKeyDecodeErrorZ)); }
10976         operator LDKCResult_DelayedPaymentKeyDecodeErrorZ() && { LDKCResult_DelayedPaymentKeyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentKeyDecodeErrorZ)); return res; }
10977         ~CResult_DelayedPaymentKeyDecodeErrorZ() { CResult_DelayedPaymentKeyDecodeErrorZ_free(self); }
10978         CResult_DelayedPaymentKeyDecodeErrorZ& operator=(CResult_DelayedPaymentKeyDecodeErrorZ&& o) { CResult_DelayedPaymentKeyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentKeyDecodeErrorZ)); return *this; }
10979         LDKCResult_DelayedPaymentKeyDecodeErrorZ* operator &() { return &self; }
10980         LDKCResult_DelayedPaymentKeyDecodeErrorZ* operator ->() { return &self; }
10981         const LDKCResult_DelayedPaymentKeyDecodeErrorZ* operator &() const { return &self; }
10982         const LDKCResult_DelayedPaymentKeyDecodeErrorZ* operator ->() const { return &self; }
10983 };
10984 class CResult_InitDecodeErrorZ {
10985 private:
10986         LDKCResult_InitDecodeErrorZ self;
10987 public:
10988         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
10989         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
10990         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
10991         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
10992         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
10993         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
10994         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
10995         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
10996         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
10997         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
10998 };
10999 class CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ {
11000 private:
11001         LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ self;
11002 public:
11003         CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ(const CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ&) = delete;
11004         CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ(CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ)); }
11005         CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ)); }
11006         operator LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ)); return res; }
11007         ~CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ() { CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ_free(self); }
11008         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; }
11009         LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ* operator &() { return &self; }
11010         LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ* operator ->() { return &self; }
11011         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ* operator &() const { return &self; }
11012         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
11013 };
11014 class CResult_SpliceDecodeErrorZ {
11015 private:
11016         LDKCResult_SpliceDecodeErrorZ self;
11017 public:
11018         CResult_SpliceDecodeErrorZ(const CResult_SpliceDecodeErrorZ&) = delete;
11019         CResult_SpliceDecodeErrorZ(CResult_SpliceDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpliceDecodeErrorZ)); }
11020         CResult_SpliceDecodeErrorZ(LDKCResult_SpliceDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpliceDecodeErrorZ)); }
11021         operator LDKCResult_SpliceDecodeErrorZ() && { LDKCResult_SpliceDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpliceDecodeErrorZ)); return res; }
11022         ~CResult_SpliceDecodeErrorZ() { CResult_SpliceDecodeErrorZ_free(self); }
11023         CResult_SpliceDecodeErrorZ& operator=(CResult_SpliceDecodeErrorZ&& o) { CResult_SpliceDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpliceDecodeErrorZ)); return *this; }
11024         LDKCResult_SpliceDecodeErrorZ* operator &() { return &self; }
11025         LDKCResult_SpliceDecodeErrorZ* operator ->() { return &self; }
11026         const LDKCResult_SpliceDecodeErrorZ* operator &() const { return &self; }
11027         const LDKCResult_SpliceDecodeErrorZ* operator ->() const { return &self; }
11028 };
11029 class CResult_PaymentPurposeDecodeErrorZ {
11030 private:
11031         LDKCResult_PaymentPurposeDecodeErrorZ self;
11032 public:
11033         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
11034         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
11035         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
11036         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
11037         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
11038         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
11039         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
11040         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
11041         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
11042         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
11043 };
11044 class CResult_ClaimedHTLCDecodeErrorZ {
11045 private:
11046         LDKCResult_ClaimedHTLCDecodeErrorZ self;
11047 public:
11048         CResult_ClaimedHTLCDecodeErrorZ(const CResult_ClaimedHTLCDecodeErrorZ&) = delete;
11049         CResult_ClaimedHTLCDecodeErrorZ(CResult_ClaimedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClaimedHTLCDecodeErrorZ)); }
11050         CResult_ClaimedHTLCDecodeErrorZ(LDKCResult_ClaimedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClaimedHTLCDecodeErrorZ)); }
11051         operator LDKCResult_ClaimedHTLCDecodeErrorZ() && { LDKCResult_ClaimedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClaimedHTLCDecodeErrorZ)); return res; }
11052         ~CResult_ClaimedHTLCDecodeErrorZ() { CResult_ClaimedHTLCDecodeErrorZ_free(self); }
11053         CResult_ClaimedHTLCDecodeErrorZ& operator=(CResult_ClaimedHTLCDecodeErrorZ&& o) { CResult_ClaimedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClaimedHTLCDecodeErrorZ)); return *this; }
11054         LDKCResult_ClaimedHTLCDecodeErrorZ* operator &() { return &self; }
11055         LDKCResult_ClaimedHTLCDecodeErrorZ* operator ->() { return &self; }
11056         const LDKCResult_ClaimedHTLCDecodeErrorZ* operator &() const { return &self; }
11057         const LDKCResult_ClaimedHTLCDecodeErrorZ* operator ->() const { return &self; }
11058 };
11059 class C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ {
11060 private:
11061         LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ self;
11062 public:
11063         C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ(const C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ&) = delete;
11064         C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ(C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ)); }
11065         C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ(LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ)); }
11066         operator LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ() && { LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ)); return res; }
11067         ~C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ() { C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ_free(self); }
11068         C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ& operator=(C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ&& o) { C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ)); return *this; }
11069         LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ* operator &() { return &self; }
11070         LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ* operator ->() { return &self; }
11071         const LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ* operator &() const { return &self; }
11072         const LDKC3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZ* operator ->() const { return &self; }
11073 };
11074 class CResult_OutPointDecodeErrorZ {
11075 private:
11076         LDKCResult_OutPointDecodeErrorZ self;
11077 public:
11078         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
11079         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
11080         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
11081         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
11082         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
11083         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
11084         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
11085         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
11086         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
11087         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
11088 };
11089 class CVec_ChannelDetailsZ {
11090 private:
11091         LDKCVec_ChannelDetailsZ self;
11092 public:
11093         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
11094         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
11095         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
11096         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
11097         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
11098         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
11099         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
11100         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
11101         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
11102         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
11103 };
11104 class CVec_MonitorUpdateIdZ {
11105 private:
11106         LDKCVec_MonitorUpdateIdZ self;
11107 public:
11108         CVec_MonitorUpdateIdZ(const CVec_MonitorUpdateIdZ&) = delete;
11109         CVec_MonitorUpdateIdZ(CVec_MonitorUpdateIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); }
11110         CVec_MonitorUpdateIdZ(LDKCVec_MonitorUpdateIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); }
11111         operator LDKCVec_MonitorUpdateIdZ() && { LDKCVec_MonitorUpdateIdZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); return res; }
11112         ~CVec_MonitorUpdateIdZ() { CVec_MonitorUpdateIdZ_free(self); }
11113         CVec_MonitorUpdateIdZ& operator=(CVec_MonitorUpdateIdZ&& o) { CVec_MonitorUpdateIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); return *this; }
11114         LDKCVec_MonitorUpdateIdZ* operator &() { return &self; }
11115         LDKCVec_MonitorUpdateIdZ* operator ->() { return &self; }
11116         const LDKCVec_MonitorUpdateIdZ* operator &() const { return &self; }
11117         const LDKCVec_MonitorUpdateIdZ* operator ->() const { return &self; }
11118 };
11119 class CResult_Bolt11InvoiceFeaturesDecodeErrorZ {
11120 private:
11121         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ self;
11122 public:
11123         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(const CResult_Bolt11InvoiceFeaturesDecodeErrorZ&) = delete;
11124         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(CResult_Bolt11InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt11InvoiceFeaturesDecodeErrorZ)); }
11125         CResult_Bolt11InvoiceFeaturesDecodeErrorZ(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ)); }
11126         operator LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ() && { LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ)); return res; }
11127         ~CResult_Bolt11InvoiceFeaturesDecodeErrorZ() { CResult_Bolt11InvoiceFeaturesDecodeErrorZ_free(self); }
11128         CResult_Bolt11InvoiceFeaturesDecodeErrorZ& operator=(CResult_Bolt11InvoiceFeaturesDecodeErrorZ&& o) { CResult_Bolt11InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt11InvoiceFeaturesDecodeErrorZ)); return *this; }
11129         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
11130         LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
11131         const LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
11132         const LDKCResult_Bolt11InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
11133 };
11134 class CVec_MessageSendEventZ {
11135 private:
11136         LDKCVec_MessageSendEventZ self;
11137 public:
11138         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
11139         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
11140         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
11141         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
11142         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
11143         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
11144         LDKCVec_MessageSendEventZ* operator &() { return &self; }
11145         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
11146         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
11147         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
11148 };
11149 class CResult_RouteHintHopDecodeErrorZ {
11150 private:
11151         LDKCResult_RouteHintHopDecodeErrorZ self;
11152 public:
11153         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
11154         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
11155         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
11156         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
11157         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
11158         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
11159         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
11160         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
11161         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
11162         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
11163 };
11164 class CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ {
11165 private:
11166         LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ self;
11167 public:
11168         CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ(const CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ&) = delete;
11169         CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ(CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ)); }
11170         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)); }
11171         operator LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ() && { LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ)); return res; }
11172         ~CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ() { CResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ_free(self); }
11173         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; }
11174         LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ* operator &() { return &self; }
11175         LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ* operator ->() { return &self; }
11176         const LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ* operator &() const { return &self; }
11177         const LDKCResult_C3Tuple_PublicKeyOnionMessageCOption_CVec_SocketAddressZZZSendErrorZ* operator ->() const { return &self; }
11178 };
11179 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
11180 private:
11181         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
11182 public:
11183         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
11184         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
11185         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
11186         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
11187         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
11188         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
11189         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
11190         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
11191         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
11192         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
11193 };
11194 class CResult_BlindedPayInfoDecodeErrorZ {
11195 private:
11196         LDKCResult_BlindedPayInfoDecodeErrorZ self;
11197 public:
11198         CResult_BlindedPayInfoDecodeErrorZ(const CResult_BlindedPayInfoDecodeErrorZ&) = delete;
11199         CResult_BlindedPayInfoDecodeErrorZ(CResult_BlindedPayInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPayInfoDecodeErrorZ)); }
11200         CResult_BlindedPayInfoDecodeErrorZ(LDKCResult_BlindedPayInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPayInfoDecodeErrorZ)); }
11201         operator LDKCResult_BlindedPayInfoDecodeErrorZ() && { LDKCResult_BlindedPayInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPayInfoDecodeErrorZ)); return res; }
11202         ~CResult_BlindedPayInfoDecodeErrorZ() { CResult_BlindedPayInfoDecodeErrorZ_free(self); }
11203         CResult_BlindedPayInfoDecodeErrorZ& operator=(CResult_BlindedPayInfoDecodeErrorZ&& o) { CResult_BlindedPayInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPayInfoDecodeErrorZ)); return *this; }
11204         LDKCResult_BlindedPayInfoDecodeErrorZ* operator &() { return &self; }
11205         LDKCResult_BlindedPayInfoDecodeErrorZ* operator ->() { return &self; }
11206         const LDKCResult_BlindedPayInfoDecodeErrorZ* operator &() const { return &self; }
11207         const LDKCResult_BlindedPayInfoDecodeErrorZ* operator ->() const { return &self; }
11208 };
11209 class CResult_ThirtyTwoBytesAPIErrorZ {
11210 private:
11211         LDKCResult_ThirtyTwoBytesAPIErrorZ self;
11212 public:
11213         CResult_ThirtyTwoBytesAPIErrorZ(const CResult_ThirtyTwoBytesAPIErrorZ&) = delete;
11214         CResult_ThirtyTwoBytesAPIErrorZ(CResult_ThirtyTwoBytesAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ThirtyTwoBytesAPIErrorZ)); }
11215         CResult_ThirtyTwoBytesAPIErrorZ(LDKCResult_ThirtyTwoBytesAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ThirtyTwoBytesAPIErrorZ)); }
11216         operator LDKCResult_ThirtyTwoBytesAPIErrorZ() && { LDKCResult_ThirtyTwoBytesAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ThirtyTwoBytesAPIErrorZ)); return res; }
11217         ~CResult_ThirtyTwoBytesAPIErrorZ() { CResult_ThirtyTwoBytesAPIErrorZ_free(self); }
11218         CResult_ThirtyTwoBytesAPIErrorZ& operator=(CResult_ThirtyTwoBytesAPIErrorZ&& o) { CResult_ThirtyTwoBytesAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ThirtyTwoBytesAPIErrorZ)); return *this; }
11219         LDKCResult_ThirtyTwoBytesAPIErrorZ* operator &() { return &self; }
11220         LDKCResult_ThirtyTwoBytesAPIErrorZ* operator ->() { return &self; }
11221         const LDKCResult_ThirtyTwoBytesAPIErrorZ* operator &() const { return &self; }
11222         const LDKCResult_ThirtyTwoBytesAPIErrorZ* operator ->() const { return &self; }
11223 };
11224 class COption_ChannelShutdownStateZ {
11225 private:
11226         LDKCOption_ChannelShutdownStateZ self;
11227 public:
11228         COption_ChannelShutdownStateZ(const COption_ChannelShutdownStateZ&) = delete;
11229         COption_ChannelShutdownStateZ(COption_ChannelShutdownStateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ChannelShutdownStateZ)); }
11230         COption_ChannelShutdownStateZ(LDKCOption_ChannelShutdownStateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ChannelShutdownStateZ)); }
11231         operator LDKCOption_ChannelShutdownStateZ() && { LDKCOption_ChannelShutdownStateZ res = self; memset(&self, 0, sizeof(LDKCOption_ChannelShutdownStateZ)); return res; }
11232         ~COption_ChannelShutdownStateZ() { COption_ChannelShutdownStateZ_free(self); }
11233         COption_ChannelShutdownStateZ& operator=(COption_ChannelShutdownStateZ&& o) { COption_ChannelShutdownStateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ChannelShutdownStateZ)); return *this; }
11234         LDKCOption_ChannelShutdownStateZ* operator &() { return &self; }
11235         LDKCOption_ChannelShutdownStateZ* operator ->() { return &self; }
11236         const LDKCOption_ChannelShutdownStateZ* operator &() const { return &self; }
11237         const LDKCOption_ChannelShutdownStateZ* operator ->() const { return &self; }
11238 };
11239 class CResult_Bolt12InvoiceBolt12SemanticErrorZ {
11240 private:
11241         LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ self;
11242 public:
11243         CResult_Bolt12InvoiceBolt12SemanticErrorZ(const CResult_Bolt12InvoiceBolt12SemanticErrorZ&) = delete;
11244         CResult_Bolt12InvoiceBolt12SemanticErrorZ(CResult_Bolt12InvoiceBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12InvoiceBolt12SemanticErrorZ)); }
11245         CResult_Bolt12InvoiceBolt12SemanticErrorZ(LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ)); }
11246         operator LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ() && { LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ)); return res; }
11247         ~CResult_Bolt12InvoiceBolt12SemanticErrorZ() { CResult_Bolt12InvoiceBolt12SemanticErrorZ_free(self); }
11248         CResult_Bolt12InvoiceBolt12SemanticErrorZ& operator=(CResult_Bolt12InvoiceBolt12SemanticErrorZ&& o) { CResult_Bolt12InvoiceBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12InvoiceBolt12SemanticErrorZ)); return *this; }
11249         LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ* operator &() { return &self; }
11250         LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ* operator ->() { return &self; }
11251         const LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ* operator &() const { return &self; }
11252         const LDKCResult_Bolt12InvoiceBolt12SemanticErrorZ* operator ->() const { return &self; }
11253 };
11254 class CResult_InvoiceRequestFieldsDecodeErrorZ {
11255 private:
11256         LDKCResult_InvoiceRequestFieldsDecodeErrorZ self;
11257 public:
11258         CResult_InvoiceRequestFieldsDecodeErrorZ(const CResult_InvoiceRequestFieldsDecodeErrorZ&) = delete;
11259         CResult_InvoiceRequestFieldsDecodeErrorZ(CResult_InvoiceRequestFieldsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestFieldsDecodeErrorZ)); }
11260         CResult_InvoiceRequestFieldsDecodeErrorZ(LDKCResult_InvoiceRequestFieldsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestFieldsDecodeErrorZ)); }
11261         operator LDKCResult_InvoiceRequestFieldsDecodeErrorZ() && { LDKCResult_InvoiceRequestFieldsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestFieldsDecodeErrorZ)); return res; }
11262         ~CResult_InvoiceRequestFieldsDecodeErrorZ() { CResult_InvoiceRequestFieldsDecodeErrorZ_free(self); }
11263         CResult_InvoiceRequestFieldsDecodeErrorZ& operator=(CResult_InvoiceRequestFieldsDecodeErrorZ&& o) { CResult_InvoiceRequestFieldsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestFieldsDecodeErrorZ)); return *this; }
11264         LDKCResult_InvoiceRequestFieldsDecodeErrorZ* operator &() { return &self; }
11265         LDKCResult_InvoiceRequestFieldsDecodeErrorZ* operator ->() { return &self; }
11266         const LDKCResult_InvoiceRequestFieldsDecodeErrorZ* operator &() const { return &self; }
11267         const LDKCResult_InvoiceRequestFieldsDecodeErrorZ* operator ->() const { return &self; }
11268 };
11269 class CResult_AcceptChannelDecodeErrorZ {
11270 private:
11271         LDKCResult_AcceptChannelDecodeErrorZ self;
11272 public:
11273         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
11274         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
11275         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
11276         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
11277         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
11278         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
11279         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
11280         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
11281         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
11282         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
11283 };
11284 class CResult_HostnameDecodeErrorZ {
11285 private:
11286         LDKCResult_HostnameDecodeErrorZ self;
11287 public:
11288         CResult_HostnameDecodeErrorZ(const CResult_HostnameDecodeErrorZ&) = delete;
11289         CResult_HostnameDecodeErrorZ(CResult_HostnameDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HostnameDecodeErrorZ)); }
11290         CResult_HostnameDecodeErrorZ(LDKCResult_HostnameDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HostnameDecodeErrorZ)); }
11291         operator LDKCResult_HostnameDecodeErrorZ() && { LDKCResult_HostnameDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HostnameDecodeErrorZ)); return res; }
11292         ~CResult_HostnameDecodeErrorZ() { CResult_HostnameDecodeErrorZ_free(self); }
11293         CResult_HostnameDecodeErrorZ& operator=(CResult_HostnameDecodeErrorZ&& o) { CResult_HostnameDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HostnameDecodeErrorZ)); return *this; }
11294         LDKCResult_HostnameDecodeErrorZ* operator &() { return &self; }
11295         LDKCResult_HostnameDecodeErrorZ* operator ->() { return &self; }
11296         const LDKCResult_HostnameDecodeErrorZ* operator &() const { return &self; }
11297         const LDKCResult_HostnameDecodeErrorZ* operator ->() const { return &self; }
11298 };
11299 class C2Tuple_u64u16Z {
11300 private:
11301         LDKC2Tuple_u64u16Z self;
11302 public:
11303         C2Tuple_u64u16Z(const C2Tuple_u64u16Z&) = delete;
11304         C2Tuple_u64u16Z(C2Tuple_u64u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u16Z)); }
11305         C2Tuple_u64u16Z(LDKC2Tuple_u64u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u16Z)); }
11306         operator LDKC2Tuple_u64u16Z() && { LDKC2Tuple_u64u16Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u16Z)); return res; }
11307         ~C2Tuple_u64u16Z() { C2Tuple_u64u16Z_free(self); }
11308         C2Tuple_u64u16Z& operator=(C2Tuple_u64u16Z&& o) { C2Tuple_u64u16Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u16Z)); return *this; }
11309         LDKC2Tuple_u64u16Z* operator &() { return &self; }
11310         LDKC2Tuple_u64u16Z* operator ->() { return &self; }
11311         const LDKC2Tuple_u64u16Z* operator &() const { return &self; }
11312         const LDKC2Tuple_u64u16Z* operator ->() const { return &self; }
11313 };
11314 class COption_ThirtyTwoBytesZ {
11315 private:
11316         LDKCOption_ThirtyTwoBytesZ self;
11317 public:
11318         COption_ThirtyTwoBytesZ(const COption_ThirtyTwoBytesZ&) = delete;
11319         COption_ThirtyTwoBytesZ(COption_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ThirtyTwoBytesZ)); }
11320         COption_ThirtyTwoBytesZ(LDKCOption_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ThirtyTwoBytesZ)); }
11321         operator LDKCOption_ThirtyTwoBytesZ() && { LDKCOption_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCOption_ThirtyTwoBytesZ)); return res; }
11322         ~COption_ThirtyTwoBytesZ() { COption_ThirtyTwoBytesZ_free(self); }
11323         COption_ThirtyTwoBytesZ& operator=(COption_ThirtyTwoBytesZ&& o) { COption_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ThirtyTwoBytesZ)); return *this; }
11324         LDKCOption_ThirtyTwoBytesZ* operator &() { return &self; }
11325         LDKCOption_ThirtyTwoBytesZ* operator ->() { return &self; }
11326         const LDKCOption_ThirtyTwoBytesZ* operator &() const { return &self; }
11327         const LDKCOption_ThirtyTwoBytesZ* operator ->() const { return &self; }
11328 };
11329 class CVec_u64Z {
11330 private:
11331         LDKCVec_u64Z self;
11332 public:
11333         CVec_u64Z(const CVec_u64Z&) = delete;
11334         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
11335         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
11336         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
11337         ~CVec_u64Z() { CVec_u64Z_free(self); }
11338         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
11339         LDKCVec_u64Z* operator &() { return &self; }
11340         LDKCVec_u64Z* operator ->() { return &self; }
11341         const LDKCVec_u64Z* operator &() const { return &self; }
11342         const LDKCVec_u64Z* operator ->() const { return &self; }
11343 };
11344 class CResult_NoneBolt12SemanticErrorZ {
11345 private:
11346         LDKCResult_NoneBolt12SemanticErrorZ self;
11347 public:
11348         CResult_NoneBolt12SemanticErrorZ(const CResult_NoneBolt12SemanticErrorZ&) = delete;
11349         CResult_NoneBolt12SemanticErrorZ(CResult_NoneBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneBolt12SemanticErrorZ)); }
11350         CResult_NoneBolt12SemanticErrorZ(LDKCResult_NoneBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneBolt12SemanticErrorZ)); }
11351         operator LDKCResult_NoneBolt12SemanticErrorZ() && { LDKCResult_NoneBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneBolt12SemanticErrorZ)); return res; }
11352         ~CResult_NoneBolt12SemanticErrorZ() { CResult_NoneBolt12SemanticErrorZ_free(self); }
11353         CResult_NoneBolt12SemanticErrorZ& operator=(CResult_NoneBolt12SemanticErrorZ&& o) { CResult_NoneBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneBolt12SemanticErrorZ)); return *this; }
11354         LDKCResult_NoneBolt12SemanticErrorZ* operator &() { return &self; }
11355         LDKCResult_NoneBolt12SemanticErrorZ* operator ->() { return &self; }
11356         const LDKCResult_NoneBolt12SemanticErrorZ* operator &() const { return &self; }
11357         const LDKCResult_NoneBolt12SemanticErrorZ* operator ->() const { return &self; }
11358 };
11359 class COption_SecretKeyZ {
11360 private:
11361         LDKCOption_SecretKeyZ self;
11362 public:
11363         COption_SecretKeyZ(const COption_SecretKeyZ&) = delete;
11364         COption_SecretKeyZ(COption_SecretKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_SecretKeyZ)); }
11365         COption_SecretKeyZ(LDKCOption_SecretKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_SecretKeyZ)); }
11366         operator LDKCOption_SecretKeyZ() && { LDKCOption_SecretKeyZ res = self; memset(&self, 0, sizeof(LDKCOption_SecretKeyZ)); return res; }
11367         ~COption_SecretKeyZ() { COption_SecretKeyZ_free(self); }
11368         COption_SecretKeyZ& operator=(COption_SecretKeyZ&& o) { COption_SecretKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_SecretKeyZ)); return *this; }
11369         LDKCOption_SecretKeyZ* operator &() { return &self; }
11370         LDKCOption_SecretKeyZ* operator ->() { return &self; }
11371         const LDKCOption_SecretKeyZ* operator &() const { return &self; }
11372         const LDKCOption_SecretKeyZ* operator ->() const { return &self; }
11373 };
11374 class CResult_UnknownPaymentContextDecodeErrorZ {
11375 private:
11376         LDKCResult_UnknownPaymentContextDecodeErrorZ self;
11377 public:
11378         CResult_UnknownPaymentContextDecodeErrorZ(const CResult_UnknownPaymentContextDecodeErrorZ&) = delete;
11379         CResult_UnknownPaymentContextDecodeErrorZ(CResult_UnknownPaymentContextDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnknownPaymentContextDecodeErrorZ)); }
11380         CResult_UnknownPaymentContextDecodeErrorZ(LDKCResult_UnknownPaymentContextDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnknownPaymentContextDecodeErrorZ)); }
11381         operator LDKCResult_UnknownPaymentContextDecodeErrorZ() && { LDKCResult_UnknownPaymentContextDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnknownPaymentContextDecodeErrorZ)); return res; }
11382         ~CResult_UnknownPaymentContextDecodeErrorZ() { CResult_UnknownPaymentContextDecodeErrorZ_free(self); }
11383         CResult_UnknownPaymentContextDecodeErrorZ& operator=(CResult_UnknownPaymentContextDecodeErrorZ&& o) { CResult_UnknownPaymentContextDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnknownPaymentContextDecodeErrorZ)); return *this; }
11384         LDKCResult_UnknownPaymentContextDecodeErrorZ* operator &() { return &self; }
11385         LDKCResult_UnknownPaymentContextDecodeErrorZ* operator ->() { return &self; }
11386         const LDKCResult_UnknownPaymentContextDecodeErrorZ* operator &() const { return &self; }
11387         const LDKCResult_UnknownPaymentContextDecodeErrorZ* operator ->() const { return &self; }
11388 };
11389 class CResult_OutputSweeperDecodeErrorZ {
11390 private:
11391         LDKCResult_OutputSweeperDecodeErrorZ self;
11392 public:
11393         CResult_OutputSweeperDecodeErrorZ(const CResult_OutputSweeperDecodeErrorZ&) = delete;
11394         CResult_OutputSweeperDecodeErrorZ(CResult_OutputSweeperDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutputSweeperDecodeErrorZ)); }
11395         CResult_OutputSweeperDecodeErrorZ(LDKCResult_OutputSweeperDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutputSweeperDecodeErrorZ)); }
11396         operator LDKCResult_OutputSweeperDecodeErrorZ() && { LDKCResult_OutputSweeperDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutputSweeperDecodeErrorZ)); return res; }
11397         ~CResult_OutputSweeperDecodeErrorZ() { CResult_OutputSweeperDecodeErrorZ_free(self); }
11398         CResult_OutputSweeperDecodeErrorZ& operator=(CResult_OutputSweeperDecodeErrorZ&& o) { CResult_OutputSweeperDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutputSweeperDecodeErrorZ)); return *this; }
11399         LDKCResult_OutputSweeperDecodeErrorZ* operator &() { return &self; }
11400         LDKCResult_OutputSweeperDecodeErrorZ* operator ->() { return &self; }
11401         const LDKCResult_OutputSweeperDecodeErrorZ* operator &() const { return &self; }
11402         const LDKCResult_OutputSweeperDecodeErrorZ* operator ->() const { return &self; }
11403 };
11404 class CResult_C2Tuple_CVec_u8Zu64ZNoneZ {
11405 private:
11406         LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ self;
11407 public:
11408         CResult_C2Tuple_CVec_u8Zu64ZNoneZ(const CResult_C2Tuple_CVec_u8Zu64ZNoneZ&) = delete;
11409         CResult_C2Tuple_CVec_u8Zu64ZNoneZ(CResult_C2Tuple_CVec_u8Zu64ZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_CVec_u8Zu64ZNoneZ)); }
11410         CResult_C2Tuple_CVec_u8Zu64ZNoneZ(LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ)); }
11411         operator LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ() && { LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ)); return res; }
11412         ~CResult_C2Tuple_CVec_u8Zu64ZNoneZ() { CResult_C2Tuple_CVec_u8Zu64ZNoneZ_free(self); }
11413         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; }
11414         LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ* operator &() { return &self; }
11415         LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ* operator ->() { return &self; }
11416         const LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ* operator &() const { return &self; }
11417         const LDKCResult_C2Tuple_CVec_u8Zu64ZNoneZ* operator ->() const { return &self; }
11418 };
11419 class COption_EventZ {
11420 private:
11421         LDKCOption_EventZ self;
11422 public:
11423         COption_EventZ(const COption_EventZ&) = delete;
11424         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
11425         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
11426         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
11427         ~COption_EventZ() { COption_EventZ_free(self); }
11428         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
11429         LDKCOption_EventZ* operator &() { return &self; }
11430         LDKCOption_EventZ* operator ->() { return &self; }
11431         const LDKCOption_EventZ* operator &() const { return &self; }
11432         const LDKCOption_EventZ* operator ->() const { return &self; }
11433 };
11434 class CResult_ChannelTypeFeaturesDecodeErrorZ {
11435 private:
11436         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
11437 public:
11438         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
11439         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
11440         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
11441         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
11442         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
11443         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
11444         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
11445         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
11446         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
11447         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
11448 };
11449 class COption_CVec_SocketAddressZZ {
11450 private:
11451         LDKCOption_CVec_SocketAddressZZ self;
11452 public:
11453         COption_CVec_SocketAddressZZ(const COption_CVec_SocketAddressZZ&) = delete;
11454         COption_CVec_SocketAddressZZ(COption_CVec_SocketAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_SocketAddressZZ)); }
11455         COption_CVec_SocketAddressZZ(LDKCOption_CVec_SocketAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_SocketAddressZZ)); }
11456         operator LDKCOption_CVec_SocketAddressZZ() && { LDKCOption_CVec_SocketAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_SocketAddressZZ)); return res; }
11457         ~COption_CVec_SocketAddressZZ() { COption_CVec_SocketAddressZZ_free(self); }
11458         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; }
11459         LDKCOption_CVec_SocketAddressZZ* operator &() { return &self; }
11460         LDKCOption_CVec_SocketAddressZZ* operator ->() { return &self; }
11461         const LDKCOption_CVec_SocketAddressZZ* operator &() const { return &self; }
11462         const LDKCOption_CVec_SocketAddressZZ* operator ->() const { return &self; }
11463 };
11464 class CVec_RouteHintZ {
11465 private:
11466         LDKCVec_RouteHintZ self;
11467 public:
11468         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
11469         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
11470         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
11471         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
11472         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
11473         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
11474         LDKCVec_RouteHintZ* operator &() { return &self; }
11475         LDKCVec_RouteHintZ* operator ->() { return &self; }
11476         const LDKCVec_RouteHintZ* operator &() const { return &self; }
11477         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
11478 };
11479 class COption_u16Z {
11480 private:
11481         LDKCOption_u16Z self;
11482 public:
11483         COption_u16Z(const COption_u16Z&) = delete;
11484         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
11485         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
11486         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
11487         ~COption_u16Z() { COption_u16Z_free(self); }
11488         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
11489         LDKCOption_u16Z* operator &() { return &self; }
11490         LDKCOption_u16Z* operator ->() { return &self; }
11491         const LDKCOption_u16Z* operator &() const { return &self; }
11492         const LDKCOption_u16Z* operator ->() const { return &self; }
11493 };
11494 class COption_PaymentFailureReasonZ {
11495 private:
11496         LDKCOption_PaymentFailureReasonZ self;
11497 public:
11498         COption_PaymentFailureReasonZ(const COption_PaymentFailureReasonZ&) = delete;
11499         COption_PaymentFailureReasonZ(COption_PaymentFailureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PaymentFailureReasonZ)); }
11500         COption_PaymentFailureReasonZ(LDKCOption_PaymentFailureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PaymentFailureReasonZ)); }
11501         operator LDKCOption_PaymentFailureReasonZ() && { LDKCOption_PaymentFailureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_PaymentFailureReasonZ)); return res; }
11502         ~COption_PaymentFailureReasonZ() { COption_PaymentFailureReasonZ_free(self); }
11503         COption_PaymentFailureReasonZ& operator=(COption_PaymentFailureReasonZ&& o) { COption_PaymentFailureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PaymentFailureReasonZ)); return *this; }
11504         LDKCOption_PaymentFailureReasonZ* operator &() { return &self; }
11505         LDKCOption_PaymentFailureReasonZ* operator ->() { return &self; }
11506         const LDKCOption_PaymentFailureReasonZ* operator &() const { return &self; }
11507         const LDKCOption_PaymentFailureReasonZ* operator ->() const { return &self; }
11508 };
11509 class CResult_Bolt12RefundContextDecodeErrorZ {
11510 private:
11511         LDKCResult_Bolt12RefundContextDecodeErrorZ self;
11512 public:
11513         CResult_Bolt12RefundContextDecodeErrorZ(const CResult_Bolt12RefundContextDecodeErrorZ&) = delete;
11514         CResult_Bolt12RefundContextDecodeErrorZ(CResult_Bolt12RefundContextDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12RefundContextDecodeErrorZ)); }
11515         CResult_Bolt12RefundContextDecodeErrorZ(LDKCResult_Bolt12RefundContextDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12RefundContextDecodeErrorZ)); }
11516         operator LDKCResult_Bolt12RefundContextDecodeErrorZ() && { LDKCResult_Bolt12RefundContextDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12RefundContextDecodeErrorZ)); return res; }
11517         ~CResult_Bolt12RefundContextDecodeErrorZ() { CResult_Bolt12RefundContextDecodeErrorZ_free(self); }
11518         CResult_Bolt12RefundContextDecodeErrorZ& operator=(CResult_Bolt12RefundContextDecodeErrorZ&& o) { CResult_Bolt12RefundContextDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12RefundContextDecodeErrorZ)); return *this; }
11519         LDKCResult_Bolt12RefundContextDecodeErrorZ* operator &() { return &self; }
11520         LDKCResult_Bolt12RefundContextDecodeErrorZ* operator ->() { return &self; }
11521         const LDKCResult_Bolt12RefundContextDecodeErrorZ* operator &() const { return &self; }
11522         const LDKCResult_Bolt12RefundContextDecodeErrorZ* operator ->() const { return &self; }
11523 };
11524 class CResult_ECDSASignatureNoneZ {
11525 private:
11526         LDKCResult_ECDSASignatureNoneZ self;
11527 public:
11528         CResult_ECDSASignatureNoneZ(const CResult_ECDSASignatureNoneZ&) = delete;
11529         CResult_ECDSASignatureNoneZ(CResult_ECDSASignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ECDSASignatureNoneZ)); }
11530         CResult_ECDSASignatureNoneZ(LDKCResult_ECDSASignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ECDSASignatureNoneZ)); }
11531         operator LDKCResult_ECDSASignatureNoneZ() && { LDKCResult_ECDSASignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_ECDSASignatureNoneZ)); return res; }
11532         ~CResult_ECDSASignatureNoneZ() { CResult_ECDSASignatureNoneZ_free(self); }
11533         CResult_ECDSASignatureNoneZ& operator=(CResult_ECDSASignatureNoneZ&& o) { CResult_ECDSASignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ECDSASignatureNoneZ)); return *this; }
11534         LDKCResult_ECDSASignatureNoneZ* operator &() { return &self; }
11535         LDKCResult_ECDSASignatureNoneZ* operator ->() { return &self; }
11536         const LDKCResult_ECDSASignatureNoneZ* operator &() const { return &self; }
11537         const LDKCResult_ECDSASignatureNoneZ* operator ->() const { return &self; }
11538 };
11539 class CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ {
11540 private:
11541         LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ self;
11542 public:
11543         CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ(const CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ&) = delete;
11544         CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ(CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ)); }
11545         CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ(LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ)); }
11546         operator LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ() && { LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ)); return res; }
11547         ~CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ() { CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ_free(self); }
11548         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; }
11549         LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ* operator &() { return &self; }
11550         LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ* operator ->() { return &self; }
11551         const LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ* operator &() const { return &self; }
11552         const LDKCResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ* operator ->() const { return &self; }
11553 };
11554 class C2Tuple_ChannelIdPublicKeyZ {
11555 private:
11556         LDKC2Tuple_ChannelIdPublicKeyZ self;
11557 public:
11558         C2Tuple_ChannelIdPublicKeyZ(const C2Tuple_ChannelIdPublicKeyZ&) = delete;
11559         C2Tuple_ChannelIdPublicKeyZ(C2Tuple_ChannelIdPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ChannelIdPublicKeyZ)); }
11560         C2Tuple_ChannelIdPublicKeyZ(LDKC2Tuple_ChannelIdPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ChannelIdPublicKeyZ)); }
11561         operator LDKC2Tuple_ChannelIdPublicKeyZ() && { LDKC2Tuple_ChannelIdPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ChannelIdPublicKeyZ)); return res; }
11562         ~C2Tuple_ChannelIdPublicKeyZ() { C2Tuple_ChannelIdPublicKeyZ_free(self); }
11563         C2Tuple_ChannelIdPublicKeyZ& operator=(C2Tuple_ChannelIdPublicKeyZ&& o) { C2Tuple_ChannelIdPublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ChannelIdPublicKeyZ)); return *this; }
11564         LDKC2Tuple_ChannelIdPublicKeyZ* operator &() { return &self; }
11565         LDKC2Tuple_ChannelIdPublicKeyZ* operator ->() { return &self; }
11566         const LDKC2Tuple_ChannelIdPublicKeyZ* operator &() const { return &self; }
11567         const LDKC2Tuple_ChannelIdPublicKeyZ* operator ->() const { return &self; }
11568 };
11569 class CVec_WitnessZ {
11570 private:
11571         LDKCVec_WitnessZ self;
11572 public:
11573         CVec_WitnessZ(const CVec_WitnessZ&) = delete;
11574         CVec_WitnessZ(CVec_WitnessZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_WitnessZ)); }
11575         CVec_WitnessZ(LDKCVec_WitnessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_WitnessZ)); }
11576         operator LDKCVec_WitnessZ() && { LDKCVec_WitnessZ res = self; memset(&self, 0, sizeof(LDKCVec_WitnessZ)); return res; }
11577         ~CVec_WitnessZ() { CVec_WitnessZ_free(self); }
11578         CVec_WitnessZ& operator=(CVec_WitnessZ&& o) { CVec_WitnessZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_WitnessZ)); return *this; }
11579         LDKCVec_WitnessZ* operator &() { return &self; }
11580         LDKCVec_WitnessZ* operator ->() { return &self; }
11581         const LDKCVec_WitnessZ* operator &() const { return &self; }
11582         const LDKCVec_WitnessZ* operator ->() const { return &self; }
11583 };
11584 class CResult_BlindedTailDecodeErrorZ {
11585 private:
11586         LDKCResult_BlindedTailDecodeErrorZ self;
11587 public:
11588         CResult_BlindedTailDecodeErrorZ(const CResult_BlindedTailDecodeErrorZ&) = delete;
11589         CResult_BlindedTailDecodeErrorZ(CResult_BlindedTailDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedTailDecodeErrorZ)); }
11590         CResult_BlindedTailDecodeErrorZ(LDKCResult_BlindedTailDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedTailDecodeErrorZ)); }
11591         operator LDKCResult_BlindedTailDecodeErrorZ() && { LDKCResult_BlindedTailDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedTailDecodeErrorZ)); return res; }
11592         ~CResult_BlindedTailDecodeErrorZ() { CResult_BlindedTailDecodeErrorZ_free(self); }
11593         CResult_BlindedTailDecodeErrorZ& operator=(CResult_BlindedTailDecodeErrorZ&& o) { CResult_BlindedTailDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedTailDecodeErrorZ)); return *this; }
11594         LDKCResult_BlindedTailDecodeErrorZ* operator &() { return &self; }
11595         LDKCResult_BlindedTailDecodeErrorZ* operator ->() { return &self; }
11596         const LDKCResult_BlindedTailDecodeErrorZ* operator &() const { return &self; }
11597         const LDKCResult_BlindedTailDecodeErrorZ* operator ->() const { return &self; }
11598 };
11599 class CResult_SocketAddressSocketAddressParseErrorZ {
11600 private:
11601         LDKCResult_SocketAddressSocketAddressParseErrorZ self;
11602 public:
11603         CResult_SocketAddressSocketAddressParseErrorZ(const CResult_SocketAddressSocketAddressParseErrorZ&) = delete;
11604         CResult_SocketAddressSocketAddressParseErrorZ(CResult_SocketAddressSocketAddressParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SocketAddressSocketAddressParseErrorZ)); }
11605         CResult_SocketAddressSocketAddressParseErrorZ(LDKCResult_SocketAddressSocketAddressParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SocketAddressSocketAddressParseErrorZ)); }
11606         operator LDKCResult_SocketAddressSocketAddressParseErrorZ() && { LDKCResult_SocketAddressSocketAddressParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SocketAddressSocketAddressParseErrorZ)); return res; }
11607         ~CResult_SocketAddressSocketAddressParseErrorZ() { CResult_SocketAddressSocketAddressParseErrorZ_free(self); }
11608         CResult_SocketAddressSocketAddressParseErrorZ& operator=(CResult_SocketAddressSocketAddressParseErrorZ&& o) { CResult_SocketAddressSocketAddressParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SocketAddressSocketAddressParseErrorZ)); return *this; }
11609         LDKCResult_SocketAddressSocketAddressParseErrorZ* operator &() { return &self; }
11610         LDKCResult_SocketAddressSocketAddressParseErrorZ* operator ->() { return &self; }
11611         const LDKCResult_SocketAddressSocketAddressParseErrorZ* operator &() const { return &self; }
11612         const LDKCResult_SocketAddressSocketAddressParseErrorZ* operator ->() const { return &self; }
11613 };
11614 class COption_C2Tuple_u64u16ZZ {
11615 private:
11616         LDKCOption_C2Tuple_u64u16ZZ self;
11617 public:
11618         COption_C2Tuple_u64u16ZZ(const COption_C2Tuple_u64u16ZZ&) = delete;
11619         COption_C2Tuple_u64u16ZZ(COption_C2Tuple_u64u16ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u16ZZ)); }
11620         COption_C2Tuple_u64u16ZZ(LDKCOption_C2Tuple_u64u16ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u16ZZ)); }
11621         operator LDKCOption_C2Tuple_u64u16ZZ() && { LDKCOption_C2Tuple_u64u16ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u16ZZ)); return res; }
11622         ~COption_C2Tuple_u64u16ZZ() { COption_C2Tuple_u64u16ZZ_free(self); }
11623         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; }
11624         LDKCOption_C2Tuple_u64u16ZZ* operator &() { return &self; }
11625         LDKCOption_C2Tuple_u64u16ZZ* operator ->() { return &self; }
11626         const LDKCOption_C2Tuple_u64u16ZZ* operator &() const { return &self; }
11627         const LDKCOption_C2Tuple_u64u16ZZ* operator ->() const { return &self; }
11628 };
11629 class CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ {
11630 private:
11631         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ self;
11632 public:
11633         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(const CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&) = delete;
11634         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); }
11635         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); }
11636         operator LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ() && { LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); return res; }
11637         ~CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ() { CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ_free(self); }
11638         CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ& operator=(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ&& o) { CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawBolt11InvoiceBolt11ParseErrorZ)); return *this; }
11639         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator &() { return &self; }
11640         LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator ->() { return &self; }
11641         const LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator &() const { return &self; }
11642         const LDKCResult_SignedRawBolt11InvoiceBolt11ParseErrorZ* operator ->() const { return &self; }
11643 };
11644 class CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ {
11645 private:
11646         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ self;
11647 public:
11648         CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ(const CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ&) = delete;
11649         CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ(CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ)); }
11650         CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ)); }
11651         operator LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ() && { LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ)); return res; }
11652         ~CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ() { CResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ_free(self); }
11653         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; }
11654         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ* operator &() { return &self; }
11655         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ* operator ->() { return &self; }
11656         const LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ* operator &() const { return &self; }
11657         const LDKCResult_CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZProbeSendFailureZ* operator ->() const { return &self; }
11658 };
11659 class CResult_ChannelDerivationParametersDecodeErrorZ {
11660 private:
11661         LDKCResult_ChannelDerivationParametersDecodeErrorZ self;
11662 public:
11663         CResult_ChannelDerivationParametersDecodeErrorZ(const CResult_ChannelDerivationParametersDecodeErrorZ&) = delete;
11664         CResult_ChannelDerivationParametersDecodeErrorZ(CResult_ChannelDerivationParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDerivationParametersDecodeErrorZ)); }
11665         CResult_ChannelDerivationParametersDecodeErrorZ(LDKCResult_ChannelDerivationParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDerivationParametersDecodeErrorZ)); }
11666         operator LDKCResult_ChannelDerivationParametersDecodeErrorZ() && { LDKCResult_ChannelDerivationParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDerivationParametersDecodeErrorZ)); return res; }
11667         ~CResult_ChannelDerivationParametersDecodeErrorZ() { CResult_ChannelDerivationParametersDecodeErrorZ_free(self); }
11668         CResult_ChannelDerivationParametersDecodeErrorZ& operator=(CResult_ChannelDerivationParametersDecodeErrorZ&& o) { CResult_ChannelDerivationParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDerivationParametersDecodeErrorZ)); return *this; }
11669         LDKCResult_ChannelDerivationParametersDecodeErrorZ* operator &() { return &self; }
11670         LDKCResult_ChannelDerivationParametersDecodeErrorZ* operator ->() { return &self; }
11671         const LDKCResult_ChannelDerivationParametersDecodeErrorZ* operator &() const { return &self; }
11672         const LDKCResult_ChannelDerivationParametersDecodeErrorZ* operator ->() const { return &self; }
11673 };
11674 class CResult_PaymentConstraintsDecodeErrorZ {
11675 private:
11676         LDKCResult_PaymentConstraintsDecodeErrorZ self;
11677 public:
11678         CResult_PaymentConstraintsDecodeErrorZ(const CResult_PaymentConstraintsDecodeErrorZ&) = delete;
11679         CResult_PaymentConstraintsDecodeErrorZ(CResult_PaymentConstraintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentConstraintsDecodeErrorZ)); }
11680         CResult_PaymentConstraintsDecodeErrorZ(LDKCResult_PaymentConstraintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentConstraintsDecodeErrorZ)); }
11681         operator LDKCResult_PaymentConstraintsDecodeErrorZ() && { LDKCResult_PaymentConstraintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentConstraintsDecodeErrorZ)); return res; }
11682         ~CResult_PaymentConstraintsDecodeErrorZ() { CResult_PaymentConstraintsDecodeErrorZ_free(self); }
11683         CResult_PaymentConstraintsDecodeErrorZ& operator=(CResult_PaymentConstraintsDecodeErrorZ&& o) { CResult_PaymentConstraintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentConstraintsDecodeErrorZ)); return *this; }
11684         LDKCResult_PaymentConstraintsDecodeErrorZ* operator &() { return &self; }
11685         LDKCResult_PaymentConstraintsDecodeErrorZ* operator ->() { return &self; }
11686         const LDKCResult_PaymentConstraintsDecodeErrorZ* operator &() const { return &self; }
11687         const LDKCResult_PaymentConstraintsDecodeErrorZ* operator ->() const { return &self; }
11688 };
11689 class CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ {
11690 private:
11691         LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ self;
11692 public:
11693         CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ(const CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ&) = delete;
11694         CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ(CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ)); }
11695         CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ(LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ)); }
11696         operator LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ() && { LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ)); return res; }
11697         ~CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ() { CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ_free(self); }
11698         CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ& operator=(CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ&& o) { CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedInvoiceRequestBolt12SemanticErrorZ)); return *this; }
11699         LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ* operator &() { return &self; }
11700         LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ* operator ->() { return &self; }
11701         const LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ* operator &() const { return &self; }
11702         const LDKCResult_UnsignedInvoiceRequestBolt12SemanticErrorZ* operator ->() const { return &self; }
11703 };
11704 class CResult_OnionMessagePathNoneZ {
11705 private:
11706         LDKCResult_OnionMessagePathNoneZ self;
11707 public:
11708         CResult_OnionMessagePathNoneZ(const CResult_OnionMessagePathNoneZ&) = delete;
11709         CResult_OnionMessagePathNoneZ(CResult_OnionMessagePathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessagePathNoneZ)); }
11710         CResult_OnionMessagePathNoneZ(LDKCResult_OnionMessagePathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessagePathNoneZ)); }
11711         operator LDKCResult_OnionMessagePathNoneZ() && { LDKCResult_OnionMessagePathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessagePathNoneZ)); return res; }
11712         ~CResult_OnionMessagePathNoneZ() { CResult_OnionMessagePathNoneZ_free(self); }
11713         CResult_OnionMessagePathNoneZ& operator=(CResult_OnionMessagePathNoneZ&& o) { CResult_OnionMessagePathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessagePathNoneZ)); return *this; }
11714         LDKCResult_OnionMessagePathNoneZ* operator &() { return &self; }
11715         LDKCResult_OnionMessagePathNoneZ* operator ->() { return &self; }
11716         const LDKCResult_OnionMessagePathNoneZ* operator &() const { return &self; }
11717         const LDKCResult_OnionMessagePathNoneZ* operator ->() const { return &self; }
11718 };
11719 class C2Tuple_u32CVec_u8ZZ {
11720 private:
11721         LDKC2Tuple_u32CVec_u8ZZ self;
11722 public:
11723         C2Tuple_u32CVec_u8ZZ(const C2Tuple_u32CVec_u8ZZ&) = delete;
11724         C2Tuple_u32CVec_u8ZZ(C2Tuple_u32CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32CVec_u8ZZ)); }
11725         C2Tuple_u32CVec_u8ZZ(LDKC2Tuple_u32CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32CVec_u8ZZ)); }
11726         operator LDKC2Tuple_u32CVec_u8ZZ() && { LDKC2Tuple_u32CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32CVec_u8ZZ)); return res; }
11727         ~C2Tuple_u32CVec_u8ZZ() { C2Tuple_u32CVec_u8ZZ_free(self); }
11728         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; }
11729         LDKC2Tuple_u32CVec_u8ZZ* operator &() { return &self; }
11730         LDKC2Tuple_u32CVec_u8ZZ* operator ->() { return &self; }
11731         const LDKC2Tuple_u32CVec_u8ZZ* operator &() const { return &self; }
11732         const LDKC2Tuple_u32CVec_u8ZZ* operator ->() const { return &self; }
11733 };
11734 class CVec_C2Tuple_PublicKeyTypeZZ {
11735 private:
11736         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
11737 public:
11738         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
11739         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
11740         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
11741         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
11742         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
11743         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; }
11744         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
11745         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
11746         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
11747         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
11748 };
11749 class CResult_RefundBolt12ParseErrorZ {
11750 private:
11751         LDKCResult_RefundBolt12ParseErrorZ self;
11752 public:
11753         CResult_RefundBolt12ParseErrorZ(const CResult_RefundBolt12ParseErrorZ&) = delete;
11754         CResult_RefundBolt12ParseErrorZ(CResult_RefundBolt12ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RefundBolt12ParseErrorZ)); }
11755         CResult_RefundBolt12ParseErrorZ(LDKCResult_RefundBolt12ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RefundBolt12ParseErrorZ)); }
11756         operator LDKCResult_RefundBolt12ParseErrorZ() && { LDKCResult_RefundBolt12ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RefundBolt12ParseErrorZ)); return res; }
11757         ~CResult_RefundBolt12ParseErrorZ() { CResult_RefundBolt12ParseErrorZ_free(self); }
11758         CResult_RefundBolt12ParseErrorZ& operator=(CResult_RefundBolt12ParseErrorZ&& o) { CResult_RefundBolt12ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RefundBolt12ParseErrorZ)); return *this; }
11759         LDKCResult_RefundBolt12ParseErrorZ* operator &() { return &self; }
11760         LDKCResult_RefundBolt12ParseErrorZ* operator ->() { return &self; }
11761         const LDKCResult_RefundBolt12ParseErrorZ* operator &() const { return &self; }
11762         const LDKCResult_RefundBolt12ParseErrorZ* operator ->() const { return &self; }
11763 };
11764 class CResult_u32GraphSyncErrorZ {
11765 private:
11766         LDKCResult_u32GraphSyncErrorZ self;
11767 public:
11768         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
11769         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
11770         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
11771         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
11772         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
11773         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
11774         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
11775         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
11776         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
11777         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
11778 };
11779 class CVec_C2Tuple_u64CVec_u8ZZZ {
11780 private:
11781         LDKCVec_C2Tuple_u64CVec_u8ZZZ self;
11782 public:
11783         CVec_C2Tuple_u64CVec_u8ZZZ(const CVec_C2Tuple_u64CVec_u8ZZZ&) = delete;
11784         CVec_C2Tuple_u64CVec_u8ZZZ(CVec_C2Tuple_u64CVec_u8ZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u64CVec_u8ZZZ)); }
11785         CVec_C2Tuple_u64CVec_u8ZZZ(LDKCVec_C2Tuple_u64CVec_u8ZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u64CVec_u8ZZZ)); }
11786         operator LDKCVec_C2Tuple_u64CVec_u8ZZZ() && { LDKCVec_C2Tuple_u64CVec_u8ZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u64CVec_u8ZZZ)); return res; }
11787         ~CVec_C2Tuple_u64CVec_u8ZZZ() { CVec_C2Tuple_u64CVec_u8ZZZ_free(self); }
11788         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; }
11789         LDKCVec_C2Tuple_u64CVec_u8ZZZ* operator &() { return &self; }
11790         LDKCVec_C2Tuple_u64CVec_u8ZZZ* operator ->() { return &self; }
11791         const LDKCVec_C2Tuple_u64CVec_u8ZZZ* operator &() const { return &self; }
11792         const LDKCVec_C2Tuple_u64CVec_u8ZZZ* operator ->() const { return &self; }
11793 };
11794 class CVec_PhantomRouteHintsZ {
11795 private:
11796         LDKCVec_PhantomRouteHintsZ self;
11797 public:
11798         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
11799         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
11800         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
11801         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
11802         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
11803         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
11804         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
11805         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
11806         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
11807         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
11808 };
11809 class CResult_OffersMessageDecodeErrorZ {
11810 private:
11811         LDKCResult_OffersMessageDecodeErrorZ self;
11812 public:
11813         CResult_OffersMessageDecodeErrorZ(const CResult_OffersMessageDecodeErrorZ&) = delete;
11814         CResult_OffersMessageDecodeErrorZ(CResult_OffersMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OffersMessageDecodeErrorZ)); }
11815         CResult_OffersMessageDecodeErrorZ(LDKCResult_OffersMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OffersMessageDecodeErrorZ)); }
11816         operator LDKCResult_OffersMessageDecodeErrorZ() && { LDKCResult_OffersMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OffersMessageDecodeErrorZ)); return res; }
11817         ~CResult_OffersMessageDecodeErrorZ() { CResult_OffersMessageDecodeErrorZ_free(self); }
11818         CResult_OffersMessageDecodeErrorZ& operator=(CResult_OffersMessageDecodeErrorZ&& o) { CResult_OffersMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OffersMessageDecodeErrorZ)); return *this; }
11819         LDKCResult_OffersMessageDecodeErrorZ* operator &() { return &self; }
11820         LDKCResult_OffersMessageDecodeErrorZ* operator ->() { return &self; }
11821         const LDKCResult_OffersMessageDecodeErrorZ* operator &() const { return &self; }
11822         const LDKCResult_OffersMessageDecodeErrorZ* operator ->() const { return &self; }
11823 };
11824 class CResult_NoneAPIErrorZ {
11825 private:
11826         LDKCResult_NoneAPIErrorZ self;
11827 public:
11828         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
11829         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
11830         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
11831         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
11832         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
11833         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
11834         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
11835         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
11836         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
11837         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
11838 };
11839 class CResult_Bolt12InvoiceFeaturesDecodeErrorZ {
11840 private:
11841         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ self;
11842 public:
11843         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(const CResult_Bolt12InvoiceFeaturesDecodeErrorZ&) = delete;
11844         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(CResult_Bolt12InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_Bolt12InvoiceFeaturesDecodeErrorZ)); }
11845         CResult_Bolt12InvoiceFeaturesDecodeErrorZ(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ)); }
11846         operator LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ() && { LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ)); return res; }
11847         ~CResult_Bolt12InvoiceFeaturesDecodeErrorZ() { CResult_Bolt12InvoiceFeaturesDecodeErrorZ_free(self); }
11848         CResult_Bolt12InvoiceFeaturesDecodeErrorZ& operator=(CResult_Bolt12InvoiceFeaturesDecodeErrorZ&& o) { CResult_Bolt12InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_Bolt12InvoiceFeaturesDecodeErrorZ)); return *this; }
11849         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
11850         LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
11851         const LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
11852         const LDKCResult_Bolt12InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
11853 };
11854 class COption_f64Z {
11855 private:
11856         LDKCOption_f64Z self;
11857 public:
11858         COption_f64Z(const COption_f64Z&) = delete;
11859         COption_f64Z(COption_f64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_f64Z)); }
11860         COption_f64Z(LDKCOption_f64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_f64Z)); }
11861         operator LDKCOption_f64Z() && { LDKCOption_f64Z res = self; memset(&self, 0, sizeof(LDKCOption_f64Z)); return res; }
11862         ~COption_f64Z() { COption_f64Z_free(self); }
11863         COption_f64Z& operator=(COption_f64Z&& o) { COption_f64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_f64Z)); return *this; }
11864         LDKCOption_f64Z* operator &() { return &self; }
11865         LDKCOption_f64Z* operator ->() { return &self; }
11866         const LDKCOption_f64Z* operator &() const { return &self; }
11867         const LDKCOption_f64Z* operator ->() const { return &self; }
11868 };
11869 class CResult_ChannelDetailsDecodeErrorZ {
11870 private:
11871         LDKCResult_ChannelDetailsDecodeErrorZ self;
11872 public:
11873         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
11874         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
11875         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
11876         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
11877         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
11878         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
11879         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
11880         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
11881         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
11882         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
11883 };
11884 class CVec_PublicKeyZ {
11885 private:
11886         LDKCVec_PublicKeyZ self;
11887 public:
11888         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
11889         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
11890         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
11891         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
11892         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
11893         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
11894         LDKCVec_PublicKeyZ* operator &() { return &self; }
11895         LDKCVec_PublicKeyZ* operator ->() { return &self; }
11896         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
11897         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
11898 };
11899 class C2Tuple_CVec_u8Zu64Z {
11900 private:
11901         LDKC2Tuple_CVec_u8Zu64Z self;
11902 public:
11903         C2Tuple_CVec_u8Zu64Z(const C2Tuple_CVec_u8Zu64Z&) = delete;
11904         C2Tuple_CVec_u8Zu64Z(C2Tuple_CVec_u8Zu64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_CVec_u8Zu64Z)); }
11905         C2Tuple_CVec_u8Zu64Z(LDKC2Tuple_CVec_u8Zu64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_CVec_u8Zu64Z)); }
11906         operator LDKC2Tuple_CVec_u8Zu64Z() && { LDKC2Tuple_CVec_u8Zu64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_CVec_u8Zu64Z)); return res; }
11907         ~C2Tuple_CVec_u8Zu64Z() { C2Tuple_CVec_u8Zu64Z_free(self); }
11908         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; }
11909         LDKC2Tuple_CVec_u8Zu64Z* operator &() { return &self; }
11910         LDKC2Tuple_CVec_u8Zu64Z* operator ->() { return &self; }
11911         const LDKC2Tuple_CVec_u8Zu64Z* operator &() const { return &self; }
11912         const LDKC2Tuple_CVec_u8Zu64Z* operator ->() const { return &self; }
11913 };
11914 class CVec_C2Tuple_usizeTransactionZZ {
11915 private:
11916         LDKCVec_C2Tuple_usizeTransactionZZ self;
11917 public:
11918         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
11919         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
11920         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
11921         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
11922         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
11923         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; }
11924         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
11925         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
11926         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
11927         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
11928 };
11929 class CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ {
11930 private:
11931         LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ self;
11932 public:
11933         CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ(const CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ&) = delete;
11934         CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ(CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ)); }
11935         CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ(LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ)); }
11936         operator LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ() && { LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ)); return res; }
11937         ~CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ() { CVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ_free(self); }
11938         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; }
11939         LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ* operator &() { return &self; }
11940         LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ* operator ->() { return &self; }
11941         const LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ* operator &() const { return &self; }
11942         const LDKCVec_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZZ* operator ->() const { return &self; }
11943 };
11944 class CResult_PendingHTLCRoutingDecodeErrorZ {
11945 private:
11946         LDKCResult_PendingHTLCRoutingDecodeErrorZ self;
11947 public:
11948         CResult_PendingHTLCRoutingDecodeErrorZ(const CResult_PendingHTLCRoutingDecodeErrorZ&) = delete;
11949         CResult_PendingHTLCRoutingDecodeErrorZ(CResult_PendingHTLCRoutingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PendingHTLCRoutingDecodeErrorZ)); }
11950         CResult_PendingHTLCRoutingDecodeErrorZ(LDKCResult_PendingHTLCRoutingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PendingHTLCRoutingDecodeErrorZ)); }
11951         operator LDKCResult_PendingHTLCRoutingDecodeErrorZ() && { LDKCResult_PendingHTLCRoutingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PendingHTLCRoutingDecodeErrorZ)); return res; }
11952         ~CResult_PendingHTLCRoutingDecodeErrorZ() { CResult_PendingHTLCRoutingDecodeErrorZ_free(self); }
11953         CResult_PendingHTLCRoutingDecodeErrorZ& operator=(CResult_PendingHTLCRoutingDecodeErrorZ&& o) { CResult_PendingHTLCRoutingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PendingHTLCRoutingDecodeErrorZ)); return *this; }
11954         LDKCResult_PendingHTLCRoutingDecodeErrorZ* operator &() { return &self; }
11955         LDKCResult_PendingHTLCRoutingDecodeErrorZ* operator ->() { return &self; }
11956         const LDKCResult_PendingHTLCRoutingDecodeErrorZ* operator &() const { return &self; }
11957         const LDKCResult_PendingHTLCRoutingDecodeErrorZ* operator ->() const { return &self; }
11958 };
11959 class C2Tuple_u64u64Z {
11960 private:
11961         LDKC2Tuple_u64u64Z self;
11962 public:
11963         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
11964         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
11965         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
11966         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
11967         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
11968         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
11969         LDKC2Tuple_u64u64Z* operator &() { return &self; }
11970         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
11971         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
11972         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
11973 };
11974 class CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ {
11975 private:
11976         LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ self;
11977 public:
11978         CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ(const CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ&) = delete;
11979         CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ(CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ)); }
11980         CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ(LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ)); }
11981         operator LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ() && { LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ)); return res; }
11982         ~CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ() { CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ_free(self); }
11983         CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ& operator=(CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ&& o) { CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ)); return *this; }
11984         LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ* operator &() { return &self; }
11985         LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
11986         const LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
11987         const LDKCResult_InvoiceWithDerivedSigningPubkeyBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
11988 };
11989 class CResult_TxRemoveInputDecodeErrorZ {
11990 private:
11991         LDKCResult_TxRemoveInputDecodeErrorZ self;
11992 public:
11993         CResult_TxRemoveInputDecodeErrorZ(const CResult_TxRemoveInputDecodeErrorZ&) = delete;
11994         CResult_TxRemoveInputDecodeErrorZ(CResult_TxRemoveInputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxRemoveInputDecodeErrorZ)); }
11995         CResult_TxRemoveInputDecodeErrorZ(LDKCResult_TxRemoveInputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxRemoveInputDecodeErrorZ)); }
11996         operator LDKCResult_TxRemoveInputDecodeErrorZ() && { LDKCResult_TxRemoveInputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxRemoveInputDecodeErrorZ)); return res; }
11997         ~CResult_TxRemoveInputDecodeErrorZ() { CResult_TxRemoveInputDecodeErrorZ_free(self); }
11998         CResult_TxRemoveInputDecodeErrorZ& operator=(CResult_TxRemoveInputDecodeErrorZ&& o) { CResult_TxRemoveInputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxRemoveInputDecodeErrorZ)); return *this; }
11999         LDKCResult_TxRemoveInputDecodeErrorZ* operator &() { return &self; }
12000         LDKCResult_TxRemoveInputDecodeErrorZ* operator ->() { return &self; }
12001         const LDKCResult_TxRemoveInputDecodeErrorZ* operator &() const { return &self; }
12002         const LDKCResult_TxRemoveInputDecodeErrorZ* operator ->() const { return &self; }
12003 };
12004 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
12005 private:
12006         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
12007 public:
12008         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
12009         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
12010         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
12011         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
12012         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
12013         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
12014         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
12015         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
12016         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
12017         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
12018 };
12019 class CResult_RecipientOnionFieldsDecodeErrorZ {
12020 private:
12021         LDKCResult_RecipientOnionFieldsDecodeErrorZ self;
12022 public:
12023         CResult_RecipientOnionFieldsDecodeErrorZ(const CResult_RecipientOnionFieldsDecodeErrorZ&) = delete;
12024         CResult_RecipientOnionFieldsDecodeErrorZ(CResult_RecipientOnionFieldsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecipientOnionFieldsDecodeErrorZ)); }
12025         CResult_RecipientOnionFieldsDecodeErrorZ(LDKCResult_RecipientOnionFieldsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecipientOnionFieldsDecodeErrorZ)); }
12026         operator LDKCResult_RecipientOnionFieldsDecodeErrorZ() && { LDKCResult_RecipientOnionFieldsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RecipientOnionFieldsDecodeErrorZ)); return res; }
12027         ~CResult_RecipientOnionFieldsDecodeErrorZ() { CResult_RecipientOnionFieldsDecodeErrorZ_free(self); }
12028         CResult_RecipientOnionFieldsDecodeErrorZ& operator=(CResult_RecipientOnionFieldsDecodeErrorZ&& o) { CResult_RecipientOnionFieldsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecipientOnionFieldsDecodeErrorZ)); return *this; }
12029         LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator &() { return &self; }
12030         LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator ->() { return &self; }
12031         const LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator &() const { return &self; }
12032         const LDKCResult_RecipientOnionFieldsDecodeErrorZ* operator ->() const { return &self; }
12033 };
12034 class C2Tuple_u32TxOutZ {
12035 private:
12036         LDKC2Tuple_u32TxOutZ self;
12037 public:
12038         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
12039         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
12040         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
12041         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
12042         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
12043         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
12044         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
12045         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
12046         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
12047         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
12048 };
12049 class CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ {
12050 private:
12051         LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ self;
12052 public:
12053         CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ(const CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ&) = delete;
12054         CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ(CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ)); }
12055         CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ(LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ)); }
12056         operator LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ() && { LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ)); return res; }
12057         ~CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ() { CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ_free(self); }
12058         CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ& operator=(CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ&& o) { CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ)); return *this; }
12059         LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ* operator &() { return &self; }
12060         LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ* operator ->() { return &self; }
12061         const LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ* operator &() const { return &self; }
12062         const LDKCResult_InvoiceRequestWithExplicitPayerIdBuilderBolt12SemanticErrorZ* operator ->() const { return &self; }
12063 };
12064 class CResult_PaymentContextDecodeErrorZ {
12065 private:
12066         LDKCResult_PaymentContextDecodeErrorZ self;
12067 public:
12068         CResult_PaymentContextDecodeErrorZ(const CResult_PaymentContextDecodeErrorZ&) = delete;
12069         CResult_PaymentContextDecodeErrorZ(CResult_PaymentContextDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentContextDecodeErrorZ)); }
12070         CResult_PaymentContextDecodeErrorZ(LDKCResult_PaymentContextDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentContextDecodeErrorZ)); }
12071         operator LDKCResult_PaymentContextDecodeErrorZ() && { LDKCResult_PaymentContextDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentContextDecodeErrorZ)); return res; }
12072         ~CResult_PaymentContextDecodeErrorZ() { CResult_PaymentContextDecodeErrorZ_free(self); }
12073         CResult_PaymentContextDecodeErrorZ& operator=(CResult_PaymentContextDecodeErrorZ&& o) { CResult_PaymentContextDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentContextDecodeErrorZ)); return *this; }
12074         LDKCResult_PaymentContextDecodeErrorZ* operator &() { return &self; }
12075         LDKCResult_PaymentContextDecodeErrorZ* operator ->() { return &self; }
12076         const LDKCResult_PaymentContextDecodeErrorZ* operator &() const { return &self; }
12077         const LDKCResult_PaymentContextDecodeErrorZ* operator ->() const { return &self; }
12078 };
12079 class CVec_UtxoZ {
12080 private:
12081         LDKCVec_UtxoZ self;
12082 public:
12083         CVec_UtxoZ(const CVec_UtxoZ&) = delete;
12084         CVec_UtxoZ(CVec_UtxoZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UtxoZ)); }
12085         CVec_UtxoZ(LDKCVec_UtxoZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UtxoZ)); }
12086         operator LDKCVec_UtxoZ() && { LDKCVec_UtxoZ res = self; memset(&self, 0, sizeof(LDKCVec_UtxoZ)); return res; }
12087         ~CVec_UtxoZ() { CVec_UtxoZ_free(self); }
12088         CVec_UtxoZ& operator=(CVec_UtxoZ&& o) { CVec_UtxoZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UtxoZ)); return *this; }
12089         LDKCVec_UtxoZ* operator &() { return &self; }
12090         LDKCVec_UtxoZ* operator ->() { return &self; }
12091         const LDKCVec_UtxoZ* operator &() const { return &self; }
12092         const LDKCVec_UtxoZ* operator ->() const { return &self; }
12093 };
12094 class CResult_ChannelConfigDecodeErrorZ {
12095 private:
12096         LDKCResult_ChannelConfigDecodeErrorZ self;
12097 public:
12098         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
12099         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
12100         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
12101         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
12102         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
12103         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
12104         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
12105         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
12106         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
12107         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
12108 };
12109 class CVec_PrivateRouteZ {
12110 private:
12111         LDKCVec_PrivateRouteZ self;
12112 public:
12113         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
12114         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
12115         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
12116         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
12117         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
12118         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
12119         LDKCVec_PrivateRouteZ* operator &() { return &self; }
12120         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
12121         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
12122         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
12123 };
12124 class COption_i64Z {
12125 private:
12126         LDKCOption_i64Z self;
12127 public:
12128         COption_i64Z(const COption_i64Z&) = delete;
12129         COption_i64Z(COption_i64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_i64Z)); }
12130         COption_i64Z(LDKCOption_i64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_i64Z)); }
12131         operator LDKCOption_i64Z() && { LDKCOption_i64Z res = self; memset(&self, 0, sizeof(LDKCOption_i64Z)); return res; }
12132         ~COption_i64Z() { COption_i64Z_free(self); }
12133         COption_i64Z& operator=(COption_i64Z&& o) { COption_i64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_i64Z)); return *this; }
12134         LDKCOption_i64Z* operator &() { return &self; }
12135         LDKCOption_i64Z* operator ->() { return &self; }
12136         const LDKCOption_i64Z* operator &() const { return &self; }
12137         const LDKCOption_i64Z* operator ->() const { return &self; }
12138 };
12139 class C2Tuple_ThirtyTwoBytesChannelManagerZ {
12140 private:
12141         LDKC2Tuple_ThirtyTwoBytesChannelManagerZ self;
12142 public:
12143         C2Tuple_ThirtyTwoBytesChannelManagerZ(const C2Tuple_ThirtyTwoBytesChannelManagerZ&) = delete;
12144         C2Tuple_ThirtyTwoBytesChannelManagerZ(C2Tuple_ThirtyTwoBytesChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesChannelManagerZ)); }
12145         C2Tuple_ThirtyTwoBytesChannelManagerZ(LDKC2Tuple_ThirtyTwoBytesChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesChannelManagerZ)); }
12146         operator LDKC2Tuple_ThirtyTwoBytesChannelManagerZ() && { LDKC2Tuple_ThirtyTwoBytesChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_ThirtyTwoBytesChannelManagerZ)); return res; }
12147         ~C2Tuple_ThirtyTwoBytesChannelManagerZ() { C2Tuple_ThirtyTwoBytesChannelManagerZ_free(self); }
12148         C2Tuple_ThirtyTwoBytesChannelManagerZ& operator=(C2Tuple_ThirtyTwoBytesChannelManagerZ&& o) { C2Tuple_ThirtyTwoBytesChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_ThirtyTwoBytesChannelManagerZ)); return *this; }
12149         LDKC2Tuple_ThirtyTwoBytesChannelManagerZ* operator &() { return &self; }
12150         LDKC2Tuple_ThirtyTwoBytesChannelManagerZ* operator ->() { return &self; }
12151         const LDKC2Tuple_ThirtyTwoBytesChannelManagerZ* operator &() const { return &self; }
12152         const LDKC2Tuple_ThirtyTwoBytesChannelManagerZ* operator ->() const { return &self; }
12153 };
12154 class CResult_COption_OnionMessageContentsZDecodeErrorZ {
12155 private:
12156         LDKCResult_COption_OnionMessageContentsZDecodeErrorZ self;
12157 public:
12158         CResult_COption_OnionMessageContentsZDecodeErrorZ(const CResult_COption_OnionMessageContentsZDecodeErrorZ&) = delete;
12159         CResult_COption_OnionMessageContentsZDecodeErrorZ(CResult_COption_OnionMessageContentsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_OnionMessageContentsZDecodeErrorZ)); }
12160         CResult_COption_OnionMessageContentsZDecodeErrorZ(LDKCResult_COption_OnionMessageContentsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_OnionMessageContentsZDecodeErrorZ)); }
12161         operator LDKCResult_COption_OnionMessageContentsZDecodeErrorZ() && { LDKCResult_COption_OnionMessageContentsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_OnionMessageContentsZDecodeErrorZ)); return res; }
12162         ~CResult_COption_OnionMessageContentsZDecodeErrorZ() { CResult_COption_OnionMessageContentsZDecodeErrorZ_free(self); }
12163         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; }
12164         LDKCResult_COption_OnionMessageContentsZDecodeErrorZ* operator &() { return &self; }
12165         LDKCResult_COption_OnionMessageContentsZDecodeErrorZ* operator ->() { return &self; }
12166         const LDKCResult_COption_OnionMessageContentsZDecodeErrorZ* operator &() const { return &self; }
12167         const LDKCResult_COption_OnionMessageContentsZDecodeErrorZ* operator ->() const { return &self; }
12168 };
12169 class C2Tuple_u64CVec_u8ZZ {
12170 private:
12171         LDKC2Tuple_u64CVec_u8ZZ self;
12172 public:
12173         C2Tuple_u64CVec_u8ZZ(const C2Tuple_u64CVec_u8ZZ&) = delete;
12174         C2Tuple_u64CVec_u8ZZ(C2Tuple_u64CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64CVec_u8ZZ)); }
12175         C2Tuple_u64CVec_u8ZZ(LDKC2Tuple_u64CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64CVec_u8ZZ)); }
12176         operator LDKC2Tuple_u64CVec_u8ZZ() && { LDKC2Tuple_u64CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64CVec_u8ZZ)); return res; }
12177         ~C2Tuple_u64CVec_u8ZZ() { C2Tuple_u64CVec_u8ZZ_free(self); }
12178         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; }
12179         LDKC2Tuple_u64CVec_u8ZZ* operator &() { return &self; }
12180         LDKC2Tuple_u64CVec_u8ZZ* operator ->() { return &self; }
12181         const LDKC2Tuple_u64CVec_u8ZZ* operator &() const { return &self; }
12182         const LDKC2Tuple_u64CVec_u8ZZ* operator ->() const { return &self; }
12183 };
12184 class CResult_OfferBolt12ParseErrorZ {
12185 private:
12186         LDKCResult_OfferBolt12ParseErrorZ self;
12187 public:
12188         CResult_OfferBolt12ParseErrorZ(const CResult_OfferBolt12ParseErrorZ&) = delete;
12189         CResult_OfferBolt12ParseErrorZ(CResult_OfferBolt12ParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OfferBolt12ParseErrorZ)); }
12190         CResult_OfferBolt12ParseErrorZ(LDKCResult_OfferBolt12ParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OfferBolt12ParseErrorZ)); }
12191         operator LDKCResult_OfferBolt12ParseErrorZ() && { LDKCResult_OfferBolt12ParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OfferBolt12ParseErrorZ)); return res; }
12192         ~CResult_OfferBolt12ParseErrorZ() { CResult_OfferBolt12ParseErrorZ_free(self); }
12193         CResult_OfferBolt12ParseErrorZ& operator=(CResult_OfferBolt12ParseErrorZ&& o) { CResult_OfferBolt12ParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OfferBolt12ParseErrorZ)); return *this; }
12194         LDKCResult_OfferBolt12ParseErrorZ* operator &() { return &self; }
12195         LDKCResult_OfferBolt12ParseErrorZ* operator ->() { return &self; }
12196         const LDKCResult_OfferBolt12ParseErrorZ* operator &() const { return &self; }
12197         const LDKCResult_OfferBolt12ParseErrorZ* operator ->() const { return &self; }
12198 };
12199 class CResult_ThirtyTwoBytesRetryableSendFailureZ {
12200 private:
12201         LDKCResult_ThirtyTwoBytesRetryableSendFailureZ self;
12202 public:
12203         CResult_ThirtyTwoBytesRetryableSendFailureZ(const CResult_ThirtyTwoBytesRetryableSendFailureZ&) = delete;
12204         CResult_ThirtyTwoBytesRetryableSendFailureZ(CResult_ThirtyTwoBytesRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ThirtyTwoBytesRetryableSendFailureZ)); }
12205         CResult_ThirtyTwoBytesRetryableSendFailureZ(LDKCResult_ThirtyTwoBytesRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ThirtyTwoBytesRetryableSendFailureZ)); }
12206         operator LDKCResult_ThirtyTwoBytesRetryableSendFailureZ() && { LDKCResult_ThirtyTwoBytesRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_ThirtyTwoBytesRetryableSendFailureZ)); return res; }
12207         ~CResult_ThirtyTwoBytesRetryableSendFailureZ() { CResult_ThirtyTwoBytesRetryableSendFailureZ_free(self); }
12208         CResult_ThirtyTwoBytesRetryableSendFailureZ& operator=(CResult_ThirtyTwoBytesRetryableSendFailureZ&& o) { CResult_ThirtyTwoBytesRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ThirtyTwoBytesRetryableSendFailureZ)); return *this; }
12209         LDKCResult_ThirtyTwoBytesRetryableSendFailureZ* operator &() { return &self; }
12210         LDKCResult_ThirtyTwoBytesRetryableSendFailureZ* operator ->() { return &self; }
12211         const LDKCResult_ThirtyTwoBytesRetryableSendFailureZ* operator &() const { return &self; }
12212         const LDKCResult_ThirtyTwoBytesRetryableSendFailureZ* operator ->() const { return &self; }
12213 };
12214 class CVec_MonitorEventZ {
12215 private:
12216         LDKCVec_MonitorEventZ self;
12217 public:
12218         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
12219         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
12220         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
12221         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
12222         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
12223         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
12224         LDKCVec_MonitorEventZ* operator &() { return &self; }
12225         LDKCVec_MonitorEventZ* operator ->() { return &self; }
12226         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
12227         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
12228 };
12229 class CResult_ShutdownDecodeErrorZ {
12230 private:
12231         LDKCResult_ShutdownDecodeErrorZ self;
12232 public:
12233         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
12234         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
12235         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
12236         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
12237         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
12238         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
12239         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
12240         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
12241         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
12242         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
12243 };
12244 class CResult_BigSizeDecodeErrorZ {
12245 private:
12246         LDKCResult_BigSizeDecodeErrorZ self;
12247 public:
12248         CResult_BigSizeDecodeErrorZ(const CResult_BigSizeDecodeErrorZ&) = delete;
12249         CResult_BigSizeDecodeErrorZ(CResult_BigSizeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BigSizeDecodeErrorZ)); }
12250         CResult_BigSizeDecodeErrorZ(LDKCResult_BigSizeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BigSizeDecodeErrorZ)); }
12251         operator LDKCResult_BigSizeDecodeErrorZ() && { LDKCResult_BigSizeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BigSizeDecodeErrorZ)); return res; }
12252         ~CResult_BigSizeDecodeErrorZ() { CResult_BigSizeDecodeErrorZ_free(self); }
12253         CResult_BigSizeDecodeErrorZ& operator=(CResult_BigSizeDecodeErrorZ&& o) { CResult_BigSizeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BigSizeDecodeErrorZ)); return *this; }
12254         LDKCResult_BigSizeDecodeErrorZ* operator &() { return &self; }
12255         LDKCResult_BigSizeDecodeErrorZ* operator ->() { return &self; }
12256         const LDKCResult_BigSizeDecodeErrorZ* operator &() const { return &self; }
12257         const LDKCResult_BigSizeDecodeErrorZ* operator ->() const { return &self; }
12258 };
12259 class CResult_TxOutUtxoLookupErrorZ {
12260 private:
12261         LDKCResult_TxOutUtxoLookupErrorZ self;
12262 public:
12263         CResult_TxOutUtxoLookupErrorZ(const CResult_TxOutUtxoLookupErrorZ&) = delete;
12264         CResult_TxOutUtxoLookupErrorZ(CResult_TxOutUtxoLookupErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); }
12265         CResult_TxOutUtxoLookupErrorZ(LDKCResult_TxOutUtxoLookupErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); }
12266         operator LDKCResult_TxOutUtxoLookupErrorZ() && { LDKCResult_TxOutUtxoLookupErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); return res; }
12267         ~CResult_TxOutUtxoLookupErrorZ() { CResult_TxOutUtxoLookupErrorZ_free(self); }
12268         CResult_TxOutUtxoLookupErrorZ& operator=(CResult_TxOutUtxoLookupErrorZ&& o) { CResult_TxOutUtxoLookupErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); return *this; }
12269         LDKCResult_TxOutUtxoLookupErrorZ* operator &() { return &self; }
12270         LDKCResult_TxOutUtxoLookupErrorZ* operator ->() { return &self; }
12271         const LDKCResult_TxOutUtxoLookupErrorZ* operator &() const { return &self; }
12272         const LDKCResult_TxOutUtxoLookupErrorZ* operator ->() const { return &self; }
12273 };
12274 class CResult_BlindedPathNoneZ {
12275 private:
12276         LDKCResult_BlindedPathNoneZ self;
12277 public:
12278         CResult_BlindedPathNoneZ(const CResult_BlindedPathNoneZ&) = delete;
12279         CResult_BlindedPathNoneZ(CResult_BlindedPathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); }
12280         CResult_BlindedPathNoneZ(LDKCResult_BlindedPathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); }
12281         operator LDKCResult_BlindedPathNoneZ() && { LDKCResult_BlindedPathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); return res; }
12282         ~CResult_BlindedPathNoneZ() { CResult_BlindedPathNoneZ_free(self); }
12283         CResult_BlindedPathNoneZ& operator=(CResult_BlindedPathNoneZ&& o) { CResult_BlindedPathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); return *this; }
12284         LDKCResult_BlindedPathNoneZ* operator &() { return &self; }
12285         LDKCResult_BlindedPathNoneZ* operator ->() { return &self; }
12286         const LDKCResult_BlindedPathNoneZ* operator &() const { return &self; }
12287         const LDKCResult_BlindedPathNoneZ* operator ->() const { return &self; }
12288 };
12289 class COption_usizeZ {
12290 private:
12291         LDKCOption_usizeZ self;
12292 public:
12293         COption_usizeZ(const COption_usizeZ&) = delete;
12294         COption_usizeZ(COption_usizeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_usizeZ)); }
12295         COption_usizeZ(LDKCOption_usizeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_usizeZ)); }
12296         operator LDKCOption_usizeZ() && { LDKCOption_usizeZ res = self; memset(&self, 0, sizeof(LDKCOption_usizeZ)); return res; }
12297         ~COption_usizeZ() { COption_usizeZ_free(self); }
12298         COption_usizeZ& operator=(COption_usizeZ&& o) { COption_usizeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_usizeZ)); return *this; }
12299         LDKCOption_usizeZ* operator &() { return &self; }
12300         LDKCOption_usizeZ* operator ->() { return &self; }
12301         const LDKCOption_usizeZ* operator &() const { return &self; }
12302         const LDKCOption_usizeZ* operator ->() const { return &self; }
12303 };
12304 class CResult_NoneNoneZ {
12305 private:
12306         LDKCResult_NoneNoneZ self;
12307 public:
12308         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
12309         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
12310         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
12311         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
12312         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
12313         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
12314         LDKCResult_NoneNoneZ* operator &() { return &self; }
12315         LDKCResult_NoneNoneZ* operator ->() { return &self; }
12316         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
12317         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
12318 };
12319 class CResult_boolPeerHandleErrorZ {
12320 private:
12321         LDKCResult_boolPeerHandleErrorZ self;
12322 public:
12323         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
12324         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
12325         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
12326         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
12327         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
12328         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
12329         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
12330         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
12331         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
12332         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
12333 };
12334 class CResult_ChannelUpdateDecodeErrorZ {
12335 private:
12336         LDKCResult_ChannelUpdateDecodeErrorZ self;
12337 public:
12338         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
12339         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
12340         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
12341         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
12342         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
12343         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
12344         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
12345         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
12346         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
12347         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
12348 };
12349 class CVec_APIErrorZ {
12350 private:
12351         LDKCVec_APIErrorZ self;
12352 public:
12353         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
12354         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
12355         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
12356         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
12357         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
12358         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
12359         LDKCVec_APIErrorZ* operator &() { return &self; }
12360         LDKCVec_APIErrorZ* operator ->() { return &self; }
12361         const LDKCVec_APIErrorZ* operator &() const { return &self; }
12362         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
12363 };
12364 class COption_TxOutZ {
12365 private:
12366         LDKCOption_TxOutZ self;
12367 public:
12368         COption_TxOutZ(const COption_TxOutZ&) = delete;
12369         COption_TxOutZ(COption_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TxOutZ)); }
12370         COption_TxOutZ(LDKCOption_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TxOutZ)); }
12371         operator LDKCOption_TxOutZ() && { LDKCOption_TxOutZ res = self; memset(&self, 0, sizeof(LDKCOption_TxOutZ)); return res; }
12372         ~COption_TxOutZ() { COption_TxOutZ_free(self); }
12373         COption_TxOutZ& operator=(COption_TxOutZ&& o) { COption_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TxOutZ)); return *this; }
12374         LDKCOption_TxOutZ* operator &() { return &self; }
12375         LDKCOption_TxOutZ* operator ->() { return &self; }
12376         const LDKCOption_TxOutZ* operator &() const { return &self; }
12377         const LDKCOption_TxOutZ* operator ->() const { return &self; }
12378 };
12379 class COption_ClosureReasonZ {
12380 private:
12381         LDKCOption_ClosureReasonZ self;
12382 public:
12383         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
12384         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
12385         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
12386         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
12387         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
12388         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
12389         LDKCOption_ClosureReasonZ* operator &() { return &self; }
12390         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
12391         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
12392         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
12393 };
12394 class CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ {
12395 private:
12396         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ self;
12397 public:
12398         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ(const CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ&) = delete;
12399         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ)); }
12400         CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ)); }
12401         operator LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ)); return res; }
12402         ~CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ() { CResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ_free(self); }
12403         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; }
12404         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ* operator &() { return &self; }
12405         LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ* operator ->() { return &self; }
12406         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ* operator &() const { return &self; }
12407         const LDKCResult_C2Tuple_ThirtyTwoBytesChannelMonitorZIOErrorZ* operator ->() const { return &self; }
12408 };
12409 class CResult_TransactionU16LenLimitedDecodeErrorZ {
12410 private:
12411         LDKCResult_TransactionU16LenLimitedDecodeErrorZ self;
12412 public:
12413         CResult_TransactionU16LenLimitedDecodeErrorZ(const CResult_TransactionU16LenLimitedDecodeErrorZ&) = delete;
12414         CResult_TransactionU16LenLimitedDecodeErrorZ(CResult_TransactionU16LenLimitedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedDecodeErrorZ)); }
12415         CResult_TransactionU16LenLimitedDecodeErrorZ(LDKCResult_TransactionU16LenLimitedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionU16LenLimitedDecodeErrorZ)); }
12416         operator LDKCResult_TransactionU16LenLimitedDecodeErrorZ() && { LDKCResult_TransactionU16LenLimitedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionU16LenLimitedDecodeErrorZ)); return res; }
12417         ~CResult_TransactionU16LenLimitedDecodeErrorZ() { CResult_TransactionU16LenLimitedDecodeErrorZ_free(self); }
12418         CResult_TransactionU16LenLimitedDecodeErrorZ& operator=(CResult_TransactionU16LenLimitedDecodeErrorZ&& o) { CResult_TransactionU16LenLimitedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionU16LenLimitedDecodeErrorZ)); return *this; }
12419         LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator &() { return &self; }
12420         LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator ->() { return &self; }
12421         const LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator &() const { return &self; }
12422         const LDKCResult_TransactionU16LenLimitedDecodeErrorZ* operator ->() const { return &self; }
12423 };
12424 class COption_AmountZ {
12425 private:
12426         LDKCOption_AmountZ self;
12427 public:
12428         COption_AmountZ(const COption_AmountZ&) = delete;
12429         COption_AmountZ(COption_AmountZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AmountZ)); }
12430         COption_AmountZ(LDKCOption_AmountZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AmountZ)); }
12431         operator LDKCOption_AmountZ() && { LDKCOption_AmountZ res = self; memset(&self, 0, sizeof(LDKCOption_AmountZ)); return res; }
12432         ~COption_AmountZ() { COption_AmountZ_free(self); }
12433         COption_AmountZ& operator=(COption_AmountZ&& o) { COption_AmountZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AmountZ)); return *this; }
12434         LDKCOption_AmountZ* operator &() { return &self; }
12435         LDKCOption_AmountZ* operator ->() { return &self; }
12436         const LDKCOption_AmountZ* operator &() const { return &self; }
12437         const LDKCOption_AmountZ* operator ->() const { return &self; }
12438 };
12439 class CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ {
12440 private:
12441         LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ self;
12442 public:
12443         CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ(const CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ&) = delete;
12444         CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ(CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ)); }
12445         CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ(LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ)); }
12446         operator LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ() && { LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ)); return res; }
12447         ~CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ() { CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ_free(self); }
12448         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; }
12449         LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ* operator &() { return &self; }
12450         LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ* operator ->() { return &self; }
12451         const LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ* operator &() const { return &self; }
12452         const LDKCResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ* operator ->() const { return &self; }
12453 };
12454 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
12455 private:
12456         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
12457 public:
12458         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
12459         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
12460         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
12461         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
12462         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
12463         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
12464         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
12465         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
12466         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
12467         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
12468 };
12469 class CResult_BestBlockDecodeErrorZ {
12470 private:
12471         LDKCResult_BestBlockDecodeErrorZ self;
12472 public:
12473         CResult_BestBlockDecodeErrorZ(const CResult_BestBlockDecodeErrorZ&) = delete;
12474         CResult_BestBlockDecodeErrorZ(CResult_BestBlockDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BestBlockDecodeErrorZ)); }
12475         CResult_BestBlockDecodeErrorZ(LDKCResult_BestBlockDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BestBlockDecodeErrorZ)); }
12476         operator LDKCResult_BestBlockDecodeErrorZ() && { LDKCResult_BestBlockDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BestBlockDecodeErrorZ)); return res; }
12477         ~CResult_BestBlockDecodeErrorZ() { CResult_BestBlockDecodeErrorZ_free(self); }
12478         CResult_BestBlockDecodeErrorZ& operator=(CResult_BestBlockDecodeErrorZ&& o) { CResult_BestBlockDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BestBlockDecodeErrorZ)); return *this; }
12479         LDKCResult_BestBlockDecodeErrorZ* operator &() { return &self; }
12480         LDKCResult_BestBlockDecodeErrorZ* operator ->() { return &self; }
12481         const LDKCResult_BestBlockDecodeErrorZ* operator &() const { return &self; }
12482         const LDKCResult_BestBlockDecodeErrorZ* operator ->() const { return &self; }
12483 };
12484 class CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ {
12485 private:
12486         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ self;
12487 public:
12488         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ(const CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ&) = delete;
12489         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ)); }
12490         CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ)); }
12491         operator LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ() && { LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ)); return res; }
12492         ~CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ() { CResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ_free(self); }
12493         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; }
12494         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ* operator &() { return &self; }
12495         LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ* operator ->() { return &self; }
12496         const LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ* operator &() const { return &self; }
12497         const LDKCResult_C2Tuple_ThirtyTwoBytesThirtyTwoBytesZNoneZ* operator ->() const { return &self; }
12498 };
12499 class CResult_OpenChannelV2DecodeErrorZ {
12500 private:
12501         LDKCResult_OpenChannelV2DecodeErrorZ self;
12502 public:
12503         CResult_OpenChannelV2DecodeErrorZ(const CResult_OpenChannelV2DecodeErrorZ&) = delete;
12504         CResult_OpenChannelV2DecodeErrorZ(CResult_OpenChannelV2DecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelV2DecodeErrorZ)); }
12505         CResult_OpenChannelV2DecodeErrorZ(LDKCResult_OpenChannelV2DecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelV2DecodeErrorZ)); }
12506         operator LDKCResult_OpenChannelV2DecodeErrorZ() && { LDKCResult_OpenChannelV2DecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelV2DecodeErrorZ)); return res; }
12507         ~CResult_OpenChannelV2DecodeErrorZ() { CResult_OpenChannelV2DecodeErrorZ_free(self); }
12508         CResult_OpenChannelV2DecodeErrorZ& operator=(CResult_OpenChannelV2DecodeErrorZ&& o) { CResult_OpenChannelV2DecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelV2DecodeErrorZ)); return *this; }
12509         LDKCResult_OpenChannelV2DecodeErrorZ* operator &() { return &self; }
12510         LDKCResult_OpenChannelV2DecodeErrorZ* operator ->() { return &self; }
12511         const LDKCResult_OpenChannelV2DecodeErrorZ* operator &() const { return &self; }
12512         const LDKCResult_OpenChannelV2DecodeErrorZ* operator ->() const { return &self; }
12513 };
12514 class CResult_OutputSpendStatusDecodeErrorZ {
12515 private:
12516         LDKCResult_OutputSpendStatusDecodeErrorZ self;
12517 public:
12518         CResult_OutputSpendStatusDecodeErrorZ(const CResult_OutputSpendStatusDecodeErrorZ&) = delete;
12519         CResult_OutputSpendStatusDecodeErrorZ(CResult_OutputSpendStatusDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutputSpendStatusDecodeErrorZ)); }
12520         CResult_OutputSpendStatusDecodeErrorZ(LDKCResult_OutputSpendStatusDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutputSpendStatusDecodeErrorZ)); }
12521         operator LDKCResult_OutputSpendStatusDecodeErrorZ() && { LDKCResult_OutputSpendStatusDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutputSpendStatusDecodeErrorZ)); return res; }
12522         ~CResult_OutputSpendStatusDecodeErrorZ() { CResult_OutputSpendStatusDecodeErrorZ_free(self); }
12523         CResult_OutputSpendStatusDecodeErrorZ& operator=(CResult_OutputSpendStatusDecodeErrorZ&& o) { CResult_OutputSpendStatusDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutputSpendStatusDecodeErrorZ)); return *this; }
12524         LDKCResult_OutputSpendStatusDecodeErrorZ* operator &() { return &self; }
12525         LDKCResult_OutputSpendStatusDecodeErrorZ* operator ->() { return &self; }
12526         const LDKCResult_OutputSpendStatusDecodeErrorZ* operator &() const { return &self; }
12527         const LDKCResult_OutputSpendStatusDecodeErrorZ* operator ->() const { return &self; }
12528 };
12529 class C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ {
12530 private:
12531         LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ self;
12532 public:
12533         C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ(const C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ&) = delete;
12534         C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ(C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ)); }
12535         C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ(LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ)); }
12536         operator LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ() && { LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ)); return res; }
12537         ~C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ() { C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ_free(self); }
12538         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; }
12539         LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ* operator &() { return &self; }
12540         LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ* operator ->() { return &self; }
12541         const LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ* operator &() const { return &self; }
12542         const LDKC4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZ* operator ->() const { return &self; }
12543 };
12544 class CResult_RouteDecodeErrorZ {
12545 private:
12546         LDKCResult_RouteDecodeErrorZ self;
12547 public:
12548         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
12549         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
12550         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
12551         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
12552         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
12553         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
12554         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
12555         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
12556         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
12557         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
12558 };
12559 class CResult_BlindedFailureDecodeErrorZ {
12560 private:
12561         LDKCResult_BlindedFailureDecodeErrorZ self;
12562 public:
12563         CResult_BlindedFailureDecodeErrorZ(const CResult_BlindedFailureDecodeErrorZ&) = delete;
12564         CResult_BlindedFailureDecodeErrorZ(CResult_BlindedFailureDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedFailureDecodeErrorZ)); }
12565         CResult_BlindedFailureDecodeErrorZ(LDKCResult_BlindedFailureDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedFailureDecodeErrorZ)); }
12566         operator LDKCResult_BlindedFailureDecodeErrorZ() && { LDKCResult_BlindedFailureDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedFailureDecodeErrorZ)); return res; }
12567         ~CResult_BlindedFailureDecodeErrorZ() { CResult_BlindedFailureDecodeErrorZ_free(self); }
12568         CResult_BlindedFailureDecodeErrorZ& operator=(CResult_BlindedFailureDecodeErrorZ&& o) { CResult_BlindedFailureDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedFailureDecodeErrorZ)); return *this; }
12569         LDKCResult_BlindedFailureDecodeErrorZ* operator &() { return &self; }
12570         LDKCResult_BlindedFailureDecodeErrorZ* operator ->() { return &self; }
12571         const LDKCResult_BlindedFailureDecodeErrorZ* operator &() const { return &self; }
12572         const LDKCResult_BlindedFailureDecodeErrorZ* operator ->() const { return &self; }
12573 };
12574 class CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ {
12575 private:
12576         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ self;
12577 public:
12578         CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ(const CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ&) = delete;
12579         CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ(CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ)); }
12580         CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ)); }
12581         operator LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ() && { LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ)); return res; }
12582         ~CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ() { CResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ_free(self); }
12583         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; }
12584         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ* operator &() { return &self; }
12585         LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ* operator ->() { return &self; }
12586         const LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ* operator &() const { return &self; }
12587         const LDKCResult_CVec_C2Tuple_ThirtyTwoBytesChannelMonitorZZIOErrorZ* operator ->() const { return &self; }
12588 };
12589 class COption_NoneZ {
12590 private:
12591         LDKCOption_NoneZ self;
12592 public:
12593         COption_NoneZ(const COption_NoneZ&) = delete;
12594         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
12595         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
12596         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
12597         ~COption_NoneZ() { COption_NoneZ_free(self); }
12598         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
12599         LDKCOption_NoneZ* operator &() { return &self; }
12600         LDKCOption_NoneZ* operator ->() { return &self; }
12601         const LDKCOption_NoneZ* operator &() const { return &self; }
12602         const LDKCOption_NoneZ* operator ->() const { return &self; }
12603 };
12604 class CResult_SpliceLockedDecodeErrorZ {
12605 private:
12606         LDKCResult_SpliceLockedDecodeErrorZ self;
12607 public:
12608         CResult_SpliceLockedDecodeErrorZ(const CResult_SpliceLockedDecodeErrorZ&) = delete;
12609         CResult_SpliceLockedDecodeErrorZ(CResult_SpliceLockedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpliceLockedDecodeErrorZ)); }
12610         CResult_SpliceLockedDecodeErrorZ(LDKCResult_SpliceLockedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpliceLockedDecodeErrorZ)); }
12611         operator LDKCResult_SpliceLockedDecodeErrorZ() && { LDKCResult_SpliceLockedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpliceLockedDecodeErrorZ)); return res; }
12612         ~CResult_SpliceLockedDecodeErrorZ() { CResult_SpliceLockedDecodeErrorZ_free(self); }
12613         CResult_SpliceLockedDecodeErrorZ& operator=(CResult_SpliceLockedDecodeErrorZ&& o) { CResult_SpliceLockedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpliceLockedDecodeErrorZ)); return *this; }
12614         LDKCResult_SpliceLockedDecodeErrorZ* operator &() { return &self; }
12615         LDKCResult_SpliceLockedDecodeErrorZ* operator ->() { return &self; }
12616         const LDKCResult_SpliceLockedDecodeErrorZ* operator &() const { return &self; }
12617         const LDKCResult_SpliceLockedDecodeErrorZ* operator ->() const { return &self; }
12618 };
12619 class COption_CVec_u8ZZ {
12620 private:
12621         LDKCOption_CVec_u8ZZ self;
12622 public:
12623         COption_CVec_u8ZZ(const COption_CVec_u8ZZ&) = delete;
12624         COption_CVec_u8ZZ(COption_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_u8ZZ)); }
12625         COption_CVec_u8ZZ(LDKCOption_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_u8ZZ)); }
12626         operator LDKCOption_CVec_u8ZZ() && { LDKCOption_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_u8ZZ)); return res; }
12627         ~COption_CVec_u8ZZ() { COption_CVec_u8ZZ_free(self); }
12628         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; }
12629         LDKCOption_CVec_u8ZZ* operator &() { return &self; }
12630         LDKCOption_CVec_u8ZZ* operator ->() { return &self; }
12631         const LDKCOption_CVec_u8ZZ* operator &() const { return &self; }
12632         const LDKCOption_CVec_u8ZZ* operator ->() const { return &self; }
12633 };
12634 class COption_QuantityZ {
12635 private:
12636         LDKCOption_QuantityZ self;
12637 public:
12638         COption_QuantityZ(const COption_QuantityZ&) = delete;
12639         COption_QuantityZ(COption_QuantityZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_QuantityZ)); }
12640         COption_QuantityZ(LDKCOption_QuantityZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_QuantityZ)); }
12641         operator LDKCOption_QuantityZ() && { LDKCOption_QuantityZ res = self; memset(&self, 0, sizeof(LDKCOption_QuantityZ)); return res; }
12642         ~COption_QuantityZ() { COption_QuantityZ_free(self); }
12643         COption_QuantityZ& operator=(COption_QuantityZ&& o) { COption_QuantityZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_QuantityZ)); return *this; }
12644         LDKCOption_QuantityZ* operator &() { return &self; }
12645         LDKCOption_QuantityZ* operator ->() { return &self; }
12646         const LDKCOption_QuantityZ* operator &() const { return &self; }
12647         const LDKCOption_QuantityZ* operator ->() const { return &self; }
12648 };
12649 class CResult_TxAddOutputDecodeErrorZ {
12650 private:
12651         LDKCResult_TxAddOutputDecodeErrorZ self;
12652 public:
12653         CResult_TxAddOutputDecodeErrorZ(const CResult_TxAddOutputDecodeErrorZ&) = delete;
12654         CResult_TxAddOutputDecodeErrorZ(CResult_TxAddOutputDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxAddOutputDecodeErrorZ)); }
12655         CResult_TxAddOutputDecodeErrorZ(LDKCResult_TxAddOutputDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxAddOutputDecodeErrorZ)); }
12656         operator LDKCResult_TxAddOutputDecodeErrorZ() && { LDKCResult_TxAddOutputDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxAddOutputDecodeErrorZ)); return res; }
12657         ~CResult_TxAddOutputDecodeErrorZ() { CResult_TxAddOutputDecodeErrorZ_free(self); }
12658         CResult_TxAddOutputDecodeErrorZ& operator=(CResult_TxAddOutputDecodeErrorZ&& o) { CResult_TxAddOutputDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxAddOutputDecodeErrorZ)); return *this; }
12659         LDKCResult_TxAddOutputDecodeErrorZ* operator &() { return &self; }
12660         LDKCResult_TxAddOutputDecodeErrorZ* operator ->() { return &self; }
12661         const LDKCResult_TxAddOutputDecodeErrorZ* operator &() const { return &self; }
12662         const LDKCResult_TxAddOutputDecodeErrorZ* operator ->() const { return &self; }
12663 };
12664 class CResult_HtlcBasepointDecodeErrorZ {
12665 private:
12666         LDKCResult_HtlcBasepointDecodeErrorZ self;
12667 public:
12668         CResult_HtlcBasepointDecodeErrorZ(const CResult_HtlcBasepointDecodeErrorZ&) = delete;
12669         CResult_HtlcBasepointDecodeErrorZ(CResult_HtlcBasepointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HtlcBasepointDecodeErrorZ)); }
12670         CResult_HtlcBasepointDecodeErrorZ(LDKCResult_HtlcBasepointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HtlcBasepointDecodeErrorZ)); }
12671         operator LDKCResult_HtlcBasepointDecodeErrorZ() && { LDKCResult_HtlcBasepointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HtlcBasepointDecodeErrorZ)); return res; }
12672         ~CResult_HtlcBasepointDecodeErrorZ() { CResult_HtlcBasepointDecodeErrorZ_free(self); }
12673         CResult_HtlcBasepointDecodeErrorZ& operator=(CResult_HtlcBasepointDecodeErrorZ&& o) { CResult_HtlcBasepointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HtlcBasepointDecodeErrorZ)); return *this; }
12674         LDKCResult_HtlcBasepointDecodeErrorZ* operator &() { return &self; }
12675         LDKCResult_HtlcBasepointDecodeErrorZ* operator ->() { return &self; }
12676         const LDKCResult_HtlcBasepointDecodeErrorZ* operator &() const { return &self; }
12677         const LDKCResult_HtlcBasepointDecodeErrorZ* operator ->() const { return &self; }
12678 };
12679 class C2Tuple_OutPointChannelIdZ {
12680 private:
12681         LDKC2Tuple_OutPointChannelIdZ self;
12682 public:
12683         C2Tuple_OutPointChannelIdZ(const C2Tuple_OutPointChannelIdZ&) = delete;
12684         C2Tuple_OutPointChannelIdZ(C2Tuple_OutPointChannelIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointChannelIdZ)); }
12685         C2Tuple_OutPointChannelIdZ(LDKC2Tuple_OutPointChannelIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointChannelIdZ)); }
12686         operator LDKC2Tuple_OutPointChannelIdZ() && { LDKC2Tuple_OutPointChannelIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointChannelIdZ)); return res; }
12687         ~C2Tuple_OutPointChannelIdZ() { C2Tuple_OutPointChannelIdZ_free(self); }
12688         C2Tuple_OutPointChannelIdZ& operator=(C2Tuple_OutPointChannelIdZ&& o) { C2Tuple_OutPointChannelIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointChannelIdZ)); return *this; }
12689         LDKC2Tuple_OutPointChannelIdZ* operator &() { return &self; }
12690         LDKC2Tuple_OutPointChannelIdZ* operator ->() { return &self; }
12691         const LDKC2Tuple_OutPointChannelIdZ* operator &() const { return &self; }
12692         const LDKC2Tuple_OutPointChannelIdZ* operator ->() const { return &self; }
12693 };
12694
12695 inline LDK::CResult_SchnorrSignatureNoneZ SignBolt12InvoiceFn::sign_invoice(const struct LDKUnsignedBolt12Invoice *NONNULL_PTR message) {
12696         LDK::CResult_SchnorrSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, message);
12697         return ret;
12698 }
12699 inline LDKPublicKey ChannelSigner::get_per_commitment_point(uint64_t idx) {
12700         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
12701         return ret;
12702 }
12703 inline LDKThirtyTwoBytes ChannelSigner::release_commitment_secret(uint64_t idx) {
12704         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
12705         return ret;
12706 }
12707 inline LDK::CResult_NoneNoneZ ChannelSigner::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_ThirtyTwoBytesZ outbound_htlc_preimages) {
12708         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, outbound_htlc_preimages);
12709         return ret;
12710 }
12711 inline LDK::CResult_NoneNoneZ ChannelSigner::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
12712         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
12713         return ret;
12714 }
12715 inline LDKThirtyTwoBytes ChannelSigner::channel_keys_id() {
12716         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
12717         return ret;
12718 }
12719 inline void ChannelSigner::provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
12720         (self.provide_channel_parameters)(self.this_arg, channel_parameters);
12721 }
12722 inline LDKThirtyTwoBytes EntropySource::get_secure_random_bytes() {
12723         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
12724         return ret;
12725 }
12726 inline LDKThirtyTwoBytes NodeSigner::get_inbound_payment_key_material() {
12727         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
12728         return ret;
12729 }
12730 inline LDK::CResult_PublicKeyNoneZ NodeSigner::get_node_id(enum LDKRecipient recipient) {
12731         LDK::CResult_PublicKeyNoneZ ret = (self.get_node_id)(self.this_arg, recipient);
12732         return ret;
12733 }
12734 inline LDK::CResult_ThirtyTwoBytesNoneZ NodeSigner::ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_BigEndianScalarZ tweak) {
12735         LDK::CResult_ThirtyTwoBytesNoneZ ret = (self.ecdh)(self.this_arg, recipient, other_key, tweak);
12736         return ret;
12737 }
12738 inline LDK::CResult_RecoverableSignatureNoneZ NodeSigner::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient) {
12739         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, recipient);
12740         return ret;
12741 }
12742 inline LDK::CResult_SchnorrSignatureNoneZ NodeSigner::sign_bolt12_invoice_request(const struct LDKUnsignedInvoiceRequest *NONNULL_PTR invoice_request) {
12743         LDK::CResult_SchnorrSignatureNoneZ ret = (self.sign_bolt12_invoice_request)(self.this_arg, invoice_request);
12744         return ret;
12745 }
12746 inline LDK::CResult_SchnorrSignatureNoneZ NodeSigner::sign_bolt12_invoice(const struct LDKUnsignedBolt12Invoice *NONNULL_PTR invoice) {
12747         LDK::CResult_SchnorrSignatureNoneZ ret = (self.sign_bolt12_invoice)(self.this_arg, invoice);
12748         return ret;
12749 }
12750 inline LDK::CResult_ECDSASignatureNoneZ NodeSigner::sign_gossip_message(struct LDKUnsignedGossipMessage msg) {
12751         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_gossip_message)(self.this_arg, msg);
12752         return ret;
12753 }
12754 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) {
12755         LDK::CResult_TransactionNoneZ ret = (self.spend_spendable_outputs)(self.this_arg, descriptors, outputs, change_destination_script, feerate_sat_per_1000_weight, locktime);
12756         return ret;
12757 }
12758 inline LDKThirtyTwoBytes SignerProvider::generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id) {
12759         LDKThirtyTwoBytes ret = (self.generate_channel_keys_id)(self.this_arg, inbound, channel_value_satoshis, user_channel_id);
12760         return ret;
12761 }
12762 inline LDK::WriteableEcdsaChannelSigner SignerProvider::derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id) {
12763         LDK::WriteableEcdsaChannelSigner ret = (self.derive_channel_signer)(self.this_arg, channel_value_satoshis, channel_keys_id);
12764         return ret;
12765 }
12766 inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ SignerProvider::read_chan_signer(struct LDKu8slice reader) {
12767         LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
12768         return ret;
12769 }
12770 inline LDK::CResult_CVec_u8ZNoneZ SignerProvider::get_destination_script(struct LDKThirtyTwoBytes channel_keys_id) {
12771         LDK::CResult_CVec_u8ZNoneZ ret = (self.get_destination_script)(self.this_arg, channel_keys_id);
12772         return ret;
12773 }
12774 inline LDK::CResult_ShutdownScriptNoneZ SignerProvider::get_shutdown_scriptpubkey() {
12775         LDK::CResult_ShutdownScriptNoneZ ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
12776         return ret;
12777 }
12778 inline LDK::CResult_CVec_u8ZNoneZ ChangeDestinationSource::get_change_destination_script() {
12779         LDK::CResult_CVec_u8ZNoneZ ret = (self.get_change_destination_script)(self.this_arg);
12780         return ret;
12781 }
12782 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) {
12783         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, first_hops, inflight_htlcs);
12784         return ret;
12785 }
12786 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) {
12787         LDK::CResult_RouteLightningErrorZ ret = (self.find_route_with_id)(self.this_arg, payer, route_params, first_hops, inflight_htlcs, _payment_hash, _payment_id);
12788         return ret;
12789 }
12790 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) {
12791         LDK::CResult_CVec_C2Tuple_BlindedPayInfoBlindedPathZZNoneZ ret = (self.create_blinded_payment_paths)(self.this_arg, recipient, first_hops, tlvs, amount_msats);
12792         return ret;
12793 }
12794 inline uint64_t ScoreLookUp::channel_penalty_msat(const struct LDKCandidateRouteHop *NONNULL_PTR candidate, struct LDKChannelUsage usage, const struct LDKProbabilisticScoringFeeParameters *NONNULL_PTR score_params) {
12795         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, candidate, usage, score_params);
12796         return ret;
12797 }
12798 inline void ScoreUpdate::payment_path_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id, uint64_t duration_since_epoch) {
12799         (self.payment_path_failed)(self.this_arg, path, short_channel_id, duration_since_epoch);
12800 }
12801 inline void ScoreUpdate::payment_path_successful(const struct LDKPath *NONNULL_PTR path, uint64_t duration_since_epoch) {
12802         (self.payment_path_successful)(self.this_arg, path, duration_since_epoch);
12803 }
12804 inline void ScoreUpdate::probe_failed(const struct LDKPath *NONNULL_PTR path, uint64_t short_channel_id, uint64_t duration_since_epoch) {
12805         (self.probe_failed)(self.this_arg, path, short_channel_id, duration_since_epoch);
12806 }
12807 inline void ScoreUpdate::probe_successful(const struct LDKPath *NONNULL_PTR path, uint64_t duration_since_epoch) {
12808         (self.probe_successful)(self.this_arg, path, duration_since_epoch);
12809 }
12810 inline void ScoreUpdate::time_passed(uint64_t duration_since_epoch) {
12811         (self.time_passed)(self.this_arg, duration_since_epoch);
12812 }
12813 inline LDK::ScoreLookUp LockableScore::read_lock() {
12814         LDK::ScoreLookUp ret = (self.read_lock)(self.this_arg);
12815         return ret;
12816 }
12817 inline LDK::ScoreUpdate LockableScore::write_lock() {
12818         LDK::ScoreUpdate ret = (self.write_lock)(self.this_arg);
12819         return ret;
12820 }
12821 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
12822         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
12823 }
12824 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
12825         (self.block_connected)(self.this_arg, block, height);
12826 }
12827 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
12828         (self.block_disconnected)(self.this_arg, header, height);
12829 }
12830 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
12831         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
12832 }
12833 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
12834         (self.transaction_unconfirmed)(self.this_arg, txid);
12835 }
12836 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
12837         (self.best_block_updated)(self.this_arg, header, height);
12838 }
12839 inline LDK::CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ Confirm::get_relevant_txids() {
12840         LDK::CVec_C3Tuple_ThirtyTwoBytesu32COption_ThirtyTwoBytesZZZ ret = (self.get_relevant_txids)(self.this_arg);
12841         return ret;
12842 }
12843 inline LDK::CResult_ChannelMonitorUpdateStatusNoneZ Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
12844         LDK::CResult_ChannelMonitorUpdateStatusNoneZ ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
12845         return ret;
12846 }
12847 inline LDK::ChannelMonitorUpdateStatus Watch::update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update) {
12848         LDK::ChannelMonitorUpdateStatus ret = (self.update_channel)(self.this_arg, funding_txo, update);
12849         return ret;
12850 }
12851 inline LDK::CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ Watch::release_pending_monitor_events() {
12852         LDK::CVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ ret = (self.release_pending_monitor_events)(self.this_arg);
12853         return ret;
12854 }
12855 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
12856         (self.register_tx)(self.this_arg, txid, script_pubkey);
12857 }
12858 inline void Filter::register_output(struct LDKWatchedOutput output) {
12859         (self.register_output)(self.this_arg, output);
12860 }
12861 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) {
12862         LDK::CResult_CoinSelectionNoneZ ret = (self.select_confirmed_utxos)(self.this_arg, claim_id, must_spend, must_pay_to, target_feerate_sat_per_1000_weight);
12863         return ret;
12864 }
12865 inline LDK::CResult_TransactionNoneZ CoinSelectionSource::sign_psbt(struct LDKCVec_u8Z psbt) {
12866         LDK::CResult_TransactionNoneZ ret = (self.sign_psbt)(self.this_arg, psbt);
12867         return ret;
12868 }
12869 inline LDK::CResult_CVec_UtxoZNoneZ WalletSource::list_confirmed_utxos() {
12870         LDK::CResult_CVec_UtxoZNoneZ ret = (self.list_confirmed_utxos)(self.this_arg);
12871         return ret;
12872 }
12873 inline LDK::CResult_CVec_u8ZNoneZ WalletSource::get_change_script() {
12874         LDK::CResult_CVec_u8ZNoneZ ret = (self.get_change_script)(self.this_arg);
12875         return ret;
12876 }
12877 inline LDK::CResult_TransactionNoneZ WalletSource::sign_psbt(struct LDKCVec_u8Z psbt) {
12878         LDK::CResult_TransactionNoneZ ret = (self.sign_psbt)(self.this_arg, psbt);
12879         return ret;
12880 }
12881 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) {
12882         LDK::CResult_C2Tuple_ECDSASignatureCVec_ECDSASignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, inbound_htlc_preimages, outbound_htlc_preimages);
12883         return ret;
12884 }
12885 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
12886         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_holder_commitment)(self.this_arg, commitment_tx);
12887         return ret;
12888 }
12889 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]) {
12890         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
12891         return ret;
12892 }
12893 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) {
12894         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
12895         return ret;
12896 }
12897 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_holder_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, const struct LDKHTLCDescriptor *NONNULL_PTR htlc_descriptor) {
12898         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_holder_htlc_transaction)(self.this_arg, htlc_tx, input, htlc_descriptor);
12899         return ret;
12900 }
12901 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) {
12902         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
12903         return ret;
12904 }
12905 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
12906         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
12907         return ret;
12908 }
12909 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input) {
12910         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_holder_anchor_input)(self.this_arg, anchor_tx, input);
12911         return ret;
12912 }
12913 inline LDK::CResult_ECDSASignatureNoneZ EcdsaChannelSigner::sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
12914         LDK::CResult_ECDSASignatureNoneZ ret = (self.sign_channel_announcement_with_funding_key)(self.this_arg, msg);
12915         return ret;
12916 }
12917 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
12918         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
12919         return ret;
12920 }
12921 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
12922         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
12923         return ret;
12924 }
12925 inline LDK::NodeFeatures CustomMessageHandler::provided_node_features() {
12926         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
12927         return ret;
12928 }
12929 inline LDK::InitFeatures CustomMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
12930         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
12931         return ret;
12932 }
12933 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
12934         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
12935         return ret;
12936 }
12937 inline void SocketDescriptor::disconnect_socket() {
12938         (self.disconnect_socket)(self.this_arg);
12939 }
12940 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
12941         bool ret = (self.eq)(self.this_arg, other_arg);
12942         return ret;
12943 }
12944 inline uint64_t SocketDescriptor::hash() {
12945         uint64_t ret = (self.hash)(self.this_arg);
12946         return ret;
12947 }
12948 inline LDK::CResult_CVec_u8ZIOErrorZ KVStore::read(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key) {
12949         LDK::CResult_CVec_u8ZIOErrorZ ret = (self.read)(self.this_arg, primary_namespace, secondary_namespace, key);
12950         return ret;
12951 }
12952 inline LDK::CResult_NoneIOErrorZ KVStore::write(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key, struct LDKu8slice buf) {
12953         LDK::CResult_NoneIOErrorZ ret = (self.write)(self.this_arg, primary_namespace, secondary_namespace, key, buf);
12954         return ret;
12955 }
12956 inline LDK::CResult_NoneIOErrorZ KVStore::remove(struct LDKStr primary_namespace, struct LDKStr secondary_namespace, struct LDKStr key, bool lazy) {
12957         LDK::CResult_NoneIOErrorZ ret = (self.remove)(self.this_arg, primary_namespace, secondary_namespace, key, lazy);
12958         return ret;
12959 }
12960 inline LDK::CResult_CVec_StrZIOErrorZ KVStore::list(struct LDKStr primary_namespace, struct LDKStr secondary_namespace) {
12961         LDK::CResult_CVec_StrZIOErrorZ ret = (self.list)(self.this_arg, primary_namespace, secondary_namespace);
12962         return ret;
12963 }
12964 inline LDK::CResult_NoneIOErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
12965         LDK::CResult_NoneIOErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
12966         return ret;
12967 }
12968 inline LDK::CResult_NoneIOErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
12969         LDK::CResult_NoneIOErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
12970         return ret;
12971 }
12972 inline LDK::CResult_NoneIOErrorZ Persister::persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer) {
12973         LDK::CResult_NoneIOErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
12974         return ret;
12975 }
12976 inline LDK::CResult_SchnorrSignatureNoneZ SignInvoiceRequestFn::sign_invoice_request(const struct LDKUnsignedInvoiceRequest *NONNULL_PTR message) {
12977         LDK::CResult_SchnorrSignatureNoneZ ret = (self.sign_invoice_request)(self.this_arg, message);
12978         return ret;
12979 }
12980 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg) {
12981         (self.handle_open_channel)(self.this_arg, their_node_id, msg);
12982 }
12983 inline void ChannelMessageHandler::handle_open_channel_v2(struct LDKPublicKey their_node_id, const struct LDKOpenChannelV2 *NONNULL_PTR msg) {
12984         (self.handle_open_channel_v2)(self.this_arg, their_node_id, msg);
12985 }
12986 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg) {
12987         (self.handle_accept_channel)(self.this_arg, their_node_id, msg);
12988 }
12989 inline void ChannelMessageHandler::handle_accept_channel_v2(struct LDKPublicKey their_node_id, const struct LDKAcceptChannelV2 *NONNULL_PTR msg) {
12990         (self.handle_accept_channel_v2)(self.this_arg, their_node_id, msg);
12991 }
12992 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
12993         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
12994 }
12995 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
12996         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
12997 }
12998 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
12999         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
13000 }
13001 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg) {
13002         (self.handle_shutdown)(self.this_arg, their_node_id, msg);
13003 }
13004 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
13005         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
13006 }
13007 inline void ChannelMessageHandler::handle_stfu(struct LDKPublicKey their_node_id, const struct LDKStfu *NONNULL_PTR msg) {
13008         (self.handle_stfu)(self.this_arg, their_node_id, msg);
13009 }
13010 inline void ChannelMessageHandler::handle_tx_add_input(struct LDKPublicKey their_node_id, const struct LDKTxAddInput *NONNULL_PTR msg) {
13011         (self.handle_tx_add_input)(self.this_arg, their_node_id, msg);
13012 }
13013 inline void ChannelMessageHandler::handle_tx_add_output(struct LDKPublicKey their_node_id, const struct LDKTxAddOutput *NONNULL_PTR msg) {
13014         (self.handle_tx_add_output)(self.this_arg, their_node_id, msg);
13015 }
13016 inline void ChannelMessageHandler::handle_tx_remove_input(struct LDKPublicKey their_node_id, const struct LDKTxRemoveInput *NONNULL_PTR msg) {
13017         (self.handle_tx_remove_input)(self.this_arg, their_node_id, msg);
13018 }
13019 inline void ChannelMessageHandler::handle_tx_remove_output(struct LDKPublicKey their_node_id, const struct LDKTxRemoveOutput *NONNULL_PTR msg) {
13020         (self.handle_tx_remove_output)(self.this_arg, their_node_id, msg);
13021 }
13022 inline void ChannelMessageHandler::handle_tx_complete(struct LDKPublicKey their_node_id, const struct LDKTxComplete *NONNULL_PTR msg) {
13023         (self.handle_tx_complete)(self.this_arg, their_node_id, msg);
13024 }
13025 inline void ChannelMessageHandler::handle_tx_signatures(struct LDKPublicKey their_node_id, const struct LDKTxSignatures *NONNULL_PTR msg) {
13026         (self.handle_tx_signatures)(self.this_arg, their_node_id, msg);
13027 }
13028 inline void ChannelMessageHandler::handle_tx_init_rbf(struct LDKPublicKey their_node_id, const struct LDKTxInitRbf *NONNULL_PTR msg) {
13029         (self.handle_tx_init_rbf)(self.this_arg, their_node_id, msg);
13030 }
13031 inline void ChannelMessageHandler::handle_tx_ack_rbf(struct LDKPublicKey their_node_id, const struct LDKTxAckRbf *NONNULL_PTR msg) {
13032         (self.handle_tx_ack_rbf)(self.this_arg, their_node_id, msg);
13033 }
13034 inline void ChannelMessageHandler::handle_tx_abort(struct LDKPublicKey their_node_id, const struct LDKTxAbort *NONNULL_PTR msg) {
13035         (self.handle_tx_abort)(self.this_arg, their_node_id, msg);
13036 }
13037 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
13038         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
13039 }
13040 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
13041         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
13042 }
13043 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
13044         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
13045 }
13046 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
13047         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
13048 }
13049 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
13050         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
13051 }
13052 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
13053         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
13054 }
13055 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
13056         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
13057 }
13058 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
13059         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
13060 }
13061 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
13062         (self.peer_disconnected)(self.this_arg, their_node_id);
13063 }
13064 inline LDK::CResult_NoneNoneZ ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound) {
13065         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, msg, inbound);
13066         return ret;
13067 }
13068 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
13069         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
13070 }
13071 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
13072         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
13073 }
13074 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
13075         (self.handle_error)(self.this_arg, their_node_id, msg);
13076 }
13077 inline LDK::NodeFeatures ChannelMessageHandler::provided_node_features() {
13078         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
13079         return ret;
13080 }
13081 inline LDK::InitFeatures ChannelMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
13082         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
13083         return ret;
13084 }
13085 inline LDK::COption_CVec_ThirtyTwoBytesZZ ChannelMessageHandler::get_chain_hashes() {
13086         LDK::COption_CVec_ThirtyTwoBytesZZ ret = (self.get_chain_hashes)(self.this_arg);
13087         return ret;
13088 }
13089 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
13090         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
13091         return ret;
13092 }
13093 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
13094         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
13095         return ret;
13096 }
13097 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
13098         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
13099         return ret;
13100 }
13101 inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcement(uint64_t starting_point) {
13102         LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcement)(self.this_arg, starting_point);
13103         return ret;
13104 }
13105 inline LDK::NodeAnnouncement RoutingMessageHandler::get_next_node_announcement(struct LDKNodeId starting_point) {
13106         LDK::NodeAnnouncement ret = (self.get_next_node_announcement)(self.this_arg, starting_point);
13107         return ret;
13108 }
13109 inline LDK::CResult_NoneNoneZ RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
13110         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
13111         return ret;
13112 }
13113 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
13114         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
13115         return ret;
13116 }
13117 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
13118         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
13119         return ret;
13120 }
13121 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
13122         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
13123         return ret;
13124 }
13125 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
13126         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
13127         return ret;
13128 }
13129 inline bool RoutingMessageHandler::processing_queue_high() {
13130         bool ret = (self.processing_queue_high)(self.this_arg);
13131         return ret;
13132 }
13133 inline LDK::NodeFeatures RoutingMessageHandler::provided_node_features() {
13134         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
13135         return ret;
13136 }
13137 inline LDK::InitFeatures RoutingMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
13138         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
13139         return ret;
13140 }
13141 inline LDK::CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ OnionMessageHandler::get_and_clear_connections_needed() {
13142         LDK::CVec_C2Tuple_PublicKeyCVec_SocketAddressZZZ ret = (self.get_and_clear_connections_needed)(self.this_arg);
13143         return ret;
13144 }
13145 inline void OnionMessageHandler::handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg) {
13146         (self.handle_onion_message)(self.this_arg, peer_node_id, msg);
13147 }
13148 inline LDK::OnionMessage OnionMessageHandler::next_onion_message_for_peer(struct LDKPublicKey peer_node_id) {
13149         LDK::OnionMessage ret = (self.next_onion_message_for_peer)(self.this_arg, peer_node_id);
13150         return ret;
13151 }
13152 inline LDK::CResult_NoneNoneZ OnionMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
13153         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
13154         return ret;
13155 }
13156 inline void OnionMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
13157         (self.peer_disconnected)(self.this_arg, their_node_id);
13158 }
13159 inline void OnionMessageHandler::timer_tick_occurred() {
13160         (self.timer_tick_occurred)(self.this_arg);
13161 }
13162 inline LDK::NodeFeatures OnionMessageHandler::provided_node_features() {
13163         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
13164         return ret;
13165 }
13166 inline LDK::InitFeatures OnionMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
13167         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
13168         return ret;
13169 }
13170 inline void Logger::log(struct LDKRecord record) {
13171         (self.log)(self.this_arg, record);
13172 }
13173 inline void FutureCallback::call() {
13174         (self.call)(self.this_arg);
13175 }
13176 inline LDK::COption_OffersMessageZ OffersMessageHandler::handle_message(struct LDKOffersMessage message) {
13177         LDK::COption_OffersMessageZ ret = (self.handle_message)(self.this_arg, message);
13178         return ret;
13179 }
13180 inline LDK::CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ OffersMessageHandler::release_pending_messages() {
13181         LDK::CVec_C3Tuple_OffersMessageDestinationBlindedPathZZ ret = (self.release_pending_messages)(self.this_arg);
13182         return ret;
13183 }
13184 inline void BroadcasterInterface::broadcast_transactions(struct LDKCVec_TransactionZ txs) {
13185         (self.broadcast_transactions)(self.this_arg, txs);
13186 }
13187 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
13188         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
13189         return ret;
13190 }
13191 inline uint64_t OnionMessageContents::tlv_type() {
13192         uint64_t ret = (self.tlv_type)(self.this_arg);
13193         return ret;
13194 }
13195 inline LDK::Str OnionMessageContents::debug_str() {
13196         LDK::Str ret = (self.debug_str)(self.this_arg);
13197         return ret;
13198 }
13199 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
13200         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
13201         return ret;
13202 }
13203 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
13204         (self.process_pending_events)(self.this_arg, handler);
13205 }
13206 inline void EventHandler::handle_event(struct LDKEvent event) {
13207         (self.handle_event)(self.this_arg, event);
13208 }
13209 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
13210         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
13211         return ret;
13212 }
13213 inline uint16_t Type::type_id() {
13214         uint16_t ret = (self.type_id)(self.this_arg);
13215         return ret;
13216 }
13217 inline LDK::Str Type::debug_str() {
13218         LDK::Str ret = (self.debug_str)(self.this_arg);
13219         return ret;
13220 }
13221 inline LDK::UtxoResult UtxoLookup::get_utxo(const uint8_t (*chain_hash)[32], uint64_t short_channel_id) {
13222         LDK::UtxoResult ret = (self.get_utxo)(self.this_arg, chain_hash, short_channel_id);
13223         return ret;
13224 }
13225 inline LDK::CResult_OnionMessagePathNoneZ MessageRouter::find_path(struct LDKPublicKey sender, struct LDKCVec_PublicKeyZ peers, struct LDKDestination destination) {
13226         LDK::CResult_OnionMessagePathNoneZ ret = (self.find_path)(self.this_arg, sender, peers, destination);
13227         return ret;
13228 }
13229 inline LDK::CResult_CVec_BlindedPathZNoneZ MessageRouter::create_blinded_paths(struct LDKPublicKey recipient, struct LDKCVec_PublicKeyZ peers) {
13230         LDK::CResult_CVec_BlindedPathZNoneZ ret = (self.create_blinded_paths)(self.this_arg, recipient, peers);
13231         return ret;
13232 }
13233 inline LDK::COption_OnionMessageContentsZ CustomOnionMessageHandler::handle_custom_message(struct LDKOnionMessageContents msg) {
13234         LDK::COption_OnionMessageContentsZ ret = (self.handle_custom_message)(self.this_arg, msg);
13235         return ret;
13236 }
13237 inline LDK::CResult_COption_OnionMessageContentsZDecodeErrorZ CustomOnionMessageHandler::read_custom_message(uint64_t message_type, struct LDKu8slice buffer) {
13238         LDK::CResult_COption_OnionMessageContentsZDecodeErrorZ ret = (self.read_custom_message)(self.this_arg, message_type, buffer);
13239         return ret;
13240 }
13241 inline LDK::CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ CustomOnionMessageHandler::release_pending_custom_messages() {
13242         LDK::CVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ ret = (self.release_pending_custom_messages)(self.this_arg);
13243         return ret;
13244 }
13245 inline LDKPublicKey NodeIdLookUp::next_node_id(uint64_t short_channel_id) {
13246         LDKPublicKey ret = (self.next_node_id)(self.this_arg, short_channel_id);
13247         return ret;
13248 }
13249 inline LDK::ChannelMonitorUpdateStatus Persist::persist_new_channel(struct LDKOutPoint channel_funding_outpoint, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
13250         LDK::ChannelMonitorUpdateStatus ret = (self.persist_new_channel)(self.this_arg, channel_funding_outpoint, data, update_id);
13251         return ret;
13252 }
13253 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) {
13254         LDK::ChannelMonitorUpdateStatus ret = (self.update_persisted_channel)(self.this_arg, channel_funding_outpoint, update, data, update_id);
13255         return ret;
13256 }
13257 inline void Persist::archive_persisted_channel(struct LDKOutPoint channel_funding_outpoint) {
13258         (self.archive_persisted_channel)(self.this_arg, channel_funding_outpoint);
13259 }
13260 }