Update auto-generated bindings
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class Retry;
6 class RetryableSendFailure;
7 class PaymentSendFailure;
8 class HTLCClaim;
9 class CounterpartyCommitmentSecrets;
10 class TxCreationKeys;
11 class ChannelPublicKeys;
12 class HTLCOutputInCommitment;
13 class ChannelTransactionParameters;
14 class CounterpartyChannelTransactionParameters;
15 class DirectedChannelTransactionParameters;
16 class HolderCommitmentTransaction;
17 class BuiltCommitmentTransaction;
18 class ClosingTransaction;
19 class TrustedClosingTransaction;
20 class CommitmentTransaction;
21 class TrustedCommitmentTransaction;
22 class ShutdownScript;
23 class InvalidShutdownScript;
24 class BlindedPath;
25 class BlindedHop;
26 class BackgroundProcessor;
27 class GossipSync;
28 class DefaultRouter;
29 class Router;
30 class ScorerAccountingForInFlightHtlcs;
31 class InFlightHtlcs;
32 class RouteHop;
33 class Route;
34 class RouteParameters;
35 class PaymentParameters;
36 class RouteHint;
37 class RouteHintHop;
38 class BroadcasterInterface;
39 class ConfirmationTarget;
40 class FeeEstimator;
41 class PaymentPurpose;
42 class PathFailure;
43 class ClosureReason;
44 class HTLCDestination;
45 class Event;
46 class MessageSendEvent;
47 class MessageSendEventsProvider;
48 class OnionMessageProvider;
49 class EventsProvider;
50 class EventHandler;
51 class BestBlock;
52 class Listen;
53 class Confirm;
54 class ChannelMonitorUpdateStatus;
55 class Watch;
56 class Filter;
57 class WatchedOutput;
58 class Score;
59 class LockableScore;
60 class WriteableScore;
61 class MultiThreadedLockableScore;
62 class MultiThreadedScoreLock;
63 class ChannelUsage;
64 class FixedPenaltyScorer;
65 class ProbabilisticScorer;
66 class ProbabilisticScoringParameters;
67 class InitFeatures;
68 class NodeFeatures;
69 class ChannelFeatures;
70 class InvoiceFeatures;
71 class OfferFeatures;
72 class InvoiceRequestFeatures;
73 class Bolt12InvoiceFeatures;
74 class BlindedHopFeatures;
75 class ChannelTypeFeatures;
76 class OnionMessageContents;
77 class CustomOnionMessageContents;
78 class NodeId;
79 class NetworkGraph;
80 class ReadOnlyNetworkGraph;
81 class NetworkUpdate;
82 class P2PGossipSync;
83 class ChannelUpdateInfo;
84 class ChannelInfo;
85 class DirectedChannelInfo;
86 class EffectiveCapacity;
87 class RoutingFees;
88 class NodeAnnouncementInfo;
89 class NodeAlias;
90 class NodeInfo;
91 class DelayedPaymentOutputDescriptor;
92 class StaticPaymentOutputDescriptor;
93 class SpendableOutputDescriptor;
94 class ChannelSigner;
95 class EcdsaChannelSigner;
96 class WriteableEcdsaChannelSigner;
97 class Recipient;
98 class EntropySource;
99 class NodeSigner;
100 class SignerProvider;
101 class InMemorySigner;
102 class KeysManager;
103 class PhantomKeysManager;
104 class FilesystemPersister;
105 class FailureCode;
106 class ChannelManager;
107 class ChainParameters;
108 class CounterpartyForwardingInfo;
109 class ChannelCounterparty;
110 class ChannelDetails;
111 class RecentPaymentDetails;
112 class PhantomRouteHints;
113 class ChannelManagerReadArgs;
114 class ChannelHandshakeConfig;
115 class ChannelHandshakeLimits;
116 class ChannelConfig;
117 class UserConfig;
118 class APIError;
119 class BigSize;
120 class Hostname;
121 class PrintableString;
122 class OutPoint;
123 class CustomMessageReader;
124 class Type;
125 class PaymentError;
126 class ChannelMonitorUpdate;
127 class MonitorEvent;
128 class HTLCUpdate;
129 class Balance;
130 class ChannelMonitor;
131 class ExpandedKey;
132 class CustomMessageHandler;
133 class IgnoringMessageHandler;
134 class ErroringMessageHandler;
135 class MessageHandler;
136 class SocketDescriptor;
137 class PeerHandleError;
138 class PeerManager;
139 class UtxoLookupError;
140 class UtxoResult;
141 class UtxoLookup;
142 class UtxoFuture;
143 class OnionMessenger;
144 class Destination;
145 class SendError;
146 class CustomOnionMessageHandler;
147 class ParseError;
148 class ParseOrSemanticError;
149 class Invoice;
150 class SignedRawInvoice;
151 class RawInvoice;
152 class RawDataPart;
153 class PositiveTimestamp;
154 class SiPrefix;
155 class Currency;
156 class Sha256;
157 class Description;
158 class PayeePubKey;
159 class ExpiryTime;
160 class MinFinalCltvExpiryDelta;
161 class Fallback;
162 class InvoiceSignature;
163 class PrivateRoute;
164 class CreationError;
165 class SemanticError;
166 class SignOrCreationError;
167 class RapidGossipSync;
168 class Persister;
169 class DecodeError;
170 class Init;
171 class ErrorMessage;
172 class WarningMessage;
173 class Ping;
174 class Pong;
175 class OpenChannel;
176 class AcceptChannel;
177 class FundingCreated;
178 class FundingSigned;
179 class ChannelReady;
180 class Shutdown;
181 class ClosingSignedFeeRange;
182 class ClosingSigned;
183 class UpdateAddHTLC;
184 class OnionMessage;
185 class UpdateFulfillHTLC;
186 class UpdateFailHTLC;
187 class UpdateFailMalformedHTLC;
188 class CommitmentSigned;
189 class RevokeAndACK;
190 class UpdateFee;
191 class DataLossProtect;
192 class ChannelReestablish;
193 class AnnouncementSignatures;
194 class NetAddress;
195 class UnsignedGossipMessage;
196 class UnsignedNodeAnnouncement;
197 class NodeAnnouncement;
198 class UnsignedChannelAnnouncement;
199 class ChannelAnnouncement;
200 class UnsignedChannelUpdate;
201 class ChannelUpdate;
202 class QueryChannelRange;
203 class ReplyChannelRange;
204 class QueryShortChannelIds;
205 class ReplyShortChannelIdsEnd;
206 class GossipTimestampFilter;
207 class ErrorAction;
208 class LightningError;
209 class CommitmentUpdate;
210 class ChannelMessageHandler;
211 class RoutingMessageHandler;
212 class OnionMessageHandler;
213 class GraphSyncError;
214 class Level;
215 class Record;
216 class Logger;
217 class FutureCallback;
218 class Future;
219 class MonitorUpdateId;
220 class Persist;
221 class LockedChannelMonitor;
222 class ChainMonitor;
223 class CResult_LockedChannelMonitorNoneZ;
224 class CResult_PhantomRouteHintsDecodeErrorZ;
225 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
226 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
227 class CVec_C2Tuple_u32TxOutZZ;
228 class CResult_FundingCreatedDecodeErrorZ;
229 class CResult_ChannelInfoDecodeErrorZ;
230 class CResult_NoneSendErrorZ;
231 class CResult_CVec_u8ZPeerHandleErrorZ;
232 class CResult_GossipTimestampFilterDecodeErrorZ;
233 class COption_NetworkUpdateZ;
234 class COption_u64Z;
235 class CResult_PaymentPreimageAPIErrorZ;
236 class CResult_RouteHintDecodeErrorZ;
237 class COption_FilterZ;
238 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
239 class CResult_COption_APIErrorZDecodeErrorZ;
240 class CVec_UpdateAddHTLCZ;
241 class CResult_CommitmentSignedDecodeErrorZ;
242 class COption_u32Z;
243 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
244 class CVec_C2Tuple_TxidBlockHashZZ;
245 class CResult_CommitmentTransactionDecodeErrorZ;
246 class CResult_TransactionNoneZ;
247 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
248 class CResult_ErrorMessageDecodeErrorZ;
249 class CResult_OpenChannelDecodeErrorZ;
250 class COption_APIErrorZ;
251 class CResult_QueryChannelRangeDecodeErrorZ;
252 class CVec_TransactionZ;
253 class C2Tuple_TxidBlockHashZ;
254 class CResult_ChannelFeaturesDecodeErrorZ;
255 class CResult_ChannelReadyDecodeErrorZ;
256 class CResult_UpdateFeeDecodeErrorZ;
257 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
258 class CResult_boolLightningErrorZ;
259 class CResult_NodeIdDecodeErrorZ;
260 class COption_HTLCDestinationZ;
261 class C2Tuple_BlockHashChannelMonitorZ;
262 class CResult_ShutdownScriptInvalidShutdownScriptZ;
263 class CResult_NodeAnnouncementInfoDecodeErrorZ;
264 class CResult_COption_NetworkUpdateZDecodeErrorZ;
265 class CResult_NoneRetryableSendFailureZ;
266 class CVec_UpdateFailMalformedHTLCZ;
267 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ;
268 class CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ;
269 class CVec_RouteHopZ;
270 class COption_CustomOnionMessageContentsZ;
271 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
272 class CVec_ThirtyTwoBytesZ;
273 class CResult_ClosingSignedDecodeErrorZ;
274 class CResult_NonePaymentErrorZ;
275 class CVec_CResult_NoneAPIErrorZZ;
276 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
277 class CVec_RecentPaymentDetailsZ;
278 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
279 class CVec_RouteHintHopZ;
280 class CResult_PaymentParametersDecodeErrorZ;
281 class CVec_U5Z;
282 class COption_UtxoLookupZ;
283 class CResult_PongDecodeErrorZ;
284 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
285 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ;
286 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
287 class C2Tuple_BlockHashChannelManagerZ;
288 class CResult_ChannelTransactionParametersDecodeErrorZ;
289 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ;
290 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
291 class C2Tuple_PaymentHashPaymentIdZ;
292 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
293 class CResult_NoneErrorZ;
294 class CResult_InFlightHtlcsDecodeErrorZ;
295 class CResult_COption_HTLCDestinationZDecodeErrorZ;
296 class CResult_SiPrefixParseErrorZ;
297 class CResult_BlindedHopDecodeErrorZ;
298 class CResult_TrustedCommitmentTransactionNoneZ;
299 class CResult_FixedPenaltyScorerDecodeErrorZ;
300 class CResult_NoneLightningErrorZ;
301 class CResult_PaymentHashRetryableSendFailureZ;
302 class C2Tuple_PublicKeyCOption_NetAddressZZ;
303 class CResult_COption_EventZDecodeErrorZ;
304 class CResult_CVec_SignatureZNoneZ;
305 class COption_CVec_NetAddressZZ;
306 class CResult_NonePeerHandleErrorZ;
307 class CResult__u832APIErrorZ;
308 class CResult_PaymentIdPaymentErrorZ;
309 class CResult_COption_MonitorEventZDecodeErrorZ;
310 class CResult_RoutingFeesDecodeErrorZ;
311 class CResult_PayeePubKeyErrorZ;
312 class CResult_DescriptionCreationErrorZ;
313 class CResult_QueryShortChannelIdsDecodeErrorZ;
314 class CResult_InvoiceSemanticErrorZ;
315 class CResult_UpdateAddHTLCDecodeErrorZ;
316 class COption_MonitorEventZ;
317 class COption_TypeZ;
318 class CResult_COption_TypeZDecodeErrorZ;
319 class CResult_COption_PathFailureZDecodeErrorZ;
320 class CResult_UpdateFailHTLCDecodeErrorZ;
321 class CResult_InvoiceParseOrSemanticErrorZ;
322 class CResult_RevokeAndACKDecodeErrorZ;
323 class CResult_SpendableOutputDescriptorDecodeErrorZ;
324 class CResult_UnsignedChannelUpdateDecodeErrorZ;
325 class CVec_EventZ;
326 class CResult_NoneSemanticErrorZ;
327 class CVec_C2Tuple_u32ScriptZZ;
328 class CResult_COption_ClosureReasonZDecodeErrorZ;
329 class CResult_PaymentHashPaymentSendFailureZ;
330 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
331 class CResult_RouteParametersDecodeErrorZ;
332 class CResult_PrivateRouteCreationErrorZ;
333 class CResult_NodeAliasDecodeErrorZ;
334 class CVec_UpdateFulfillHTLCZ;
335 class CResult_AnnouncementSignaturesDecodeErrorZ;
336 class CResult_UpdateFulfillHTLCDecodeErrorZ;
337 class CResult_NodeFeaturesDecodeErrorZ;
338 class CResult_InMemorySignerDecodeErrorZ;
339 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
340 class COption_PathFailureZ;
341 class COption_ScalarZ;
342 class CResult_ChannelUpdateInfoDecodeErrorZ;
343 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
344 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
345 class CVec_TxOutZ;
346 class CVec_UpdateFailHTLCZ;
347 class CVec_SpendableOutputDescriptorZ;
348 class COption_C2Tuple_u64u64ZZ;
349 class CResult_ChannelAnnouncementDecodeErrorZ;
350 class CResult_HTLCUpdateDecodeErrorZ;
351 class C2Tuple_SignatureCVec_SignatureZZ;
352 class CVec_OutPointZ;
353 class COption_WriteableScoreZ;
354 class CResult_PositiveTimestampCreationErrorZ;
355 class C2Tuple__u168_u168Z;
356 class CResult_InvoiceFeaturesDecodeErrorZ;
357 class CResult_ChannelMonitorUpdateDecodeErrorZ;
358 class CResult_ReplyChannelRangeDecodeErrorZ;
359 class CResult_InvoiceSignOrCreationErrorZ;
360 class CResult_TrustedClosingTransactionNoneZ;
361 class CResult_NetAddressDecodeErrorZ;
362 class C2Tuple_PublicKeyTypeZ;
363 class CResult_ChannelReestablishDecodeErrorZ;
364 class CResult_OnionMessageDecodeErrorZ;
365 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
366 class CResult_InitFeaturesDecodeErrorZ;
367 class CResult_PublicKeyNoneZ;
368 class CResult_PingDecodeErrorZ;
369 class CResult_BlindedHopFeaturesDecodeErrorZ;
370 class CVec_TransactionOutputsZ;
371 class COption_HTLCClaimZ;
372 class CVec_CVec_u8ZZ;
373 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ;
374 class CResult_ShutdownScriptDecodeErrorZ;
375 class CResult_ProbabilisticScorerDecodeErrorZ;
376 class CResult_TxCreationKeysDecodeErrorZ;
377 class C2Tuple_usizeTransactionZ;
378 class CResult_NodeAnnouncementDecodeErrorZ;
379 class CResult_BlindedPathDecodeErrorZ;
380 class CVec_ChannelMonitorZ;
381 class CResult_RouteHopDecodeErrorZ;
382 class CVec_BalanceZ;
383 class CResult_FundingSignedDecodeErrorZ;
384 class CResult_RecoverableSignatureNoneZ;
385 class C2Tuple_Z;
386 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
387 class CResult_NetworkGraphDecodeErrorZ;
388 class CResult_NodeInfoDecodeErrorZ;
389 class CVec_NodeIdZ;
390 class CResult_RouteLightningErrorZ;
391 class CResult_ChannelPublicKeysDecodeErrorZ;
392 class CVec_u8Z;
393 class CResult_NonePaymentSendFailureZ;
394 class CResult_HolderCommitmentTransactionDecodeErrorZ;
395 class CResult_WarningMessageDecodeErrorZ;
396 class CResult_ChannelCounterpartyDecodeErrorZ;
397 class CResult_SignatureNoneZ;
398 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
399 class CResult_InitDecodeErrorZ;
400 class CVec_MonitorUpdateIdZ;
401 class CResult_PaymentPurposeDecodeErrorZ;
402 class CResult_OutPointDecodeErrorZ;
403 class CVec_ChannelDetailsZ;
404 class CVec_MessageSendEventZ;
405 class COption_NetAddressZ;
406 class C2Tuple_OutPointScriptZ;
407 class CResult_RouteHintHopDecodeErrorZ;
408 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
409 class CResult_SharedSecretNoneZ;
410 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
411 class CResult_CVec_CVec_u8ZZNoneZ;
412 class C2Tuple_PaymentHashPaymentSecretZ;
413 class CResult_AcceptChannelDecodeErrorZ;
414 class CVec_SignatureZ;
415 class CVec_u64Z;
416 class CResult_StringErrorZ;
417 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
418 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
419 class COption_EventZ;
420 class CResult_ChannelTypeFeaturesDecodeErrorZ;
421 class CVec_RouteHintZ;
422 class COption_u16Z;
423 class CVec_CVec_RouteHopZZ;
424 class CVec_C2Tuple_PublicKeyTypeZZ;
425 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ;
426 class CResult_u32GraphSyncErrorZ;
427 class CVec_PhantomRouteHintsZ;
428 class CResult_NoneAPIErrorZ;
429 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
430 class CVec_NetAddressZ;
431 class CResult_ChannelDetailsDecodeErrorZ;
432 class CVec_PublicKeyZ;
433 class CVec_C2Tuple_usizeTransactionZZ;
434 class C2Tuple_u64u64Z;
435 class C2Tuple_u32TxOutZ;
436 class CResult_PaymentSecretNoneZ;
437 class CResult_ChannelConfigDecodeErrorZ;
438 class CVec_PrivateRouteZ;
439 class CResult_BlindedPathNoneZ;
440 class CResult_ShutdownDecodeErrorZ;
441 class CResult_TxOutUtxoLookupErrorZ;
442 class CVec_MonitorEventZ;
443 class CVec_PaymentPreimageZ;
444 class CResult_PublicKeyErrorZ;
445 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ;
446 class CResult_NoneNoneZ;
447 class COption_ClosureReasonZ;
448 class COption_u128Z;
449 class CVec_APIErrorZ;
450 class CResult_boolPeerHandleErrorZ;
451 class CResult_ChannelUpdateDecodeErrorZ;
452 class CResult_PaymentSecretAPIErrorZ;
453 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
454 class C2Tuple_u32ScriptZ;
455 class CResult_SignedRawInvoiceParseErrorZ;
456 class COption_C2Tuple_EightU16sEightU16sZZ;
457 class CResult_RouteDecodeErrorZ;
458 class COption_NoneZ;
459
460 class Str {
461 private:
462         LDKStr self;
463 public:
464         Str(const Str&) = delete;
465         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
466         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
467         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
468         ~Str() { Str_free(self); }
469         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
470         LDKStr* operator &() { return &self; }
471         LDKStr* operator ->() { return &self; }
472         const LDKStr* operator &() const { return &self; }
473         const LDKStr* operator ->() const { return &self; }
474 };
475 class Retry {
476 private:
477         LDKRetry self;
478 public:
479         Retry(const Retry&) = delete;
480         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
481         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
482         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
483         ~Retry() { Retry_free(self); }
484         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
485         LDKRetry* operator &() { return &self; }
486         LDKRetry* operator ->() { return &self; }
487         const LDKRetry* operator &() const { return &self; }
488         const LDKRetry* operator ->() const { return &self; }
489 };
490 class RetryableSendFailure {
491 private:
492         LDKRetryableSendFailure self;
493 public:
494         RetryableSendFailure(const RetryableSendFailure&) = delete;
495         RetryableSendFailure(RetryableSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(RetryableSendFailure)); }
496         RetryableSendFailure(LDKRetryableSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetryableSendFailure)); }
497         operator LDKRetryableSendFailure() && { LDKRetryableSendFailure res = self; memset(&self, 0, sizeof(LDKRetryableSendFailure)); return res; }
498         RetryableSendFailure& operator=(RetryableSendFailure&& o) { self = o.self; memset(&o, 0, sizeof(RetryableSendFailure)); return *this; }
499         LDKRetryableSendFailure* operator &() { return &self; }
500         LDKRetryableSendFailure* operator ->() { return &self; }
501         const LDKRetryableSendFailure* operator &() const { return &self; }
502         const LDKRetryableSendFailure* operator ->() const { return &self; }
503 };
504 class PaymentSendFailure {
505 private:
506         LDKPaymentSendFailure self;
507 public:
508         PaymentSendFailure(const PaymentSendFailure&) = delete;
509         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
510         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
511         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
512         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
513         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
514         LDKPaymentSendFailure* operator &() { return &self; }
515         LDKPaymentSendFailure* operator ->() { return &self; }
516         const LDKPaymentSendFailure* operator &() const { return &self; }
517         const LDKPaymentSendFailure* operator ->() const { return &self; }
518 };
519 class HTLCClaim {
520 private:
521         LDKHTLCClaim self;
522 public:
523         HTLCClaim(const HTLCClaim&) = delete;
524         HTLCClaim(HTLCClaim&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCClaim)); }
525         HTLCClaim(LDKHTLCClaim&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCClaim)); }
526         operator LDKHTLCClaim() && { LDKHTLCClaim res = self; memset(&self, 0, sizeof(LDKHTLCClaim)); return res; }
527         HTLCClaim& operator=(HTLCClaim&& o) { self = o.self; memset(&o, 0, sizeof(HTLCClaim)); return *this; }
528         LDKHTLCClaim* operator &() { return &self; }
529         LDKHTLCClaim* operator ->() { return &self; }
530         const LDKHTLCClaim* operator &() const { return &self; }
531         const LDKHTLCClaim* operator ->() const { return &self; }
532 };
533 class CounterpartyCommitmentSecrets {
534 private:
535         LDKCounterpartyCommitmentSecrets self;
536 public:
537         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
538         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
539         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
540         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
541         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
542         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
543         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
544         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
545         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
546         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
547 };
548 class TxCreationKeys {
549 private:
550         LDKTxCreationKeys self;
551 public:
552         TxCreationKeys(const TxCreationKeys&) = delete;
553         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
554         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
555         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
556         ~TxCreationKeys() { TxCreationKeys_free(self); }
557         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
558         LDKTxCreationKeys* operator &() { return &self; }
559         LDKTxCreationKeys* operator ->() { return &self; }
560         const LDKTxCreationKeys* operator &() const { return &self; }
561         const LDKTxCreationKeys* operator ->() const { return &self; }
562 };
563 class ChannelPublicKeys {
564 private:
565         LDKChannelPublicKeys self;
566 public:
567         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
568         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
569         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
570         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
571         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
572         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
573         LDKChannelPublicKeys* operator &() { return &self; }
574         LDKChannelPublicKeys* operator ->() { return &self; }
575         const LDKChannelPublicKeys* operator &() const { return &self; }
576         const LDKChannelPublicKeys* operator ->() const { return &self; }
577 };
578 class HTLCOutputInCommitment {
579 private:
580         LDKHTLCOutputInCommitment self;
581 public:
582         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
583         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
584         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
585         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
586         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
587         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
588         LDKHTLCOutputInCommitment* operator &() { return &self; }
589         LDKHTLCOutputInCommitment* operator ->() { return &self; }
590         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
591         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
592 };
593 class ChannelTransactionParameters {
594 private:
595         LDKChannelTransactionParameters self;
596 public:
597         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
598         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
599         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
600         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
601         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
602         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
603         LDKChannelTransactionParameters* operator &() { return &self; }
604         LDKChannelTransactionParameters* operator ->() { return &self; }
605         const LDKChannelTransactionParameters* operator &() const { return &self; }
606         const LDKChannelTransactionParameters* operator ->() const { return &self; }
607 };
608 class CounterpartyChannelTransactionParameters {
609 private:
610         LDKCounterpartyChannelTransactionParameters self;
611 public:
612         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
613         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
614         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
615         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
616         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
617         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
618         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
619         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
620         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
621         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
622 };
623 class DirectedChannelTransactionParameters {
624 private:
625         LDKDirectedChannelTransactionParameters self;
626 public:
627         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
628         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
629         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
630         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
631         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
632         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
633         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
634         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
635         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
636         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
637 };
638 class HolderCommitmentTransaction {
639 private:
640         LDKHolderCommitmentTransaction self;
641 public:
642         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
643         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
644         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
645         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
646         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
647         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
648         LDKHolderCommitmentTransaction* operator &() { return &self; }
649         LDKHolderCommitmentTransaction* operator ->() { return &self; }
650         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
651         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
652 };
653 class BuiltCommitmentTransaction {
654 private:
655         LDKBuiltCommitmentTransaction self;
656 public:
657         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
658         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
659         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
660         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
661         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
662         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
663         LDKBuiltCommitmentTransaction* operator &() { return &self; }
664         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
665         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
666         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
667 };
668 class ClosingTransaction {
669 private:
670         LDKClosingTransaction self;
671 public:
672         ClosingTransaction(const ClosingTransaction&) = delete;
673         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
674         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
675         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
676         ~ClosingTransaction() { ClosingTransaction_free(self); }
677         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
678         LDKClosingTransaction* operator &() { return &self; }
679         LDKClosingTransaction* operator ->() { return &self; }
680         const LDKClosingTransaction* operator &() const { return &self; }
681         const LDKClosingTransaction* operator ->() const { return &self; }
682 };
683 class TrustedClosingTransaction {
684 private:
685         LDKTrustedClosingTransaction self;
686 public:
687         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
688         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
689         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
690         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
691         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
692         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
693         LDKTrustedClosingTransaction* operator &() { return &self; }
694         LDKTrustedClosingTransaction* operator ->() { return &self; }
695         const LDKTrustedClosingTransaction* operator &() const { return &self; }
696         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
697 };
698 class CommitmentTransaction {
699 private:
700         LDKCommitmentTransaction self;
701 public:
702         CommitmentTransaction(const CommitmentTransaction&) = delete;
703         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
704         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
705         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
706         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
707         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
708         LDKCommitmentTransaction* operator &() { return &self; }
709         LDKCommitmentTransaction* operator ->() { return &self; }
710         const LDKCommitmentTransaction* operator &() const { return &self; }
711         const LDKCommitmentTransaction* operator ->() const { return &self; }
712 };
713 class TrustedCommitmentTransaction {
714 private:
715         LDKTrustedCommitmentTransaction self;
716 public:
717         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
718         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
719         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
720         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
721         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
722         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
723         LDKTrustedCommitmentTransaction* operator &() { return &self; }
724         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
725         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
726         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
727 };
728 class ShutdownScript {
729 private:
730         LDKShutdownScript self;
731 public:
732         ShutdownScript(const ShutdownScript&) = delete;
733         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
734         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
735         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
736         ~ShutdownScript() { ShutdownScript_free(self); }
737         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
738         LDKShutdownScript* operator &() { return &self; }
739         LDKShutdownScript* operator ->() { return &self; }
740         const LDKShutdownScript* operator &() const { return &self; }
741         const LDKShutdownScript* operator ->() const { return &self; }
742 };
743 class InvalidShutdownScript {
744 private:
745         LDKInvalidShutdownScript self;
746 public:
747         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
748         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
749         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
750         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
751         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
752         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
753         LDKInvalidShutdownScript* operator &() { return &self; }
754         LDKInvalidShutdownScript* operator ->() { return &self; }
755         const LDKInvalidShutdownScript* operator &() const { return &self; }
756         const LDKInvalidShutdownScript* operator ->() const { return &self; }
757 };
758 class BlindedPath {
759 private:
760         LDKBlindedPath self;
761 public:
762         BlindedPath(const BlindedPath&) = delete;
763         BlindedPath(BlindedPath&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedPath)); }
764         BlindedPath(LDKBlindedPath&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedPath)); }
765         operator LDKBlindedPath() && { LDKBlindedPath res = self; memset(&self, 0, sizeof(LDKBlindedPath)); return res; }
766         ~BlindedPath() { BlindedPath_free(self); }
767         BlindedPath& operator=(BlindedPath&& o) { BlindedPath_free(self); self = o.self; memset(&o, 0, sizeof(BlindedPath)); return *this; }
768         LDKBlindedPath* operator &() { return &self; }
769         LDKBlindedPath* operator ->() { return &self; }
770         const LDKBlindedPath* operator &() const { return &self; }
771         const LDKBlindedPath* operator ->() const { return &self; }
772 };
773 class BlindedHop {
774 private:
775         LDKBlindedHop self;
776 public:
777         BlindedHop(const BlindedHop&) = delete;
778         BlindedHop(BlindedHop&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHop)); }
779         BlindedHop(LDKBlindedHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHop)); }
780         operator LDKBlindedHop() && { LDKBlindedHop res = self; memset(&self, 0, sizeof(LDKBlindedHop)); return res; }
781         ~BlindedHop() { BlindedHop_free(self); }
782         BlindedHop& operator=(BlindedHop&& o) { BlindedHop_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHop)); return *this; }
783         LDKBlindedHop* operator &() { return &self; }
784         LDKBlindedHop* operator ->() { return &self; }
785         const LDKBlindedHop* operator &() const { return &self; }
786         const LDKBlindedHop* operator ->() const { return &self; }
787 };
788 class BackgroundProcessor {
789 private:
790         LDKBackgroundProcessor self;
791 public:
792         BackgroundProcessor(const BackgroundProcessor&) = delete;
793         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
794         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
795         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
796         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
797         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
798         LDKBackgroundProcessor* operator &() { return &self; }
799         LDKBackgroundProcessor* operator ->() { return &self; }
800         const LDKBackgroundProcessor* operator &() const { return &self; }
801         const LDKBackgroundProcessor* operator ->() const { return &self; }
802 };
803 class GossipSync {
804 private:
805         LDKGossipSync self;
806 public:
807         GossipSync(const GossipSync&) = delete;
808         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
809         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
810         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
811         ~GossipSync() { GossipSync_free(self); }
812         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
813         LDKGossipSync* operator &() { return &self; }
814         LDKGossipSync* operator ->() { return &self; }
815         const LDKGossipSync* operator &() const { return &self; }
816         const LDKGossipSync* operator ->() const { return &self; }
817 };
818 class DefaultRouter {
819 private:
820         LDKDefaultRouter self;
821 public:
822         DefaultRouter(const DefaultRouter&) = delete;
823         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
824         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
825         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
826         ~DefaultRouter() { DefaultRouter_free(self); }
827         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
828         LDKDefaultRouter* operator &() { return &self; }
829         LDKDefaultRouter* operator ->() { return &self; }
830         const LDKDefaultRouter* operator &() const { return &self; }
831         const LDKDefaultRouter* operator ->() const { return &self; }
832 };
833 class Router {
834 private:
835         LDKRouter self;
836 public:
837         Router(const Router&) = delete;
838         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
839         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
840         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
841         ~Router() { Router_free(self); }
842         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
843         LDKRouter* operator &() { return &self; }
844         LDKRouter* operator ->() { return &self; }
845         const LDKRouter* operator &() const { return &self; }
846         const LDKRouter* operator ->() const { return &self; }
847         /**
848          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
849          * 
850          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
851          */
852         inline LDK::CResult_RouteLightningErrorZ find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKInFlightHtlcs *NONNULL_PTR inflight_htlcs);
853         /**
854          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values. Includes
855          *  `PaymentHash` and `PaymentId` to be able to correlate the request with a specific payment.
856          * 
857          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
858          */
859         inline LDK::CResult_RouteLightningErrorZ find_route_with_id(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKInFlightHtlcs *NONNULL_PTR inflight_htlcs, struct LDKThirtyTwoBytes _payment_hash, struct LDKThirtyTwoBytes _payment_id);
860 };
861 class ScorerAccountingForInFlightHtlcs {
862 private:
863         LDKScorerAccountingForInFlightHtlcs self;
864 public:
865         ScorerAccountingForInFlightHtlcs(const ScorerAccountingForInFlightHtlcs&) = delete;
866         ScorerAccountingForInFlightHtlcs(ScorerAccountingForInFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); }
867         ScorerAccountingForInFlightHtlcs(LDKScorerAccountingForInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); }
868         operator LDKScorerAccountingForInFlightHtlcs() && { LDKScorerAccountingForInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKScorerAccountingForInFlightHtlcs)); return res; }
869         ~ScorerAccountingForInFlightHtlcs() { ScorerAccountingForInFlightHtlcs_free(self); }
870         ScorerAccountingForInFlightHtlcs& operator=(ScorerAccountingForInFlightHtlcs&& o) { ScorerAccountingForInFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(ScorerAccountingForInFlightHtlcs)); return *this; }
871         LDKScorerAccountingForInFlightHtlcs* operator &() { return &self; }
872         LDKScorerAccountingForInFlightHtlcs* operator ->() { return &self; }
873         const LDKScorerAccountingForInFlightHtlcs* operator &() const { return &self; }
874         const LDKScorerAccountingForInFlightHtlcs* operator ->() const { return &self; }
875 };
876 class InFlightHtlcs {
877 private:
878         LDKInFlightHtlcs self;
879 public:
880         InFlightHtlcs(const InFlightHtlcs&) = delete;
881         InFlightHtlcs(InFlightHtlcs&& o) : self(o.self) { memset(&o, 0, sizeof(InFlightHtlcs)); }
882         InFlightHtlcs(LDKInFlightHtlcs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInFlightHtlcs)); }
883         operator LDKInFlightHtlcs() && { LDKInFlightHtlcs res = self; memset(&self, 0, sizeof(LDKInFlightHtlcs)); return res; }
884         ~InFlightHtlcs() { InFlightHtlcs_free(self); }
885         InFlightHtlcs& operator=(InFlightHtlcs&& o) { InFlightHtlcs_free(self); self = o.self; memset(&o, 0, sizeof(InFlightHtlcs)); return *this; }
886         LDKInFlightHtlcs* operator &() { return &self; }
887         LDKInFlightHtlcs* operator ->() { return &self; }
888         const LDKInFlightHtlcs* operator &() const { return &self; }
889         const LDKInFlightHtlcs* operator ->() const { return &self; }
890 };
891 class RouteHop {
892 private:
893         LDKRouteHop self;
894 public:
895         RouteHop(const RouteHop&) = delete;
896         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
897         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
898         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
899         ~RouteHop() { RouteHop_free(self); }
900         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
901         LDKRouteHop* operator &() { return &self; }
902         LDKRouteHop* operator ->() { return &self; }
903         const LDKRouteHop* operator &() const { return &self; }
904         const LDKRouteHop* operator ->() const { return &self; }
905 };
906 class Route {
907 private:
908         LDKRoute self;
909 public:
910         Route(const Route&) = delete;
911         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
912         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
913         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
914         ~Route() { Route_free(self); }
915         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
916         LDKRoute* operator &() { return &self; }
917         LDKRoute* operator ->() { return &self; }
918         const LDKRoute* operator &() const { return &self; }
919         const LDKRoute* operator ->() const { return &self; }
920 };
921 class RouteParameters {
922 private:
923         LDKRouteParameters self;
924 public:
925         RouteParameters(const RouteParameters&) = delete;
926         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
927         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
928         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
929         ~RouteParameters() { RouteParameters_free(self); }
930         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
931         LDKRouteParameters* operator &() { return &self; }
932         LDKRouteParameters* operator ->() { return &self; }
933         const LDKRouteParameters* operator &() const { return &self; }
934         const LDKRouteParameters* operator ->() const { return &self; }
935 };
936 class PaymentParameters {
937 private:
938         LDKPaymentParameters self;
939 public:
940         PaymentParameters(const PaymentParameters&) = delete;
941         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
942         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
943         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
944         ~PaymentParameters() { PaymentParameters_free(self); }
945         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
946         LDKPaymentParameters* operator &() { return &self; }
947         LDKPaymentParameters* operator ->() { return &self; }
948         const LDKPaymentParameters* operator &() const { return &self; }
949         const LDKPaymentParameters* operator ->() const { return &self; }
950 };
951 class RouteHint {
952 private:
953         LDKRouteHint self;
954 public:
955         RouteHint(const RouteHint&) = delete;
956         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
957         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
958         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
959         ~RouteHint() { RouteHint_free(self); }
960         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
961         LDKRouteHint* operator &() { return &self; }
962         LDKRouteHint* operator ->() { return &self; }
963         const LDKRouteHint* operator &() const { return &self; }
964         const LDKRouteHint* operator ->() const { return &self; }
965 };
966 class RouteHintHop {
967 private:
968         LDKRouteHintHop self;
969 public:
970         RouteHintHop(const RouteHintHop&) = delete;
971         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
972         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
973         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
974         ~RouteHintHop() { RouteHintHop_free(self); }
975         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
976         LDKRouteHintHop* operator &() { return &self; }
977         LDKRouteHintHop* operator ->() { return &self; }
978         const LDKRouteHintHop* operator &() const { return &self; }
979         const LDKRouteHintHop* operator ->() const { return &self; }
980 };
981 class BroadcasterInterface {
982 private:
983         LDKBroadcasterInterface self;
984 public:
985         BroadcasterInterface(const BroadcasterInterface&) = delete;
986         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
987         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
988         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
989         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
990         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
991         LDKBroadcasterInterface* operator &() { return &self; }
992         LDKBroadcasterInterface* operator ->() { return &self; }
993         const LDKBroadcasterInterface* operator &() const { return &self; }
994         const LDKBroadcasterInterface* operator ->() const { return &self; }
995         /**
996          *  Sends a transaction out to (hopefully) be mined.
997          */
998         inline void broadcast_transaction(struct LDKTransaction tx);
999 };
1000 class ConfirmationTarget {
1001 private:
1002         LDKConfirmationTarget self;
1003 public:
1004         ConfirmationTarget(const ConfirmationTarget&) = delete;
1005         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
1006         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
1007         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
1008         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
1009         LDKConfirmationTarget* operator &() { return &self; }
1010         LDKConfirmationTarget* operator ->() { return &self; }
1011         const LDKConfirmationTarget* operator &() const { return &self; }
1012         const LDKConfirmationTarget* operator ->() const { return &self; }
1013 };
1014 class FeeEstimator {
1015 private:
1016         LDKFeeEstimator self;
1017 public:
1018         FeeEstimator(const FeeEstimator&) = delete;
1019         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
1020         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
1021         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
1022         ~FeeEstimator() { FeeEstimator_free(self); }
1023         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
1024         LDKFeeEstimator* operator &() { return &self; }
1025         LDKFeeEstimator* operator ->() { return &self; }
1026         const LDKFeeEstimator* operator &() const { return &self; }
1027         const LDKFeeEstimator* operator ->() const { return &self; }
1028         /**
1029          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
1030          * 
1031          *  LDK will wrap this method and ensure that the value returned is no smaller than 253
1032          *  (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
1033          * 
1034          *  The following unit conversions can be used to convert to sats/KW:
1035          *   * satoshis-per-byte * 250
1036          *   * satoshis-per-kbyte / 4
1037          */
1038         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
1039 };
1040 class PaymentPurpose {
1041 private:
1042         LDKPaymentPurpose self;
1043 public:
1044         PaymentPurpose(const PaymentPurpose&) = delete;
1045         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
1046         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
1047         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
1048         ~PaymentPurpose() { PaymentPurpose_free(self); }
1049         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
1050         LDKPaymentPurpose* operator &() { return &self; }
1051         LDKPaymentPurpose* operator ->() { return &self; }
1052         const LDKPaymentPurpose* operator &() const { return &self; }
1053         const LDKPaymentPurpose* operator ->() const { return &self; }
1054 };
1055 class PathFailure {
1056 private:
1057         LDKPathFailure self;
1058 public:
1059         PathFailure(const PathFailure&) = delete;
1060         PathFailure(PathFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PathFailure)); }
1061         PathFailure(LDKPathFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPathFailure)); }
1062         operator LDKPathFailure() && { LDKPathFailure res = self; memset(&self, 0, sizeof(LDKPathFailure)); return res; }
1063         ~PathFailure() { PathFailure_free(self); }
1064         PathFailure& operator=(PathFailure&& o) { PathFailure_free(self); self = o.self; memset(&o, 0, sizeof(PathFailure)); return *this; }
1065         LDKPathFailure* operator &() { return &self; }
1066         LDKPathFailure* operator ->() { return &self; }
1067         const LDKPathFailure* operator &() const { return &self; }
1068         const LDKPathFailure* operator ->() const { return &self; }
1069 };
1070 class ClosureReason {
1071 private:
1072         LDKClosureReason self;
1073 public:
1074         ClosureReason(const ClosureReason&) = delete;
1075         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
1076         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
1077         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
1078         ~ClosureReason() { ClosureReason_free(self); }
1079         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
1080         LDKClosureReason* operator &() { return &self; }
1081         LDKClosureReason* operator ->() { return &self; }
1082         const LDKClosureReason* operator &() const { return &self; }
1083         const LDKClosureReason* operator ->() const { return &self; }
1084 };
1085 class HTLCDestination {
1086 private:
1087         LDKHTLCDestination self;
1088 public:
1089         HTLCDestination(const HTLCDestination&) = delete;
1090         HTLCDestination(HTLCDestination&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDestination)); }
1091         HTLCDestination(LDKHTLCDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDestination)); }
1092         operator LDKHTLCDestination() && { LDKHTLCDestination res = self; memset(&self, 0, sizeof(LDKHTLCDestination)); return res; }
1093         ~HTLCDestination() { HTLCDestination_free(self); }
1094         HTLCDestination& operator=(HTLCDestination&& o) { HTLCDestination_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDestination)); return *this; }
1095         LDKHTLCDestination* operator &() { return &self; }
1096         LDKHTLCDestination* operator ->() { return &self; }
1097         const LDKHTLCDestination* operator &() const { return &self; }
1098         const LDKHTLCDestination* operator ->() const { return &self; }
1099 };
1100 class Event {
1101 private:
1102         LDKEvent self;
1103 public:
1104         Event(const Event&) = delete;
1105         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
1106         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
1107         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
1108         ~Event() { Event_free(self); }
1109         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
1110         LDKEvent* operator &() { return &self; }
1111         LDKEvent* operator ->() { return &self; }
1112         const LDKEvent* operator &() const { return &self; }
1113         const LDKEvent* operator ->() const { return &self; }
1114 };
1115 class MessageSendEvent {
1116 private:
1117         LDKMessageSendEvent self;
1118 public:
1119         MessageSendEvent(const MessageSendEvent&) = delete;
1120         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
1121         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
1122         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
1123         ~MessageSendEvent() { MessageSendEvent_free(self); }
1124         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
1125         LDKMessageSendEvent* operator &() { return &self; }
1126         LDKMessageSendEvent* operator ->() { return &self; }
1127         const LDKMessageSendEvent* operator &() const { return &self; }
1128         const LDKMessageSendEvent* operator ->() const { return &self; }
1129 };
1130 class MessageSendEventsProvider {
1131 private:
1132         LDKMessageSendEventsProvider self;
1133 public:
1134         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
1135         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
1136         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
1137         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
1138         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
1139         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
1140         LDKMessageSendEventsProvider* operator &() { return &self; }
1141         LDKMessageSendEventsProvider* operator ->() { return &self; }
1142         const LDKMessageSendEventsProvider* operator &() const { return &self; }
1143         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
1144         /**
1145          *  Gets the list of pending events which were generated by previous actions, clearing the list
1146          *  in the process.
1147          */
1148         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
1149 };
1150 class OnionMessageProvider {
1151 private:
1152         LDKOnionMessageProvider self;
1153 public:
1154         OnionMessageProvider(const OnionMessageProvider&) = delete;
1155         OnionMessageProvider(OnionMessageProvider&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageProvider)); }
1156         OnionMessageProvider(LDKOnionMessageProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageProvider)); }
1157         operator LDKOnionMessageProvider() && { LDKOnionMessageProvider res = self; memset(&self, 0, sizeof(LDKOnionMessageProvider)); return res; }
1158         ~OnionMessageProvider() { OnionMessageProvider_free(self); }
1159         OnionMessageProvider& operator=(OnionMessageProvider&& o) { OnionMessageProvider_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageProvider)); return *this; }
1160         LDKOnionMessageProvider* operator &() { return &self; }
1161         LDKOnionMessageProvider* operator ->() { return &self; }
1162         const LDKOnionMessageProvider* operator &() const { return &self; }
1163         const LDKOnionMessageProvider* operator ->() const { return &self; }
1164         /**
1165          *  Gets the next pending onion message for the peer with the given node id.
1166          * 
1167          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
1168          */
1169         inline LDK::OnionMessage next_onion_message_for_peer(struct LDKPublicKey peer_node_id);
1170 };
1171 class EventsProvider {
1172 private:
1173         LDKEventsProvider self;
1174 public:
1175         EventsProvider(const EventsProvider&) = delete;
1176         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
1177         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
1178         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
1179         ~EventsProvider() { EventsProvider_free(self); }
1180         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
1181         LDKEventsProvider* operator &() { return &self; }
1182         LDKEventsProvider* operator ->() { return &self; }
1183         const LDKEventsProvider* operator &() const { return &self; }
1184         const LDKEventsProvider* operator ->() const { return &self; }
1185         /**
1186          *  Processes any events generated since the last call using the given event handler.
1187          * 
1188          *  See the trait-level documentation for requirements.
1189          */
1190         inline void process_pending_events(struct LDKEventHandler handler);
1191 };
1192 class EventHandler {
1193 private:
1194         LDKEventHandler self;
1195 public:
1196         EventHandler(const EventHandler&) = delete;
1197         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
1198         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
1199         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
1200         ~EventHandler() { EventHandler_free(self); }
1201         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
1202         LDKEventHandler* operator &() { return &self; }
1203         LDKEventHandler* operator ->() { return &self; }
1204         const LDKEventHandler* operator &() const { return &self; }
1205         const LDKEventHandler* operator ->() const { return &self; }
1206         /**
1207          *  Handles the given [`Event`].
1208          * 
1209          *  See [`EventsProvider`] for details that must be considered when implementing this method.
1210          */
1211         inline void handle_event(struct LDKEvent event);
1212 };
1213 class BestBlock {
1214 private:
1215         LDKBestBlock self;
1216 public:
1217         BestBlock(const BestBlock&) = delete;
1218         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
1219         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
1220         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
1221         ~BestBlock() { BestBlock_free(self); }
1222         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
1223         LDKBestBlock* operator &() { return &self; }
1224         LDKBestBlock* operator ->() { return &self; }
1225         const LDKBestBlock* operator &() const { return &self; }
1226         const LDKBestBlock* operator ->() const { return &self; }
1227 };
1228 class Listen {
1229 private:
1230         LDKListen self;
1231 public:
1232         Listen(const Listen&) = delete;
1233         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
1234         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
1235         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1236         ~Listen() { Listen_free(self); }
1237         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
1238         LDKListen* operator &() { return &self; }
1239         LDKListen* operator ->() { return &self; }
1240         const LDKListen* operator &() const { return &self; }
1241         const LDKListen* operator ->() const { return &self; }
1242         /**
1243          *  Notifies the listener that a block was added at the given height, with the transaction data
1244          *  possibly filtered.
1245          */
1246         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1247         /**
1248          *  Notifies the listener that a block was added at the given height.
1249          */
1250         inline void block_connected(struct LDKu8slice block, uint32_t height);
1251         /**
1252          *  Notifies the listener that a block was removed at the given height.
1253          */
1254         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
1255 };
1256 class Confirm {
1257 private:
1258         LDKConfirm self;
1259 public:
1260         Confirm(const Confirm&) = delete;
1261         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
1262         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
1263         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
1264         ~Confirm() { Confirm_free(self); }
1265         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
1266         LDKConfirm* operator &() { return &self; }
1267         LDKConfirm* operator ->() { return &self; }
1268         const LDKConfirm* operator &() const { return &self; }
1269         const LDKConfirm* operator ->() const { return &self; }
1270         /**
1271          *  Notifies LDK of transactions confirmed in a block with a given header and height.
1272          * 
1273          *  Must be called for any transactions registered by [`Filter::register_tx`] or any
1274          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
1275          *  appearing in the same block do not need to be included in the same call; instead, multiple
1276          *  calls with additional transactions may be made so long as they are made in [chain order].
1277          * 
1278          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
1279          *  in the event of a chain reorganization, it must not be called with a `header` that is no
1280          *  longer in the chain as of the last call to [`best_block_updated`].
1281          * 
1282          *  [chain order]: Confirm#order
1283          *  [`best_block_updated`]: Self::best_block_updated
1284          */
1285         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1286         /**
1287          *  Notifies LDK of a transaction that is no longer confirmed as result of a chain reorganization.
1288          * 
1289          *  Must be called for any transaction returned by [`get_relevant_txids`] if it has been
1290          *  reorganized out of the best chain or if it is no longer confirmed in the block with the
1291          *  given block hash. Once called, the given transaction will not be returned
1292          *  by [`get_relevant_txids`], unless it has been reconfirmed via [`transactions_confirmed`].
1293          * 
1294          *  [`get_relevant_txids`]: Self::get_relevant_txids
1295          *  [`transactions_confirmed`]: Self::transactions_confirmed
1296          */
1297         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
1298         /**
1299          *  Notifies LDK of an update to the best header connected at the given height.
1300          * 
1301          *  Must be called whenever a new chain tip becomes available. May be skipped for intermediary
1302          *  blocks.
1303          */
1304         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
1305         /**
1306          *  Returns transactions that must be monitored for reorganization out of the chain along
1307          *  with the hash of the block as part of which it had been previously confirmed.
1308          * 
1309          *  Note that the returned `Option<BlockHash>` might be `None` for channels created with LDK
1310          *  0.0.112 and prior, in which case you need to manually track previous confirmations.
1311          * 
1312          *  Will include any transactions passed to [`transactions_confirmed`] that have insufficient
1313          *  confirmations to be safe from a chain reorganization. Will not include any transactions
1314          *  passed to [`transaction_unconfirmed`], unless later reconfirmed.
1315          * 
1316          *  Must be called to determine the subset of transactions that must be monitored for
1317          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
1318          *  other interface methods. Thus, this is useful to determine which transactions must be
1319          *  given to [`transaction_unconfirmed`].
1320          * 
1321          *  If any of the returned transactions are confirmed in a block other than the one with the
1322          *  given hash, they need to be unconfirmed and reconfirmed via [`transaction_unconfirmed`] and
1323          *  [`transactions_confirmed`], respectively.
1324          * 
1325          *  [`transactions_confirmed`]: Self::transactions_confirmed
1326          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
1327          */
1328         inline LDK::CVec_C2Tuple_TxidBlockHashZZ get_relevant_txids();
1329 };
1330 class ChannelMonitorUpdateStatus {
1331 private:
1332         LDKChannelMonitorUpdateStatus self;
1333 public:
1334         ChannelMonitorUpdateStatus(const ChannelMonitorUpdateStatus&) = delete;
1335         ChannelMonitorUpdateStatus(ChannelMonitorUpdateStatus&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); }
1336         ChannelMonitorUpdateStatus(LDKChannelMonitorUpdateStatus&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateStatus)); }
1337         operator LDKChannelMonitorUpdateStatus() && { LDKChannelMonitorUpdateStatus res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateStatus)); return res; }
1338         ChannelMonitorUpdateStatus& operator=(ChannelMonitorUpdateStatus&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateStatus)); return *this; }
1339         LDKChannelMonitorUpdateStatus* operator &() { return &self; }
1340         LDKChannelMonitorUpdateStatus* operator ->() { return &self; }
1341         const LDKChannelMonitorUpdateStatus* operator &() const { return &self; }
1342         const LDKChannelMonitorUpdateStatus* operator ->() const { return &self; }
1343 };
1344 class Watch {
1345 private:
1346         LDKWatch self;
1347 public:
1348         Watch(const Watch&) = delete;
1349         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
1350         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
1351         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
1352         ~Watch() { Watch_free(self); }
1353         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
1354         LDKWatch* operator &() { return &self; }
1355         LDKWatch* operator ->() { return &self; }
1356         const LDKWatch* operator &() const { return &self; }
1357         const LDKWatch* operator ->() const { return &self; }
1358         /**
1359          *  Watches a channel identified by `funding_txo` using `monitor`.
1360          * 
1361          *  Implementations are responsible for watching the chain for the funding transaction along
1362          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
1363          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
1364          * 
1365          *  Note: this interface MUST error with [`ChannelMonitorUpdateStatus::PermanentFailure`] if
1366          *  the given `funding_txo` has previously been registered via `watch_channel`.
1367          * 
1368          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
1369          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
1370          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
1371          */
1372         inline LDK::ChannelMonitorUpdateStatus watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
1373         /**
1374          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
1375          * 
1376          *  Implementations must call [`update_monitor`] with the given update. See
1377          *  [`ChannelMonitorUpdateStatus`] for invariants around returning an error.
1378          * 
1379          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1380          */
1381         inline LDK::ChannelMonitorUpdateStatus update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update);
1382         /**
1383          *  Returns any monitor events since the last call. Subsequent calls must only return new
1384          *  events.
1385          * 
1386          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1387          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1388          *  to disk.
1389          * 
1390          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1391          *  [`MonitorEvent::Completed`] here, see [`ChannelMonitorUpdateStatus::InProgress`].
1392          */
1393         inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ release_pending_monitor_events();
1394 };
1395 class Filter {
1396 private:
1397         LDKFilter self;
1398 public:
1399         Filter(const Filter&) = delete;
1400         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1401         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1402         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1403         ~Filter() { Filter_free(self); }
1404         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1405         LDKFilter* operator &() { return &self; }
1406         LDKFilter* operator ->() { return &self; }
1407         const LDKFilter* operator &() const { return &self; }
1408         const LDKFilter* operator ->() const { return &self; }
1409         /**
1410          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1411          *  a spending condition.
1412          */
1413         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1414         /**
1415          *  Registers interest in spends of a transaction output.
1416          * 
1417          *  Note that this method might be called during processing of a new block. You therefore need
1418          *  to ensure that also dependent output spents within an already connected block are correctly
1419          *  handled, e.g., by re-scanning the block in question whenever new outputs have been
1420          *  registered mid-processing.
1421          */
1422         inline void register_output(struct LDKWatchedOutput output);
1423 };
1424 class WatchedOutput {
1425 private:
1426         LDKWatchedOutput self;
1427 public:
1428         WatchedOutput(const WatchedOutput&) = delete;
1429         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1430         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1431         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1432         ~WatchedOutput() { WatchedOutput_free(self); }
1433         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1434         LDKWatchedOutput* operator &() { return &self; }
1435         LDKWatchedOutput* operator ->() { return &self; }
1436         const LDKWatchedOutput* operator &() const { return &self; }
1437         const LDKWatchedOutput* operator ->() const { return &self; }
1438 };
1439 class Score {
1440 private:
1441         LDKScore self;
1442 public:
1443         Score(const Score&) = delete;
1444         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1445         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1446         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1447         ~Score() { Score_free(self); }
1448         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1449         LDKScore* operator &() { return &self; }
1450         LDKScore* operator ->() { return &self; }
1451         const LDKScore* operator &() const { return &self; }
1452         const LDKScore* operator ->() const { return &self; }
1453         /**
1454          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1455          *  given channel in the direction from `source` to `target`.
1456          * 
1457          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1458          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1459          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1460          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1461          *  Thus, implementations should be overflow-safe.
1462          */
1463         inline uint64_t channel_penalty_msat(uint64_t short_channel_id, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target, struct LDKChannelUsage usage);
1464         /**
1465          *  Handles updating channel penalties after failing to route through a channel.
1466          */
1467         inline void payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1468         /**
1469          *  Handles updating channel penalties after successfully routing along a path.
1470          */
1471         inline void payment_path_successful(struct LDKCVec_RouteHopZ path);
1472         /**
1473          *  Handles updating channel penalties after a probe over the given path failed.
1474          */
1475         inline void probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1476         /**
1477          *  Handles updating channel penalties after a probe over the given path succeeded.
1478          */
1479         inline void probe_successful(struct LDKCVec_RouteHopZ path);
1480 };
1481 class LockableScore {
1482 private:
1483         LDKLockableScore self;
1484 public:
1485         LockableScore(const LockableScore&) = delete;
1486         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1487         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1488         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1489         ~LockableScore() { LockableScore_free(self); }
1490         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1491         LDKLockableScore* operator &() { return &self; }
1492         LDKLockableScore* operator ->() { return &self; }
1493         const LDKLockableScore* operator &() const { return &self; }
1494         const LDKLockableScore* operator ->() const { return &self; }
1495         /**
1496          *  Returns the locked scorer.
1497          */
1498         inline LDK::Score lock();
1499 };
1500 class WriteableScore {
1501 private:
1502         LDKWriteableScore self;
1503 public:
1504         WriteableScore(const WriteableScore&) = delete;
1505         WriteableScore(WriteableScore&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableScore)); }
1506         WriteableScore(LDKWriteableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableScore)); }
1507         operator LDKWriteableScore() && { LDKWriteableScore res = self; memset(&self, 0, sizeof(LDKWriteableScore)); return res; }
1508         ~WriteableScore() { WriteableScore_free(self); }
1509         WriteableScore& operator=(WriteableScore&& o) { WriteableScore_free(self); self = o.self; memset(&o, 0, sizeof(WriteableScore)); return *this; }
1510         LDKWriteableScore* operator &() { return &self; }
1511         LDKWriteableScore* operator ->() { return &self; }
1512         const LDKWriteableScore* operator &() const { return &self; }
1513         const LDKWriteableScore* operator ->() const { return &self; }
1514 };
1515 class MultiThreadedLockableScore {
1516 private:
1517         LDKMultiThreadedLockableScore self;
1518 public:
1519         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1520         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1521         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1522         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1523         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1524         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1525         LDKMultiThreadedLockableScore* operator &() { return &self; }
1526         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1527         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1528         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1529 };
1530 class MultiThreadedScoreLock {
1531 private:
1532         LDKMultiThreadedScoreLock self;
1533 public:
1534         MultiThreadedScoreLock(const MultiThreadedScoreLock&) = delete;
1535         MultiThreadedScoreLock(MultiThreadedScoreLock&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedScoreLock)); }
1536         MultiThreadedScoreLock(LDKMultiThreadedScoreLock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedScoreLock)); }
1537         operator LDKMultiThreadedScoreLock() && { LDKMultiThreadedScoreLock res = self; memset(&self, 0, sizeof(LDKMultiThreadedScoreLock)); return res; }
1538         ~MultiThreadedScoreLock() { MultiThreadedScoreLock_free(self); }
1539         MultiThreadedScoreLock& operator=(MultiThreadedScoreLock&& o) { MultiThreadedScoreLock_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedScoreLock)); return *this; }
1540         LDKMultiThreadedScoreLock* operator &() { return &self; }
1541         LDKMultiThreadedScoreLock* operator ->() { return &self; }
1542         const LDKMultiThreadedScoreLock* operator &() const { return &self; }
1543         const LDKMultiThreadedScoreLock* operator ->() const { return &self; }
1544 };
1545 class ChannelUsage {
1546 private:
1547         LDKChannelUsage self;
1548 public:
1549         ChannelUsage(const ChannelUsage&) = delete;
1550         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1551         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1552         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1553         ~ChannelUsage() { ChannelUsage_free(self); }
1554         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1555         LDKChannelUsage* operator &() { return &self; }
1556         LDKChannelUsage* operator ->() { return &self; }
1557         const LDKChannelUsage* operator &() const { return &self; }
1558         const LDKChannelUsage* operator ->() const { return &self; }
1559 };
1560 class FixedPenaltyScorer {
1561 private:
1562         LDKFixedPenaltyScorer self;
1563 public:
1564         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1565         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1566         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1567         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1568         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1569         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1570         LDKFixedPenaltyScorer* operator &() { return &self; }
1571         LDKFixedPenaltyScorer* operator ->() { return &self; }
1572         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1573         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1574 };
1575 class ProbabilisticScorer {
1576 private:
1577         LDKProbabilisticScorer self;
1578 public:
1579         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1580         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1581         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1582         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1583         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1584         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1585         LDKProbabilisticScorer* operator &() { return &self; }
1586         LDKProbabilisticScorer* operator ->() { return &self; }
1587         const LDKProbabilisticScorer* operator &() const { return &self; }
1588         const LDKProbabilisticScorer* operator ->() const { return &self; }
1589 };
1590 class ProbabilisticScoringParameters {
1591 private:
1592         LDKProbabilisticScoringParameters self;
1593 public:
1594         ProbabilisticScoringParameters(const ProbabilisticScoringParameters&) = delete;
1595         ProbabilisticScoringParameters(ProbabilisticScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringParameters)); }
1596         ProbabilisticScoringParameters(LDKProbabilisticScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringParameters)); }
1597         operator LDKProbabilisticScoringParameters() && { LDKProbabilisticScoringParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringParameters)); return res; }
1598         ~ProbabilisticScoringParameters() { ProbabilisticScoringParameters_free(self); }
1599         ProbabilisticScoringParameters& operator=(ProbabilisticScoringParameters&& o) { ProbabilisticScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringParameters)); return *this; }
1600         LDKProbabilisticScoringParameters* operator &() { return &self; }
1601         LDKProbabilisticScoringParameters* operator ->() { return &self; }
1602         const LDKProbabilisticScoringParameters* operator &() const { return &self; }
1603         const LDKProbabilisticScoringParameters* operator ->() const { return &self; }
1604 };
1605 class InitFeatures {
1606 private:
1607         LDKInitFeatures self;
1608 public:
1609         InitFeatures(const InitFeatures&) = delete;
1610         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1611         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1612         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1613         ~InitFeatures() { InitFeatures_free(self); }
1614         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1615         LDKInitFeatures* operator &() { return &self; }
1616         LDKInitFeatures* operator ->() { return &self; }
1617         const LDKInitFeatures* operator &() const { return &self; }
1618         const LDKInitFeatures* operator ->() const { return &self; }
1619 };
1620 class NodeFeatures {
1621 private:
1622         LDKNodeFeatures self;
1623 public:
1624         NodeFeatures(const NodeFeatures&) = delete;
1625         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1626         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1627         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1628         ~NodeFeatures() { NodeFeatures_free(self); }
1629         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1630         LDKNodeFeatures* operator &() { return &self; }
1631         LDKNodeFeatures* operator ->() { return &self; }
1632         const LDKNodeFeatures* operator &() const { return &self; }
1633         const LDKNodeFeatures* operator ->() const { return &self; }
1634 };
1635 class ChannelFeatures {
1636 private:
1637         LDKChannelFeatures self;
1638 public:
1639         ChannelFeatures(const ChannelFeatures&) = delete;
1640         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1641         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1642         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1643         ~ChannelFeatures() { ChannelFeatures_free(self); }
1644         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1645         LDKChannelFeatures* operator &() { return &self; }
1646         LDKChannelFeatures* operator ->() { return &self; }
1647         const LDKChannelFeatures* operator &() const { return &self; }
1648         const LDKChannelFeatures* operator ->() const { return &self; }
1649 };
1650 class InvoiceFeatures {
1651 private:
1652         LDKInvoiceFeatures self;
1653 public:
1654         InvoiceFeatures(const InvoiceFeatures&) = delete;
1655         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1656         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1657         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1658         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1659         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1660         LDKInvoiceFeatures* operator &() { return &self; }
1661         LDKInvoiceFeatures* operator ->() { return &self; }
1662         const LDKInvoiceFeatures* operator &() const { return &self; }
1663         const LDKInvoiceFeatures* operator ->() const { return &self; }
1664 };
1665 class OfferFeatures {
1666 private:
1667         LDKOfferFeatures self;
1668 public:
1669         OfferFeatures(const OfferFeatures&) = delete;
1670         OfferFeatures(OfferFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(OfferFeatures)); }
1671         OfferFeatures(LDKOfferFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOfferFeatures)); }
1672         operator LDKOfferFeatures() && { LDKOfferFeatures res = self; memset(&self, 0, sizeof(LDKOfferFeatures)); return res; }
1673         ~OfferFeatures() { OfferFeatures_free(self); }
1674         OfferFeatures& operator=(OfferFeatures&& o) { OfferFeatures_free(self); self = o.self; memset(&o, 0, sizeof(OfferFeatures)); return *this; }
1675         LDKOfferFeatures* operator &() { return &self; }
1676         LDKOfferFeatures* operator ->() { return &self; }
1677         const LDKOfferFeatures* operator &() const { return &self; }
1678         const LDKOfferFeatures* operator ->() const { return &self; }
1679 };
1680 class InvoiceRequestFeatures {
1681 private:
1682         LDKInvoiceRequestFeatures self;
1683 public:
1684         InvoiceRequestFeatures(const InvoiceRequestFeatures&) = delete;
1685         InvoiceRequestFeatures(InvoiceRequestFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceRequestFeatures)); }
1686         InvoiceRequestFeatures(LDKInvoiceRequestFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceRequestFeatures)); }
1687         operator LDKInvoiceRequestFeatures() && { LDKInvoiceRequestFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceRequestFeatures)); return res; }
1688         ~InvoiceRequestFeatures() { InvoiceRequestFeatures_free(self); }
1689         InvoiceRequestFeatures& operator=(InvoiceRequestFeatures&& o) { InvoiceRequestFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceRequestFeatures)); return *this; }
1690         LDKInvoiceRequestFeatures* operator &() { return &self; }
1691         LDKInvoiceRequestFeatures* operator ->() { return &self; }
1692         const LDKInvoiceRequestFeatures* operator &() const { return &self; }
1693         const LDKInvoiceRequestFeatures* operator ->() const { return &self; }
1694 };
1695 class Bolt12InvoiceFeatures {
1696 private:
1697         LDKBolt12InvoiceFeatures self;
1698 public:
1699         Bolt12InvoiceFeatures(const Bolt12InvoiceFeatures&) = delete;
1700         Bolt12InvoiceFeatures(Bolt12InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); }
1701         Bolt12InvoiceFeatures(LDKBolt12InvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBolt12InvoiceFeatures)); }
1702         operator LDKBolt12InvoiceFeatures() && { LDKBolt12InvoiceFeatures res = self; memset(&self, 0, sizeof(LDKBolt12InvoiceFeatures)); return res; }
1703         ~Bolt12InvoiceFeatures() { Bolt12InvoiceFeatures_free(self); }
1704         Bolt12InvoiceFeatures& operator=(Bolt12InvoiceFeatures&& o) { Bolt12InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(Bolt12InvoiceFeatures)); return *this; }
1705         LDKBolt12InvoiceFeatures* operator &() { return &self; }
1706         LDKBolt12InvoiceFeatures* operator ->() { return &self; }
1707         const LDKBolt12InvoiceFeatures* operator &() const { return &self; }
1708         const LDKBolt12InvoiceFeatures* operator ->() const { return &self; }
1709 };
1710 class BlindedHopFeatures {
1711 private:
1712         LDKBlindedHopFeatures self;
1713 public:
1714         BlindedHopFeatures(const BlindedHopFeatures&) = delete;
1715         BlindedHopFeatures(BlindedHopFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(BlindedHopFeatures)); }
1716         BlindedHopFeatures(LDKBlindedHopFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBlindedHopFeatures)); }
1717         operator LDKBlindedHopFeatures() && { LDKBlindedHopFeatures res = self; memset(&self, 0, sizeof(LDKBlindedHopFeatures)); return res; }
1718         ~BlindedHopFeatures() { BlindedHopFeatures_free(self); }
1719         BlindedHopFeatures& operator=(BlindedHopFeatures&& o) { BlindedHopFeatures_free(self); self = o.self; memset(&o, 0, sizeof(BlindedHopFeatures)); return *this; }
1720         LDKBlindedHopFeatures* operator &() { return &self; }
1721         LDKBlindedHopFeatures* operator ->() { return &self; }
1722         const LDKBlindedHopFeatures* operator &() const { return &self; }
1723         const LDKBlindedHopFeatures* operator ->() const { return &self; }
1724 };
1725 class ChannelTypeFeatures {
1726 private:
1727         LDKChannelTypeFeatures self;
1728 public:
1729         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1730         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1731         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1732         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1733         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1734         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1735         LDKChannelTypeFeatures* operator &() { return &self; }
1736         LDKChannelTypeFeatures* operator ->() { return &self; }
1737         const LDKChannelTypeFeatures* operator &() const { return &self; }
1738         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1739 };
1740 class OnionMessageContents {
1741 private:
1742         LDKOnionMessageContents self;
1743 public:
1744         OnionMessageContents(const OnionMessageContents&) = delete;
1745         OnionMessageContents(OnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageContents)); }
1746         OnionMessageContents(LDKOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageContents)); }
1747         operator LDKOnionMessageContents() && { LDKOnionMessageContents res = self; memset(&self, 0, sizeof(LDKOnionMessageContents)); return res; }
1748         ~OnionMessageContents() { OnionMessageContents_free(self); }
1749         OnionMessageContents& operator=(OnionMessageContents&& o) { OnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageContents)); return *this; }
1750         LDKOnionMessageContents* operator &() { return &self; }
1751         LDKOnionMessageContents* operator ->() { return &self; }
1752         const LDKOnionMessageContents* operator &() const { return &self; }
1753         const LDKOnionMessageContents* operator ->() const { return &self; }
1754 };
1755 class CustomOnionMessageContents {
1756 private:
1757         LDKCustomOnionMessageContents self;
1758 public:
1759         CustomOnionMessageContents(const CustomOnionMessageContents&) = delete;
1760         CustomOnionMessageContents(CustomOnionMessageContents&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageContents)); }
1761         CustomOnionMessageContents(LDKCustomOnionMessageContents&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageContents)); }
1762         operator LDKCustomOnionMessageContents() && { LDKCustomOnionMessageContents res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageContents)); return res; }
1763         ~CustomOnionMessageContents() { CustomOnionMessageContents_free(self); }
1764         CustomOnionMessageContents& operator=(CustomOnionMessageContents&& o) { CustomOnionMessageContents_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageContents)); return *this; }
1765         LDKCustomOnionMessageContents* operator &() { return &self; }
1766         LDKCustomOnionMessageContents* operator ->() { return &self; }
1767         const LDKCustomOnionMessageContents* operator &() const { return &self; }
1768         const LDKCustomOnionMessageContents* operator ->() const { return &self; }
1769         /**
1770          *  Returns the TLV type identifying the message contents. MUST be >= 64.
1771          */
1772         inline uint64_t tlv_type();
1773 };
1774 class NodeId {
1775 private:
1776         LDKNodeId self;
1777 public:
1778         NodeId(const NodeId&) = delete;
1779         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
1780         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
1781         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
1782         ~NodeId() { NodeId_free(self); }
1783         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
1784         LDKNodeId* operator &() { return &self; }
1785         LDKNodeId* operator ->() { return &self; }
1786         const LDKNodeId* operator &() const { return &self; }
1787         const LDKNodeId* operator ->() const { return &self; }
1788 };
1789 class NetworkGraph {
1790 private:
1791         LDKNetworkGraph self;
1792 public:
1793         NetworkGraph(const NetworkGraph&) = delete;
1794         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
1795         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
1796         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
1797         ~NetworkGraph() { NetworkGraph_free(self); }
1798         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
1799         LDKNetworkGraph* operator &() { return &self; }
1800         LDKNetworkGraph* operator ->() { return &self; }
1801         const LDKNetworkGraph* operator &() const { return &self; }
1802         const LDKNetworkGraph* operator ->() const { return &self; }
1803 };
1804 class ReadOnlyNetworkGraph {
1805 private:
1806         LDKReadOnlyNetworkGraph self;
1807 public:
1808         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
1809         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
1810         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
1811         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
1812         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
1813         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
1814         LDKReadOnlyNetworkGraph* operator &() { return &self; }
1815         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
1816         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
1817         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
1818 };
1819 class NetworkUpdate {
1820 private:
1821         LDKNetworkUpdate self;
1822 public:
1823         NetworkUpdate(const NetworkUpdate&) = delete;
1824         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
1825         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
1826         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
1827         ~NetworkUpdate() { NetworkUpdate_free(self); }
1828         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
1829         LDKNetworkUpdate* operator &() { return &self; }
1830         LDKNetworkUpdate* operator ->() { return &self; }
1831         const LDKNetworkUpdate* operator &() const { return &self; }
1832         const LDKNetworkUpdate* operator ->() const { return &self; }
1833 };
1834 class P2PGossipSync {
1835 private:
1836         LDKP2PGossipSync self;
1837 public:
1838         P2PGossipSync(const P2PGossipSync&) = delete;
1839         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
1840         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
1841         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
1842         ~P2PGossipSync() { P2PGossipSync_free(self); }
1843         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
1844         LDKP2PGossipSync* operator &() { return &self; }
1845         LDKP2PGossipSync* operator ->() { return &self; }
1846         const LDKP2PGossipSync* operator &() const { return &self; }
1847         const LDKP2PGossipSync* operator ->() const { return &self; }
1848 };
1849 class ChannelUpdateInfo {
1850 private:
1851         LDKChannelUpdateInfo self;
1852 public:
1853         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
1854         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
1855         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
1856         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
1857         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
1858         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
1859         LDKChannelUpdateInfo* operator &() { return &self; }
1860         LDKChannelUpdateInfo* operator ->() { return &self; }
1861         const LDKChannelUpdateInfo* operator &() const { return &self; }
1862         const LDKChannelUpdateInfo* operator ->() const { return &self; }
1863 };
1864 class ChannelInfo {
1865 private:
1866         LDKChannelInfo self;
1867 public:
1868         ChannelInfo(const ChannelInfo&) = delete;
1869         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
1870         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
1871         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
1872         ~ChannelInfo() { ChannelInfo_free(self); }
1873         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
1874         LDKChannelInfo* operator &() { return &self; }
1875         LDKChannelInfo* operator ->() { return &self; }
1876         const LDKChannelInfo* operator &() const { return &self; }
1877         const LDKChannelInfo* operator ->() const { return &self; }
1878 };
1879 class DirectedChannelInfo {
1880 private:
1881         LDKDirectedChannelInfo self;
1882 public:
1883         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
1884         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
1885         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
1886         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
1887         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
1888         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
1889         LDKDirectedChannelInfo* operator &() { return &self; }
1890         LDKDirectedChannelInfo* operator ->() { return &self; }
1891         const LDKDirectedChannelInfo* operator &() const { return &self; }
1892         const LDKDirectedChannelInfo* operator ->() const { return &self; }
1893 };
1894 class EffectiveCapacity {
1895 private:
1896         LDKEffectiveCapacity self;
1897 public:
1898         EffectiveCapacity(const EffectiveCapacity&) = delete;
1899         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
1900         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
1901         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
1902         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
1903         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
1904         LDKEffectiveCapacity* operator &() { return &self; }
1905         LDKEffectiveCapacity* operator ->() { return &self; }
1906         const LDKEffectiveCapacity* operator &() const { return &self; }
1907         const LDKEffectiveCapacity* operator ->() const { return &self; }
1908 };
1909 class RoutingFees {
1910 private:
1911         LDKRoutingFees self;
1912 public:
1913         RoutingFees(const RoutingFees&) = delete;
1914         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
1915         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
1916         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
1917         ~RoutingFees() { RoutingFees_free(self); }
1918         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
1919         LDKRoutingFees* operator &() { return &self; }
1920         LDKRoutingFees* operator ->() { return &self; }
1921         const LDKRoutingFees* operator &() const { return &self; }
1922         const LDKRoutingFees* operator ->() const { return &self; }
1923 };
1924 class NodeAnnouncementInfo {
1925 private:
1926         LDKNodeAnnouncementInfo self;
1927 public:
1928         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
1929         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
1930         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
1931         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
1932         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
1933         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
1934         LDKNodeAnnouncementInfo* operator &() { return &self; }
1935         LDKNodeAnnouncementInfo* operator ->() { return &self; }
1936         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
1937         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
1938 };
1939 class NodeAlias {
1940 private:
1941         LDKNodeAlias self;
1942 public:
1943         NodeAlias(const NodeAlias&) = delete;
1944         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
1945         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
1946         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
1947         ~NodeAlias() { NodeAlias_free(self); }
1948         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
1949         LDKNodeAlias* operator &() { return &self; }
1950         LDKNodeAlias* operator ->() { return &self; }
1951         const LDKNodeAlias* operator &() const { return &self; }
1952         const LDKNodeAlias* operator ->() const { return &self; }
1953 };
1954 class NodeInfo {
1955 private:
1956         LDKNodeInfo self;
1957 public:
1958         NodeInfo(const NodeInfo&) = delete;
1959         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
1960         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
1961         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
1962         ~NodeInfo() { NodeInfo_free(self); }
1963         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
1964         LDKNodeInfo* operator &() { return &self; }
1965         LDKNodeInfo* operator ->() { return &self; }
1966         const LDKNodeInfo* operator &() const { return &self; }
1967         const LDKNodeInfo* operator ->() const { return &self; }
1968 };
1969 class DelayedPaymentOutputDescriptor {
1970 private:
1971         LDKDelayedPaymentOutputDescriptor self;
1972 public:
1973         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
1974         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
1975         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
1976         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
1977         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
1978         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
1979         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
1980         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
1981         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
1982         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
1983 };
1984 class StaticPaymentOutputDescriptor {
1985 private:
1986         LDKStaticPaymentOutputDescriptor self;
1987 public:
1988         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
1989         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
1990         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
1991         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
1992         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
1993         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
1994         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
1995         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
1996         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
1997         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
1998 };
1999 class SpendableOutputDescriptor {
2000 private:
2001         LDKSpendableOutputDescriptor self;
2002 public:
2003         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
2004         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
2005         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
2006         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
2007         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
2008         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
2009         LDKSpendableOutputDescriptor* operator &() { return &self; }
2010         LDKSpendableOutputDescriptor* operator ->() { return &self; }
2011         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
2012         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
2013 };
2014 class ChannelSigner {
2015 private:
2016         LDKChannelSigner self;
2017 public:
2018         ChannelSigner(const ChannelSigner&) = delete;
2019         ChannelSigner(ChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelSigner)); }
2020         ChannelSigner(LDKChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelSigner)); }
2021         operator LDKChannelSigner() && { LDKChannelSigner res = self; memset(&self, 0, sizeof(LDKChannelSigner)); return res; }
2022         ~ChannelSigner() { ChannelSigner_free(self); }
2023         ChannelSigner& operator=(ChannelSigner&& o) { ChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(ChannelSigner)); return *this; }
2024         LDKChannelSigner* operator &() { return &self; }
2025         LDKChannelSigner* operator ->() { return &self; }
2026         const LDKChannelSigner* operator &() const { return &self; }
2027         const LDKChannelSigner* operator ->() const { return &self; }
2028         /**
2029          *  Gets the per-commitment point for a specific commitment number
2030          * 
2031          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
2032          */
2033         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
2034         /**
2035          *  Gets the commitment secret for a specific commitment number as part of the revocation process
2036          * 
2037          *  An external signer implementation should error here if the commitment was already signed
2038          *  and should refuse to sign it in the future.
2039          * 
2040          *  May be called more than once for the same index.
2041          * 
2042          *  Note that the commitment number starts at `(1 << 48) - 1` and counts backwards.
2043          */
2044         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
2045         /**
2046          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
2047          * 
2048          *  This is required in order for the signer to make sure that releasing a commitment
2049          *  secret won't leave us without a broadcastable holder transaction.
2050          *  Policy checks should be implemented in this function, including checking the amount
2051          *  sent to us and checking the HTLCs.
2052          * 
2053          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
2054          *  A validating signer should ensure that an HTLC output is removed only when the matching
2055          *  preimage is provided, or when the value to holder is restored.
2056          * 
2057          *  Note that all the relevant preimages will be provided, but there may also be additional
2058          *  irrelevant or duplicate preimages.
2059          */
2060         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
2061         /**
2062          *  Returns an arbitrary identifier describing the set of keys which are provided back to you in
2063          *  some [`SpendableOutputDescriptor`] types. This should be sufficient to identify this
2064          *  [`EcdsaChannelSigner`] object uniquely and lookup or re-derive its keys.
2065          */
2066         inline LDKThirtyTwoBytes channel_keys_id();
2067         /**
2068          *  Set the counterparty static channel data, including basepoints,
2069          *  `counterparty_selected`/`holder_selected_contest_delay` and funding outpoint.
2070          * 
2071          *  This data is static, and will never change for a channel once set. For a given [`ChannelSigner`]
2072          *  instance, LDK will call this method exactly once - either immediately after construction
2073          *  (not including if done via [`SignerProvider::read_chan_signer`]) or when the funding
2074          *  information has been generated.
2075          * 
2076          *  channel_parameters.is_populated() MUST be true.
2077          */
2078         inline void provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
2079 };
2080 class EcdsaChannelSigner {
2081 private:
2082         LDKEcdsaChannelSigner self;
2083 public:
2084         EcdsaChannelSigner(const EcdsaChannelSigner&) = delete;
2085         EcdsaChannelSigner(EcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(EcdsaChannelSigner)); }
2086         EcdsaChannelSigner(LDKEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEcdsaChannelSigner)); }
2087         operator LDKEcdsaChannelSigner() && { LDKEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKEcdsaChannelSigner)); return res; }
2088         ~EcdsaChannelSigner() { EcdsaChannelSigner_free(self); }
2089         EcdsaChannelSigner& operator=(EcdsaChannelSigner&& o) { EcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(EcdsaChannelSigner)); return *this; }
2090         LDKEcdsaChannelSigner* operator &() { return &self; }
2091         LDKEcdsaChannelSigner* operator ->() { return &self; }
2092         const LDKEcdsaChannelSigner* operator &() const { return &self; }
2093         const LDKEcdsaChannelSigner* operator ->() const { return &self; }
2094         /**
2095          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
2096          * 
2097          *  Note that if signing fails or is rejected, the channel will be force-closed.
2098          * 
2099          *  Policy checks should be implemented in this function, including checking the amount
2100          *  sent to us and checking the HTLCs.
2101          * 
2102          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
2103          *  A validating signer should ensure that an HTLC output is removed only when the matching
2104          *  preimage is provided, or when the value to holder is restored.
2105          * 
2106          *  Note that all the relevant preimages will be provided, but there may also be additional
2107          *  irrelevant or duplicate preimages.
2108          */
2109         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
2110         /**
2111          *  Validate the counterparty's revocation.
2112          * 
2113          *  This is required in order for the signer to make sure that the state has moved
2114          *  forward and it is safe to sign the next counterparty commitment.
2115          */
2116         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
2117         /**
2118          *  Creates a signature for a holder's commitment transaction and its claiming HTLC transactions.
2119          * 
2120          *  This will be called
2121          *  - with a non-revoked `commitment_tx`.
2122          *  - with the latest `commitment_tx` when we initiate a force-close.
2123          *  - with the previous `commitment_tx`, just to get claiming HTLC
2124          *    signatures, if we are reacting to a [`ChannelMonitor`]
2125          *    [replica](https://github.com/lightningdevkit/rust-lightning/blob/main/GLOSSARY.md#monitor-replicas)
2126          *    that decided to broadcast before it had been updated to the latest `commitment_tx`.
2127          * 
2128          *  This may be called multiple times for the same transaction.
2129          * 
2130          *  An external signer implementation should check that the commitment has not been revoked.
2131          * 
2132          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
2133          */
2134         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
2135         /**
2136          *  Create a signature for the given input in a transaction spending an HTLC transaction output
2137          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
2138          * 
2139          *  A justice transaction may claim multiple outputs at the same time if timelocks are
2140          *  similar, but only a signature for the input at index `input` should be signed for here.
2141          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
2142          *  to an upcoming timelock expiration.
2143          * 
2144          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
2145          * 
2146          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
2147          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
2148          *  not allow the spending of any funds by itself (you need our holder `revocation_secret` to do
2149          *  so).
2150          */
2151         inline LDK::CResult_SignatureNoneZ sign_justice_revoked_output(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]);
2152         /**
2153          *  Create a signature for the given input in a transaction spending a commitment transaction
2154          *  HTLC output when our counterparty broadcasts an old state.
2155          * 
2156          *  A justice transaction may claim multiple outputs at the same time if timelocks are
2157          *  similar, but only a signature for the input at index `input` should be signed for here.
2158          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
2159          *  to an upcoming timelock expiration.
2160          * 
2161          *  `amount` is the value of the output spent by this input, committed to in the BIP 143
2162          *  signature.
2163          * 
2164          *  `per_commitment_key` is revocation secret which was provided by our counterparty when they
2165          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
2166          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
2167          *  so).
2168          * 
2169          *  `htlc` holds HTLC elements (hash, timelock), thus changing the format of the witness script
2170          *  (which is committed to in the BIP 143 signatures).
2171          */
2172         inline LDK::CResult_SignatureNoneZ sign_justice_revoked_htlc(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc);
2173         /**
2174          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
2175          *  transaction, either offered or received.
2176          * 
2177          *  Such a transaction may claim multiples offered outputs at same time if we know the
2178          *  preimage for each when we create it, but only the input at index `input` should be
2179          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
2180          *  needed with regards to an upcoming timelock expiration.
2181          * 
2182          *  `witness_script` is either an offered or received script as defined in BOLT3 for HTLC
2183          *  outputs.
2184          * 
2185          *  `amount` is value of the output spent by this input, committed to in the BIP 143 signature.
2186          * 
2187          *  `per_commitment_point` is the dynamic point corresponding to the channel state
2188          *  detected onchain. It has been generated by our counterparty and is used to derive
2189          *  channel state keys, which are then included in the witness script and committed to in the
2190          *  BIP 143 signature.
2191          */
2192         inline LDK::CResult_SignatureNoneZ sign_counterparty_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc);
2193         /**
2194          *  Create a signature for a (proposed) closing transaction.
2195          * 
2196          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
2197          *  chosen to forgo their output as dust.
2198          */
2199         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
2200         /**
2201          *  Computes the signature for a commitment transaction's anchor output used as an
2202          *  input within `anchor_tx`, which spends the commitment transaction, at index `input`.
2203          */
2204         inline LDK::CResult_SignatureNoneZ sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input);
2205         /**
2206          *  Signs a channel announcement message with our funding key proving it comes from one of the
2207          *  channel participants.
2208          * 
2209          *  Channel announcements also require a signature from each node's network key. Our node
2210          *  signature is computed through [`NodeSigner::sign_gossip_message`].
2211          * 
2212          *  Note that if this fails or is rejected, the channel will not be publicly announced and
2213          *  our counterparty may (though likely will not) close the channel on us for violating the
2214          *  protocol.
2215          */
2216         inline LDK::CResult_SignatureNoneZ sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
2217 };
2218 class WriteableEcdsaChannelSigner {
2219 private:
2220         LDKWriteableEcdsaChannelSigner self;
2221 public:
2222         WriteableEcdsaChannelSigner(const WriteableEcdsaChannelSigner&) = delete;
2223         WriteableEcdsaChannelSigner(WriteableEcdsaChannelSigner&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); }
2224         WriteableEcdsaChannelSigner(LDKWriteableEcdsaChannelSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); }
2225         operator LDKWriteableEcdsaChannelSigner() && { LDKWriteableEcdsaChannelSigner res = self; memset(&self, 0, sizeof(LDKWriteableEcdsaChannelSigner)); return res; }
2226         ~WriteableEcdsaChannelSigner() { WriteableEcdsaChannelSigner_free(self); }
2227         WriteableEcdsaChannelSigner& operator=(WriteableEcdsaChannelSigner&& o) { WriteableEcdsaChannelSigner_free(self); self = o.self; memset(&o, 0, sizeof(WriteableEcdsaChannelSigner)); return *this; }
2228         LDKWriteableEcdsaChannelSigner* operator &() { return &self; }
2229         LDKWriteableEcdsaChannelSigner* operator ->() { return &self; }
2230         const LDKWriteableEcdsaChannelSigner* operator &() const { return &self; }
2231         const LDKWriteableEcdsaChannelSigner* operator ->() const { return &self; }
2232 };
2233 class Recipient {
2234 private:
2235         LDKRecipient self;
2236 public:
2237         Recipient(const Recipient&) = delete;
2238         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
2239         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
2240         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
2241         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
2242         LDKRecipient* operator &() { return &self; }
2243         LDKRecipient* operator ->() { return &self; }
2244         const LDKRecipient* operator &() const { return &self; }
2245         const LDKRecipient* operator ->() const { return &self; }
2246 };
2247 class EntropySource {
2248 private:
2249         LDKEntropySource self;
2250 public:
2251         EntropySource(const EntropySource&) = delete;
2252         EntropySource(EntropySource&& o) : self(o.self) { memset(&o, 0, sizeof(EntropySource)); }
2253         EntropySource(LDKEntropySource&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEntropySource)); }
2254         operator LDKEntropySource() && { LDKEntropySource res = self; memset(&self, 0, sizeof(LDKEntropySource)); return res; }
2255         ~EntropySource() { EntropySource_free(self); }
2256         EntropySource& operator=(EntropySource&& o) { EntropySource_free(self); self = o.self; memset(&o, 0, sizeof(EntropySource)); return *this; }
2257         LDKEntropySource* operator &() { return &self; }
2258         LDKEntropySource* operator ->() { return &self; }
2259         const LDKEntropySource* operator &() const { return &self; }
2260         const LDKEntropySource* operator ->() const { return &self; }
2261         /**
2262          *  Gets a unique, cryptographically-secure, random 32-byte value. This method must return a
2263          *  different value each time it is called.
2264          */
2265         inline LDKThirtyTwoBytes get_secure_random_bytes();
2266 };
2267 class NodeSigner {
2268 private:
2269         LDKNodeSigner self;
2270 public:
2271         NodeSigner(const NodeSigner&) = delete;
2272         NodeSigner(NodeSigner&& o) : self(o.self) { memset(&o, 0, sizeof(NodeSigner)); }
2273         NodeSigner(LDKNodeSigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeSigner)); }
2274         operator LDKNodeSigner() && { LDKNodeSigner res = self; memset(&self, 0, sizeof(LDKNodeSigner)); return res; }
2275         ~NodeSigner() { NodeSigner_free(self); }
2276         NodeSigner& operator=(NodeSigner&& o) { NodeSigner_free(self); self = o.self; memset(&o, 0, sizeof(NodeSigner)); return *this; }
2277         LDKNodeSigner* operator &() { return &self; }
2278         LDKNodeSigner* operator ->() { return &self; }
2279         const LDKNodeSigner* operator &() const { return &self; }
2280         const LDKNodeSigner* operator ->() const { return &self; }
2281         /**
2282          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
2283          * 
2284          *  If the implementor of this trait supports [phantom node payments], then every node that is
2285          *  intended to be included in the phantom invoice route hints must return the same value from
2286          *  this method.
2287          * 
2288          *  This method must return the same value each time it is called.
2289          * 
2290          *  [phantom node payments]: PhantomKeysManager
2291          */
2292         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
2293         /**
2294          *  Get node id based on the provided [`Recipient`].
2295          * 
2296          *  This method must return the same value each time it is called with a given [`Recipient`]
2297          *  parameter.
2298          * 
2299          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2300          */
2301         inline LDK::CResult_PublicKeyNoneZ get_node_id(enum LDKRecipient recipient);
2302         /**
2303          *  Gets the ECDH shared secret of our node secret and `other_key`, multiplying by `tweak` if
2304          *  one is provided. Note that this tweak can be applied to `other_key` instead of our node
2305          *  secret, though this is less efficient.
2306          * 
2307          *  Note that if this fails while attempting to forward an HTLC, LDK will panic. The error
2308          *  should be resolved to allow LDK to resume forwarding HTLCs.
2309          * 
2310          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2311          */
2312         inline LDK::CResult_SharedSecretNoneZ ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak);
2313         /**
2314          *  Sign an invoice.
2315          * 
2316          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
2317          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
2318          *  blindly signing the hash.
2319          * 
2320          *  The `hrp_bytes` are ASCII bytes, while the `invoice_data` is base32.
2321          * 
2322          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
2323          * 
2324          *  Errors if the [`Recipient`] variant is not supported by the implementation.
2325          */
2326         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient);
2327         /**
2328          *  Sign a gossip message.
2329          * 
2330          *  Note that if this fails, LDK may panic and the message will not be broadcast to the network
2331          *  or a possible channel counterparty. If LDK panics, the error should be resolved to allow the
2332          *  message to be broadcast, as otherwise it may prevent one from receiving funds over the
2333          *  corresponding channel.
2334          */
2335         inline LDK::CResult_SignatureNoneZ sign_gossip_message(struct LDKUnsignedGossipMessage msg);
2336 };
2337 class SignerProvider {
2338 private:
2339         LDKSignerProvider self;
2340 public:
2341         SignerProvider(const SignerProvider&) = delete;
2342         SignerProvider(SignerProvider&& o) : self(o.self) { memset(&o, 0, sizeof(SignerProvider)); }
2343         SignerProvider(LDKSignerProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignerProvider)); }
2344         operator LDKSignerProvider() && { LDKSignerProvider res = self; memset(&self, 0, sizeof(LDKSignerProvider)); return res; }
2345         ~SignerProvider() { SignerProvider_free(self); }
2346         SignerProvider& operator=(SignerProvider&& o) { SignerProvider_free(self); self = o.self; memset(&o, 0, sizeof(SignerProvider)); return *this; }
2347         LDKSignerProvider* operator &() { return &self; }
2348         LDKSignerProvider* operator ->() { return &self; }
2349         const LDKSignerProvider* operator &() const { return &self; }
2350         const LDKSignerProvider* operator ->() const { return &self; }
2351         /**
2352          *  Generates a unique `channel_keys_id` that can be used to obtain a [`Self::Signer`] through
2353          *  [`SignerProvider::derive_channel_signer`]. The `user_channel_id` is provided to allow
2354          *  implementations of [`SignerProvider`] to maintain a mapping between itself and the generated
2355          *  `channel_keys_id`.
2356          * 
2357          *  This method must return a different value each time it is called.
2358          */
2359         inline LDKThirtyTwoBytes generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id);
2360         /**
2361          *  Derives the private key material backing a `Signer`.
2362          * 
2363          *  To derive a new `Signer`, a fresh `channel_keys_id` should be obtained through
2364          *  [`SignerProvider::generate_channel_keys_id`]. Otherwise, an existing `Signer` can be
2365          *  re-derived from its `channel_keys_id`, which can be obtained through its trait method
2366          *  [`ChannelSigner::channel_keys_id`].
2367          */
2368         inline LDK::WriteableEcdsaChannelSigner derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
2369         /**
2370          *  Reads a [`Signer`] for this [`SignerProvider`] from the given input stream.
2371          *  This is only called during deserialization of other objects which contain
2372          *  [`WriteableEcdsaChannelSigner`]-implementing objects (i.e., [`ChannelMonitor`]s and [`ChannelManager`]s).
2373          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
2374          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
2375          *  you've read all of the provided bytes to ensure no corruption occurred.
2376          * 
2377          *  This method is slowly being phased out -- it will only be called when reading objects
2378          *  written by LDK versions prior to 0.0.113.
2379          * 
2380          *  [`Signer`]: Self::Signer
2381          *  [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
2382          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2383          */
2384         inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
2385         /**
2386          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
2387          * 
2388          *  This method should return a different value each time it is called, to avoid linking
2389          *  on-chain funds across channels as controlled to the same user.
2390          */
2391         inline LDK::CVec_u8Z get_destination_script();
2392         /**
2393          *  Get a script pubkey which we will send funds to when closing a channel.
2394          * 
2395          *  This method should return a different value each time it is called, to avoid linking
2396          *  on-chain funds across channels as controlled to the same user.
2397          */
2398         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
2399 };
2400 class InMemorySigner {
2401 private:
2402         LDKInMemorySigner self;
2403 public:
2404         InMemorySigner(const InMemorySigner&) = delete;
2405         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
2406         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
2407         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
2408         ~InMemorySigner() { InMemorySigner_free(self); }
2409         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
2410         LDKInMemorySigner* operator &() { return &self; }
2411         LDKInMemorySigner* operator ->() { return &self; }
2412         const LDKInMemorySigner* operator &() const { return &self; }
2413         const LDKInMemorySigner* operator ->() const { return &self; }
2414 };
2415 class KeysManager {
2416 private:
2417         LDKKeysManager self;
2418 public:
2419         KeysManager(const KeysManager&) = delete;
2420         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
2421         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
2422         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
2423         ~KeysManager() { KeysManager_free(self); }
2424         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
2425         LDKKeysManager* operator &() { return &self; }
2426         LDKKeysManager* operator ->() { return &self; }
2427         const LDKKeysManager* operator &() const { return &self; }
2428         const LDKKeysManager* operator ->() const { return &self; }
2429 };
2430 class PhantomKeysManager {
2431 private:
2432         LDKPhantomKeysManager self;
2433 public:
2434         PhantomKeysManager(const PhantomKeysManager&) = delete;
2435         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
2436         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
2437         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
2438         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
2439         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
2440         LDKPhantomKeysManager* operator &() { return &self; }
2441         LDKPhantomKeysManager* operator ->() { return &self; }
2442         const LDKPhantomKeysManager* operator &() const { return &self; }
2443         const LDKPhantomKeysManager* operator ->() const { return &self; }
2444 };
2445 class FilesystemPersister {
2446 private:
2447         LDKFilesystemPersister self;
2448 public:
2449         FilesystemPersister(const FilesystemPersister&) = delete;
2450         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
2451         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
2452         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
2453         ~FilesystemPersister() { FilesystemPersister_free(self); }
2454         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
2455         LDKFilesystemPersister* operator &() { return &self; }
2456         LDKFilesystemPersister* operator ->() { return &self; }
2457         const LDKFilesystemPersister* operator &() const { return &self; }
2458         const LDKFilesystemPersister* operator ->() const { return &self; }
2459 };
2460 class FailureCode {
2461 private:
2462         LDKFailureCode self;
2463 public:
2464         FailureCode(const FailureCode&) = delete;
2465         FailureCode(FailureCode&& o) : self(o.self) { memset(&o, 0, sizeof(FailureCode)); }
2466         FailureCode(LDKFailureCode&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFailureCode)); }
2467         operator LDKFailureCode() && { LDKFailureCode res = self; memset(&self, 0, sizeof(LDKFailureCode)); return res; }
2468         FailureCode& operator=(FailureCode&& o) { self = o.self; memset(&o, 0, sizeof(FailureCode)); return *this; }
2469         LDKFailureCode* operator &() { return &self; }
2470         LDKFailureCode* operator ->() { return &self; }
2471         const LDKFailureCode* operator &() const { return &self; }
2472         const LDKFailureCode* operator ->() const { return &self; }
2473 };
2474 class ChannelManager {
2475 private:
2476         LDKChannelManager self;
2477 public:
2478         ChannelManager(const ChannelManager&) = delete;
2479         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2480         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2481         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2482         ~ChannelManager() { ChannelManager_free(self); }
2483         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2484         LDKChannelManager* operator &() { return &self; }
2485         LDKChannelManager* operator ->() { return &self; }
2486         const LDKChannelManager* operator &() const { return &self; }
2487         const LDKChannelManager* operator ->() const { return &self; }
2488 };
2489 class ChainParameters {
2490 private:
2491         LDKChainParameters self;
2492 public:
2493         ChainParameters(const ChainParameters&) = delete;
2494         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2495         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2496         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2497         ~ChainParameters() { ChainParameters_free(self); }
2498         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2499         LDKChainParameters* operator &() { return &self; }
2500         LDKChainParameters* operator ->() { return &self; }
2501         const LDKChainParameters* operator &() const { return &self; }
2502         const LDKChainParameters* operator ->() const { return &self; }
2503 };
2504 class CounterpartyForwardingInfo {
2505 private:
2506         LDKCounterpartyForwardingInfo self;
2507 public:
2508         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2509         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2510         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2511         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2512         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2513         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2514         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2515         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2516         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2517         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2518 };
2519 class ChannelCounterparty {
2520 private:
2521         LDKChannelCounterparty self;
2522 public:
2523         ChannelCounterparty(const ChannelCounterparty&) = delete;
2524         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2525         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2526         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2527         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2528         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2529         LDKChannelCounterparty* operator &() { return &self; }
2530         LDKChannelCounterparty* operator ->() { return &self; }
2531         const LDKChannelCounterparty* operator &() const { return &self; }
2532         const LDKChannelCounterparty* operator ->() const { return &self; }
2533 };
2534 class ChannelDetails {
2535 private:
2536         LDKChannelDetails self;
2537 public:
2538         ChannelDetails(const ChannelDetails&) = delete;
2539         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2540         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2541         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2542         ~ChannelDetails() { ChannelDetails_free(self); }
2543         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2544         LDKChannelDetails* operator &() { return &self; }
2545         LDKChannelDetails* operator ->() { return &self; }
2546         const LDKChannelDetails* operator &() const { return &self; }
2547         const LDKChannelDetails* operator ->() const { return &self; }
2548 };
2549 class RecentPaymentDetails {
2550 private:
2551         LDKRecentPaymentDetails self;
2552 public:
2553         RecentPaymentDetails(const RecentPaymentDetails&) = delete;
2554         RecentPaymentDetails(RecentPaymentDetails&& o) : self(o.self) { memset(&o, 0, sizeof(RecentPaymentDetails)); }
2555         RecentPaymentDetails(LDKRecentPaymentDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecentPaymentDetails)); }
2556         operator LDKRecentPaymentDetails() && { LDKRecentPaymentDetails res = self; memset(&self, 0, sizeof(LDKRecentPaymentDetails)); return res; }
2557         ~RecentPaymentDetails() { RecentPaymentDetails_free(self); }
2558         RecentPaymentDetails& operator=(RecentPaymentDetails&& o) { RecentPaymentDetails_free(self); self = o.self; memset(&o, 0, sizeof(RecentPaymentDetails)); return *this; }
2559         LDKRecentPaymentDetails* operator &() { return &self; }
2560         LDKRecentPaymentDetails* operator ->() { return &self; }
2561         const LDKRecentPaymentDetails* operator &() const { return &self; }
2562         const LDKRecentPaymentDetails* operator ->() const { return &self; }
2563 };
2564 class PhantomRouteHints {
2565 private:
2566         LDKPhantomRouteHints self;
2567 public:
2568         PhantomRouteHints(const PhantomRouteHints&) = delete;
2569         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2570         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
2571         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
2572         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
2573         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
2574         LDKPhantomRouteHints* operator &() { return &self; }
2575         LDKPhantomRouteHints* operator ->() { return &self; }
2576         const LDKPhantomRouteHints* operator &() const { return &self; }
2577         const LDKPhantomRouteHints* operator ->() const { return &self; }
2578 };
2579 class ChannelManagerReadArgs {
2580 private:
2581         LDKChannelManagerReadArgs self;
2582 public:
2583         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
2584         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
2585         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
2586         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
2587         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
2588         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
2589         LDKChannelManagerReadArgs* operator &() { return &self; }
2590         LDKChannelManagerReadArgs* operator ->() { return &self; }
2591         const LDKChannelManagerReadArgs* operator &() const { return &self; }
2592         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
2593 };
2594 class ChannelHandshakeConfig {
2595 private:
2596         LDKChannelHandshakeConfig self;
2597 public:
2598         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
2599         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
2600         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
2601         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
2602         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
2603         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
2604         LDKChannelHandshakeConfig* operator &() { return &self; }
2605         LDKChannelHandshakeConfig* operator ->() { return &self; }
2606         const LDKChannelHandshakeConfig* operator &() const { return &self; }
2607         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
2608 };
2609 class ChannelHandshakeLimits {
2610 private:
2611         LDKChannelHandshakeLimits self;
2612 public:
2613         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
2614         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
2615         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
2616         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
2617         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
2618         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
2619         LDKChannelHandshakeLimits* operator &() { return &self; }
2620         LDKChannelHandshakeLimits* operator ->() { return &self; }
2621         const LDKChannelHandshakeLimits* operator &() const { return &self; }
2622         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
2623 };
2624 class ChannelConfig {
2625 private:
2626         LDKChannelConfig self;
2627 public:
2628         ChannelConfig(const ChannelConfig&) = delete;
2629         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
2630         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
2631         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
2632         ~ChannelConfig() { ChannelConfig_free(self); }
2633         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
2634         LDKChannelConfig* operator &() { return &self; }
2635         LDKChannelConfig* operator ->() { return &self; }
2636         const LDKChannelConfig* operator &() const { return &self; }
2637         const LDKChannelConfig* operator ->() const { return &self; }
2638 };
2639 class UserConfig {
2640 private:
2641         LDKUserConfig self;
2642 public:
2643         UserConfig(const UserConfig&) = delete;
2644         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
2645         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
2646         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
2647         ~UserConfig() { UserConfig_free(self); }
2648         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
2649         LDKUserConfig* operator &() { return &self; }
2650         LDKUserConfig* operator ->() { return &self; }
2651         const LDKUserConfig* operator &() const { return &self; }
2652         const LDKUserConfig* operator ->() const { return &self; }
2653 };
2654 class APIError {
2655 private:
2656         LDKAPIError self;
2657 public:
2658         APIError(const APIError&) = delete;
2659         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
2660         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
2661         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
2662         ~APIError() { APIError_free(self); }
2663         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
2664         LDKAPIError* operator &() { return &self; }
2665         LDKAPIError* operator ->() { return &self; }
2666         const LDKAPIError* operator &() const { return &self; }
2667         const LDKAPIError* operator ->() const { return &self; }
2668 };
2669 class BigSize {
2670 private:
2671         LDKBigSize self;
2672 public:
2673         BigSize(const BigSize&) = delete;
2674         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
2675         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
2676         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
2677         ~BigSize() { BigSize_free(self); }
2678         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
2679         LDKBigSize* operator &() { return &self; }
2680         LDKBigSize* operator ->() { return &self; }
2681         const LDKBigSize* operator &() const { return &self; }
2682         const LDKBigSize* operator ->() const { return &self; }
2683 };
2684 class Hostname {
2685 private:
2686         LDKHostname self;
2687 public:
2688         Hostname(const Hostname&) = delete;
2689         Hostname(Hostname&& o) : self(o.self) { memset(&o, 0, sizeof(Hostname)); }
2690         Hostname(LDKHostname&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHostname)); }
2691         operator LDKHostname() && { LDKHostname res = self; memset(&self, 0, sizeof(LDKHostname)); return res; }
2692         ~Hostname() { Hostname_free(self); }
2693         Hostname& operator=(Hostname&& o) { Hostname_free(self); self = o.self; memset(&o, 0, sizeof(Hostname)); return *this; }
2694         LDKHostname* operator &() { return &self; }
2695         LDKHostname* operator ->() { return &self; }
2696         const LDKHostname* operator &() const { return &self; }
2697         const LDKHostname* operator ->() const { return &self; }
2698 };
2699 class PrintableString {
2700 private:
2701         LDKPrintableString self;
2702 public:
2703         PrintableString(const PrintableString&) = delete;
2704         PrintableString(PrintableString&& o) : self(o.self) { memset(&o, 0, sizeof(PrintableString)); }
2705         PrintableString(LDKPrintableString&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrintableString)); }
2706         operator LDKPrintableString() && { LDKPrintableString res = self; memset(&self, 0, sizeof(LDKPrintableString)); return res; }
2707         ~PrintableString() { PrintableString_free(self); }
2708         PrintableString& operator=(PrintableString&& o) { PrintableString_free(self); self = o.self; memset(&o, 0, sizeof(PrintableString)); return *this; }
2709         LDKPrintableString* operator &() { return &self; }
2710         LDKPrintableString* operator ->() { return &self; }
2711         const LDKPrintableString* operator &() const { return &self; }
2712         const LDKPrintableString* operator ->() const { return &self; }
2713 };
2714 class OutPoint {
2715 private:
2716         LDKOutPoint self;
2717 public:
2718         OutPoint(const OutPoint&) = delete;
2719         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
2720         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
2721         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
2722         ~OutPoint() { OutPoint_free(self); }
2723         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
2724         LDKOutPoint* operator &() { return &self; }
2725         LDKOutPoint* operator ->() { return &self; }
2726         const LDKOutPoint* operator &() const { return &self; }
2727         const LDKOutPoint* operator ->() const { return &self; }
2728 };
2729 class CustomMessageReader {
2730 private:
2731         LDKCustomMessageReader self;
2732 public:
2733         CustomMessageReader(const CustomMessageReader&) = delete;
2734         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
2735         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
2736         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
2737         ~CustomMessageReader() { CustomMessageReader_free(self); }
2738         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
2739         LDKCustomMessageReader* operator &() { return &self; }
2740         LDKCustomMessageReader* operator ->() { return &self; }
2741         const LDKCustomMessageReader* operator &() const { return &self; }
2742         const LDKCustomMessageReader* operator ->() const { return &self; }
2743         /**
2744          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
2745          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
2746          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
2747          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
2748          */
2749         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
2750 };
2751 class Type {
2752 private:
2753         LDKType self;
2754 public:
2755         Type(const Type&) = delete;
2756         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
2757         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
2758         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
2759         ~Type() { Type_free(self); }
2760         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
2761         LDKType* operator &() { return &self; }
2762         LDKType* operator ->() { return &self; }
2763         const LDKType* operator &() const { return &self; }
2764         const LDKType* operator ->() const { return &self; }
2765         /**
2766          *  Returns the type identifying the message payload.
2767          */
2768         inline uint16_t type_id();
2769         /**
2770          * Return a human-readable "debug" string describing this object
2771          */
2772         inline LDK::Str debug_str();
2773 };
2774 class PaymentError {
2775 private:
2776         LDKPaymentError self;
2777 public:
2778         PaymentError(const PaymentError&) = delete;
2779         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
2780         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
2781         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
2782         ~PaymentError() { PaymentError_free(self); }
2783         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
2784         LDKPaymentError* operator &() { return &self; }
2785         LDKPaymentError* operator ->() { return &self; }
2786         const LDKPaymentError* operator &() const { return &self; }
2787         const LDKPaymentError* operator ->() const { return &self; }
2788 };
2789 class ChannelMonitorUpdate {
2790 private:
2791         LDKChannelMonitorUpdate self;
2792 public:
2793         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2794         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2795         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2796         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2797         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2798         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2799         LDKChannelMonitorUpdate* operator &() { return &self; }
2800         LDKChannelMonitorUpdate* operator ->() { return &self; }
2801         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2802         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2803 };
2804 class MonitorEvent {
2805 private:
2806         LDKMonitorEvent self;
2807 public:
2808         MonitorEvent(const MonitorEvent&) = delete;
2809         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2810         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2811         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2812         ~MonitorEvent() { MonitorEvent_free(self); }
2813         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2814         LDKMonitorEvent* operator &() { return &self; }
2815         LDKMonitorEvent* operator ->() { return &self; }
2816         const LDKMonitorEvent* operator &() const { return &self; }
2817         const LDKMonitorEvent* operator ->() const { return &self; }
2818 };
2819 class HTLCUpdate {
2820 private:
2821         LDKHTLCUpdate self;
2822 public:
2823         HTLCUpdate(const HTLCUpdate&) = delete;
2824         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2825         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2826         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2827         ~HTLCUpdate() { HTLCUpdate_free(self); }
2828         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2829         LDKHTLCUpdate* operator &() { return &self; }
2830         LDKHTLCUpdate* operator ->() { return &self; }
2831         const LDKHTLCUpdate* operator &() const { return &self; }
2832         const LDKHTLCUpdate* operator ->() const { return &self; }
2833 };
2834 class Balance {
2835 private:
2836         LDKBalance self;
2837 public:
2838         Balance(const Balance&) = delete;
2839         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2840         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2841         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2842         ~Balance() { Balance_free(self); }
2843         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2844         LDKBalance* operator &() { return &self; }
2845         LDKBalance* operator ->() { return &self; }
2846         const LDKBalance* operator &() const { return &self; }
2847         const LDKBalance* operator ->() const { return &self; }
2848 };
2849 class ChannelMonitor {
2850 private:
2851         LDKChannelMonitor self;
2852 public:
2853         ChannelMonitor(const ChannelMonitor&) = delete;
2854         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2855         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2856         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2857         ~ChannelMonitor() { ChannelMonitor_free(self); }
2858         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2859         LDKChannelMonitor* operator &() { return &self; }
2860         LDKChannelMonitor* operator ->() { return &self; }
2861         const LDKChannelMonitor* operator &() const { return &self; }
2862         const LDKChannelMonitor* operator ->() const { return &self; }
2863 };
2864 class ExpandedKey {
2865 private:
2866         LDKExpandedKey self;
2867 public:
2868         ExpandedKey(const ExpandedKey&) = delete;
2869         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
2870         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
2871         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
2872         ~ExpandedKey() { ExpandedKey_free(self); }
2873         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
2874         LDKExpandedKey* operator &() { return &self; }
2875         LDKExpandedKey* operator ->() { return &self; }
2876         const LDKExpandedKey* operator &() const { return &self; }
2877         const LDKExpandedKey* operator ->() const { return &self; }
2878 };
2879 class CustomMessageHandler {
2880 private:
2881         LDKCustomMessageHandler self;
2882 public:
2883         CustomMessageHandler(const CustomMessageHandler&) = delete;
2884         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2885         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2886         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2887         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2888         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2889         LDKCustomMessageHandler* operator &() { return &self; }
2890         LDKCustomMessageHandler* operator ->() { return &self; }
2891         const LDKCustomMessageHandler* operator &() const { return &self; }
2892         const LDKCustomMessageHandler* operator ->() const { return &self; }
2893         /**
2894          *  Handles the given message sent from `sender_node_id`, possibly producing messages for
2895          *  [`CustomMessageHandler::get_and_clear_pending_msg`] to return and thus for [`PeerManager`]
2896          *  to send.
2897          */
2898         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
2899         /**
2900          *  Returns the list of pending messages that were generated by the handler, clearing the list
2901          *  in the process. Each message is paired with the node id of the intended recipient. If no
2902          *  connection to the node exists, then the message is simply not sent.
2903          */
2904         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
2905 };
2906 class IgnoringMessageHandler {
2907 private:
2908         LDKIgnoringMessageHandler self;
2909 public:
2910         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
2911         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
2912         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
2913         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
2914         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
2915         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
2916         LDKIgnoringMessageHandler* operator &() { return &self; }
2917         LDKIgnoringMessageHandler* operator ->() { return &self; }
2918         const LDKIgnoringMessageHandler* operator &() const { return &self; }
2919         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
2920 };
2921 class ErroringMessageHandler {
2922 private:
2923         LDKErroringMessageHandler self;
2924 public:
2925         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
2926         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
2927         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
2928         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
2929         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
2930         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
2931         LDKErroringMessageHandler* operator &() { return &self; }
2932         LDKErroringMessageHandler* operator ->() { return &self; }
2933         const LDKErroringMessageHandler* operator &() const { return &self; }
2934         const LDKErroringMessageHandler* operator ->() const { return &self; }
2935 };
2936 class MessageHandler {
2937 private:
2938         LDKMessageHandler self;
2939 public:
2940         MessageHandler(const MessageHandler&) = delete;
2941         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
2942         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
2943         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
2944         ~MessageHandler() { MessageHandler_free(self); }
2945         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
2946         LDKMessageHandler* operator &() { return &self; }
2947         LDKMessageHandler* operator ->() { return &self; }
2948         const LDKMessageHandler* operator &() const { return &self; }
2949         const LDKMessageHandler* operator ->() const { return &self; }
2950 };
2951 class SocketDescriptor {
2952 private:
2953         LDKSocketDescriptor self;
2954 public:
2955         SocketDescriptor(const SocketDescriptor&) = delete;
2956         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
2957         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
2958         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
2959         ~SocketDescriptor() { SocketDescriptor_free(self); }
2960         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
2961         LDKSocketDescriptor* operator &() { return &self; }
2962         LDKSocketDescriptor* operator ->() { return &self; }
2963         const LDKSocketDescriptor* operator &() const { return &self; }
2964         const LDKSocketDescriptor* operator ->() const { return &self; }
2965         /**
2966          *  Attempts to send some data from the given slice to the peer.
2967          * 
2968          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
2969          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
2970          *  called and further write attempts may occur until that time.
2971          * 
2972          *  If the returned size is smaller than `data.len()`, a
2973          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
2974          *  written. Additionally, until a `send_data` event completes fully, no further
2975          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
2976          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
2977          *  until then.
2978          * 
2979          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
2980          *  (indicating that read events should be paused to prevent DoS in the send buffer),
2981          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
2982          *  `resume_read` of false carries no meaning, and should not cause any action.
2983          */
2984         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
2985         /**
2986          *  Disconnect the socket pointed to by this SocketDescriptor.
2987          * 
2988          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
2989          *  call (doing so is a noop).
2990          */
2991         inline void disconnect_socket();
2992         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
2993         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
2994         /**
2995          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
2996          * This is used, for example, for inclusion of this object in a hash map.
2997          */
2998         inline uint64_t hash();
2999 };
3000 class PeerHandleError {
3001 private:
3002         LDKPeerHandleError self;
3003 public:
3004         PeerHandleError(const PeerHandleError&) = delete;
3005         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
3006         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
3007         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
3008         ~PeerHandleError() { PeerHandleError_free(self); }
3009         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
3010         LDKPeerHandleError* operator &() { return &self; }
3011         LDKPeerHandleError* operator ->() { return &self; }
3012         const LDKPeerHandleError* operator &() const { return &self; }
3013         const LDKPeerHandleError* operator ->() const { return &self; }
3014 };
3015 class PeerManager {
3016 private:
3017         LDKPeerManager self;
3018 public:
3019         PeerManager(const PeerManager&) = delete;
3020         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
3021         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
3022         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
3023         ~PeerManager() { PeerManager_free(self); }
3024         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
3025         LDKPeerManager* operator &() { return &self; }
3026         LDKPeerManager* operator ->() { return &self; }
3027         const LDKPeerManager* operator &() const { return &self; }
3028         const LDKPeerManager* operator ->() const { return &self; }
3029 };
3030 class UtxoLookupError {
3031 private:
3032         LDKUtxoLookupError self;
3033 public:
3034         UtxoLookupError(const UtxoLookupError&) = delete;
3035         UtxoLookupError(UtxoLookupError&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookupError)); }
3036         UtxoLookupError(LDKUtxoLookupError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookupError)); }
3037         operator LDKUtxoLookupError() && { LDKUtxoLookupError res = self; memset(&self, 0, sizeof(LDKUtxoLookupError)); return res; }
3038         UtxoLookupError& operator=(UtxoLookupError&& o) { self = o.self; memset(&o, 0, sizeof(UtxoLookupError)); return *this; }
3039         LDKUtxoLookupError* operator &() { return &self; }
3040         LDKUtxoLookupError* operator ->() { return &self; }
3041         const LDKUtxoLookupError* operator &() const { return &self; }
3042         const LDKUtxoLookupError* operator ->() const { return &self; }
3043 };
3044 class UtxoResult {
3045 private:
3046         LDKUtxoResult self;
3047 public:
3048         UtxoResult(const UtxoResult&) = delete;
3049         UtxoResult(UtxoResult&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoResult)); }
3050         UtxoResult(LDKUtxoResult&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoResult)); }
3051         operator LDKUtxoResult() && { LDKUtxoResult res = self; memset(&self, 0, sizeof(LDKUtxoResult)); return res; }
3052         ~UtxoResult() { UtxoResult_free(self); }
3053         UtxoResult& operator=(UtxoResult&& o) { UtxoResult_free(self); self = o.self; memset(&o, 0, sizeof(UtxoResult)); return *this; }
3054         LDKUtxoResult* operator &() { return &self; }
3055         LDKUtxoResult* operator ->() { return &self; }
3056         const LDKUtxoResult* operator &() const { return &self; }
3057         const LDKUtxoResult* operator ->() const { return &self; }
3058 };
3059 class UtxoLookup {
3060 private:
3061         LDKUtxoLookup self;
3062 public:
3063         UtxoLookup(const UtxoLookup&) = delete;
3064         UtxoLookup(UtxoLookup&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoLookup)); }
3065         UtxoLookup(LDKUtxoLookup&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoLookup)); }
3066         operator LDKUtxoLookup() && { LDKUtxoLookup res = self; memset(&self, 0, sizeof(LDKUtxoLookup)); return res; }
3067         ~UtxoLookup() { UtxoLookup_free(self); }
3068         UtxoLookup& operator=(UtxoLookup&& o) { UtxoLookup_free(self); self = o.self; memset(&o, 0, sizeof(UtxoLookup)); return *this; }
3069         LDKUtxoLookup* operator &() { return &self; }
3070         LDKUtxoLookup* operator ->() { return &self; }
3071         const LDKUtxoLookup* operator &() const { return &self; }
3072         const LDKUtxoLookup* operator ->() const { return &self; }
3073         /**
3074          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
3075          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
3076          *  is unknown.
3077          * 
3078          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
3079          */
3080         inline LDK::UtxoResult get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
3081 };
3082 class UtxoFuture {
3083 private:
3084         LDKUtxoFuture self;
3085 public:
3086         UtxoFuture(const UtxoFuture&) = delete;
3087         UtxoFuture(UtxoFuture&& o) : self(o.self) { memset(&o, 0, sizeof(UtxoFuture)); }
3088         UtxoFuture(LDKUtxoFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUtxoFuture)); }
3089         operator LDKUtxoFuture() && { LDKUtxoFuture res = self; memset(&self, 0, sizeof(LDKUtxoFuture)); return res; }
3090         ~UtxoFuture() { UtxoFuture_free(self); }
3091         UtxoFuture& operator=(UtxoFuture&& o) { UtxoFuture_free(self); self = o.self; memset(&o, 0, sizeof(UtxoFuture)); return *this; }
3092         LDKUtxoFuture* operator &() { return &self; }
3093         LDKUtxoFuture* operator ->() { return &self; }
3094         const LDKUtxoFuture* operator &() const { return &self; }
3095         const LDKUtxoFuture* operator ->() const { return &self; }
3096 };
3097 class OnionMessenger {
3098 private:
3099         LDKOnionMessenger self;
3100 public:
3101         OnionMessenger(const OnionMessenger&) = delete;
3102         OnionMessenger(OnionMessenger&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessenger)); }
3103         OnionMessenger(LDKOnionMessenger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessenger)); }
3104         operator LDKOnionMessenger() && { LDKOnionMessenger res = self; memset(&self, 0, sizeof(LDKOnionMessenger)); return res; }
3105         ~OnionMessenger() { OnionMessenger_free(self); }
3106         OnionMessenger& operator=(OnionMessenger&& o) { OnionMessenger_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessenger)); return *this; }
3107         LDKOnionMessenger* operator &() { return &self; }
3108         LDKOnionMessenger* operator ->() { return &self; }
3109         const LDKOnionMessenger* operator &() const { return &self; }
3110         const LDKOnionMessenger* operator ->() const { return &self; }
3111 };
3112 class Destination {
3113 private:
3114         LDKDestination self;
3115 public:
3116         Destination(const Destination&) = delete;
3117         Destination(Destination&& o) : self(o.self) { memset(&o, 0, sizeof(Destination)); }
3118         Destination(LDKDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDestination)); }
3119         operator LDKDestination() && { LDKDestination res = self; memset(&self, 0, sizeof(LDKDestination)); return res; }
3120         ~Destination() { Destination_free(self); }
3121         Destination& operator=(Destination&& o) { Destination_free(self); self = o.self; memset(&o, 0, sizeof(Destination)); return *this; }
3122         LDKDestination* operator &() { return &self; }
3123         LDKDestination* operator ->() { return &self; }
3124         const LDKDestination* operator &() const { return &self; }
3125         const LDKDestination* operator ->() const { return &self; }
3126 };
3127 class SendError {
3128 private:
3129         LDKSendError self;
3130 public:
3131         SendError(const SendError&) = delete;
3132         SendError(SendError&& o) : self(o.self) { memset(&o, 0, sizeof(SendError)); }
3133         SendError(LDKSendError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSendError)); }
3134         operator LDKSendError() && { LDKSendError res = self; memset(&self, 0, sizeof(LDKSendError)); return res; }
3135         ~SendError() { SendError_free(self); }
3136         SendError& operator=(SendError&& o) { SendError_free(self); self = o.self; memset(&o, 0, sizeof(SendError)); return *this; }
3137         LDKSendError* operator &() { return &self; }
3138         LDKSendError* operator ->() { return &self; }
3139         const LDKSendError* operator &() const { return &self; }
3140         const LDKSendError* operator ->() const { return &self; }
3141 };
3142 class CustomOnionMessageHandler {
3143 private:
3144         LDKCustomOnionMessageHandler self;
3145 public:
3146         CustomOnionMessageHandler(const CustomOnionMessageHandler&) = delete;
3147         CustomOnionMessageHandler(CustomOnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomOnionMessageHandler)); }
3148         CustomOnionMessageHandler(LDKCustomOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomOnionMessageHandler)); }
3149         operator LDKCustomOnionMessageHandler() && { LDKCustomOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomOnionMessageHandler)); return res; }
3150         ~CustomOnionMessageHandler() { CustomOnionMessageHandler_free(self); }
3151         CustomOnionMessageHandler& operator=(CustomOnionMessageHandler&& o) { CustomOnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomOnionMessageHandler)); return *this; }
3152         LDKCustomOnionMessageHandler* operator &() { return &self; }
3153         LDKCustomOnionMessageHandler* operator ->() { return &self; }
3154         const LDKCustomOnionMessageHandler* operator &() const { return &self; }
3155         const LDKCustomOnionMessageHandler* operator ->() const { return &self; }
3156         /**
3157          *  Called with the custom message that was received.
3158          */
3159         inline void handle_custom_message(struct LDKCustomOnionMessageContents msg);
3160         /**
3161          *  Read a custom message of type `message_type` from `buffer`, returning `Ok(None)` if the
3162          *  message type is unknown.
3163          */
3164         inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ read_custom_message(uint64_t message_type, struct LDKu8slice buffer);
3165 };
3166 class ParseError {
3167 private:
3168         LDKParseError self;
3169 public:
3170         ParseError(const ParseError&) = delete;
3171         ParseError(ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseError)); }
3172         ParseError(LDKParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseError)); }
3173         operator LDKParseError() && { LDKParseError res = self; memset(&self, 0, sizeof(LDKParseError)); return res; }
3174         ~ParseError() { ParseError_free(self); }
3175         ParseError& operator=(ParseError&& o) { ParseError_free(self); self = o.self; memset(&o, 0, sizeof(ParseError)); return *this; }
3176         LDKParseError* operator &() { return &self; }
3177         LDKParseError* operator ->() { return &self; }
3178         const LDKParseError* operator &() const { return &self; }
3179         const LDKParseError* operator ->() const { return &self; }
3180 };
3181 class ParseOrSemanticError {
3182 private:
3183         LDKParseOrSemanticError self;
3184 public:
3185         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
3186         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
3187         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
3188         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
3189         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
3190         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
3191         LDKParseOrSemanticError* operator &() { return &self; }
3192         LDKParseOrSemanticError* operator ->() { return &self; }
3193         const LDKParseOrSemanticError* operator &() const { return &self; }
3194         const LDKParseOrSemanticError* operator ->() const { return &self; }
3195 };
3196 class Invoice {
3197 private:
3198         LDKInvoice self;
3199 public:
3200         Invoice(const Invoice&) = delete;
3201         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
3202         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
3203         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
3204         ~Invoice() { Invoice_free(self); }
3205         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
3206         LDKInvoice* operator &() { return &self; }
3207         LDKInvoice* operator ->() { return &self; }
3208         const LDKInvoice* operator &() const { return &self; }
3209         const LDKInvoice* operator ->() const { return &self; }
3210 };
3211 class SignedRawInvoice {
3212 private:
3213         LDKSignedRawInvoice self;
3214 public:
3215         SignedRawInvoice(const SignedRawInvoice&) = delete;
3216         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
3217         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
3218         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
3219         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
3220         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
3221         LDKSignedRawInvoice* operator &() { return &self; }
3222         LDKSignedRawInvoice* operator ->() { return &self; }
3223         const LDKSignedRawInvoice* operator &() const { return &self; }
3224         const LDKSignedRawInvoice* operator ->() const { return &self; }
3225 };
3226 class RawInvoice {
3227 private:
3228         LDKRawInvoice self;
3229 public:
3230         RawInvoice(const RawInvoice&) = delete;
3231         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
3232         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
3233         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
3234         ~RawInvoice() { RawInvoice_free(self); }
3235         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
3236         LDKRawInvoice* operator &() { return &self; }
3237         LDKRawInvoice* operator ->() { return &self; }
3238         const LDKRawInvoice* operator &() const { return &self; }
3239         const LDKRawInvoice* operator ->() const { return &self; }
3240 };
3241 class RawDataPart {
3242 private:
3243         LDKRawDataPart self;
3244 public:
3245         RawDataPart(const RawDataPart&) = delete;
3246         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
3247         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
3248         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
3249         ~RawDataPart() { RawDataPart_free(self); }
3250         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
3251         LDKRawDataPart* operator &() { return &self; }
3252         LDKRawDataPart* operator ->() { return &self; }
3253         const LDKRawDataPart* operator &() const { return &self; }
3254         const LDKRawDataPart* operator ->() const { return &self; }
3255 };
3256 class PositiveTimestamp {
3257 private:
3258         LDKPositiveTimestamp self;
3259 public:
3260         PositiveTimestamp(const PositiveTimestamp&) = delete;
3261         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
3262         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
3263         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
3264         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
3265         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
3266         LDKPositiveTimestamp* operator &() { return &self; }
3267         LDKPositiveTimestamp* operator ->() { return &self; }
3268         const LDKPositiveTimestamp* operator &() const { return &self; }
3269         const LDKPositiveTimestamp* operator ->() const { return &self; }
3270 };
3271 class SiPrefix {
3272 private:
3273         LDKSiPrefix self;
3274 public:
3275         SiPrefix(const SiPrefix&) = delete;
3276         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
3277         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
3278         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
3279         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
3280         LDKSiPrefix* operator &() { return &self; }
3281         LDKSiPrefix* operator ->() { return &self; }
3282         const LDKSiPrefix* operator &() const { return &self; }
3283         const LDKSiPrefix* operator ->() const { return &self; }
3284 };
3285 class Currency {
3286 private:
3287         LDKCurrency self;
3288 public:
3289         Currency(const Currency&) = delete;
3290         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
3291         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
3292         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
3293         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
3294         LDKCurrency* operator &() { return &self; }
3295         LDKCurrency* operator ->() { return &self; }
3296         const LDKCurrency* operator &() const { return &self; }
3297         const LDKCurrency* operator ->() const { return &self; }
3298 };
3299 class Sha256 {
3300 private:
3301         LDKSha256 self;
3302 public:
3303         Sha256(const Sha256&) = delete;
3304         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
3305         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
3306         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
3307         ~Sha256() { Sha256_free(self); }
3308         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
3309         LDKSha256* operator &() { return &self; }
3310         LDKSha256* operator ->() { return &self; }
3311         const LDKSha256* operator &() const { return &self; }
3312         const LDKSha256* operator ->() const { return &self; }
3313 };
3314 class Description {
3315 private:
3316         LDKDescription self;
3317 public:
3318         Description(const Description&) = delete;
3319         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
3320         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
3321         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
3322         ~Description() { Description_free(self); }
3323         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
3324         LDKDescription* operator &() { return &self; }
3325         LDKDescription* operator ->() { return &self; }
3326         const LDKDescription* operator &() const { return &self; }
3327         const LDKDescription* operator ->() const { return &self; }
3328 };
3329 class PayeePubKey {
3330 private:
3331         LDKPayeePubKey self;
3332 public:
3333         PayeePubKey(const PayeePubKey&) = delete;
3334         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
3335         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
3336         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
3337         ~PayeePubKey() { PayeePubKey_free(self); }
3338         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
3339         LDKPayeePubKey* operator &() { return &self; }
3340         LDKPayeePubKey* operator ->() { return &self; }
3341         const LDKPayeePubKey* operator &() const { return &self; }
3342         const LDKPayeePubKey* operator ->() const { return &self; }
3343 };
3344 class ExpiryTime {
3345 private:
3346         LDKExpiryTime self;
3347 public:
3348         ExpiryTime(const ExpiryTime&) = delete;
3349         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
3350         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
3351         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
3352         ~ExpiryTime() { ExpiryTime_free(self); }
3353         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
3354         LDKExpiryTime* operator &() { return &self; }
3355         LDKExpiryTime* operator ->() { return &self; }
3356         const LDKExpiryTime* operator &() const { return &self; }
3357         const LDKExpiryTime* operator ->() const { return &self; }
3358 };
3359 class MinFinalCltvExpiryDelta {
3360 private:
3361         LDKMinFinalCltvExpiryDelta self;
3362 public:
3363         MinFinalCltvExpiryDelta(const MinFinalCltvExpiryDelta&) = delete;
3364         MinFinalCltvExpiryDelta(MinFinalCltvExpiryDelta&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); }
3365         MinFinalCltvExpiryDelta(LDKMinFinalCltvExpiryDelta&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); }
3366         operator LDKMinFinalCltvExpiryDelta() && { LDKMinFinalCltvExpiryDelta res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiryDelta)); return res; }
3367         ~MinFinalCltvExpiryDelta() { MinFinalCltvExpiryDelta_free(self); }
3368         MinFinalCltvExpiryDelta& operator=(MinFinalCltvExpiryDelta&& o) { MinFinalCltvExpiryDelta_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiryDelta)); return *this; }
3369         LDKMinFinalCltvExpiryDelta* operator &() { return &self; }
3370         LDKMinFinalCltvExpiryDelta* operator ->() { return &self; }
3371         const LDKMinFinalCltvExpiryDelta* operator &() const { return &self; }
3372         const LDKMinFinalCltvExpiryDelta* operator ->() const { return &self; }
3373 };
3374 class Fallback {
3375 private:
3376         LDKFallback self;
3377 public:
3378         Fallback(const Fallback&) = delete;
3379         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
3380         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
3381         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
3382         ~Fallback() { Fallback_free(self); }
3383         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
3384         LDKFallback* operator &() { return &self; }
3385         LDKFallback* operator ->() { return &self; }
3386         const LDKFallback* operator &() const { return &self; }
3387         const LDKFallback* operator ->() const { return &self; }
3388 };
3389 class InvoiceSignature {
3390 private:
3391         LDKInvoiceSignature self;
3392 public:
3393         InvoiceSignature(const InvoiceSignature&) = delete;
3394         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
3395         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
3396         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
3397         ~InvoiceSignature() { InvoiceSignature_free(self); }
3398         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
3399         LDKInvoiceSignature* operator &() { return &self; }
3400         LDKInvoiceSignature* operator ->() { return &self; }
3401         const LDKInvoiceSignature* operator &() const { return &self; }
3402         const LDKInvoiceSignature* operator ->() const { return &self; }
3403 };
3404 class PrivateRoute {
3405 private:
3406         LDKPrivateRoute self;
3407 public:
3408         PrivateRoute(const PrivateRoute&) = delete;
3409         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
3410         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
3411         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
3412         ~PrivateRoute() { PrivateRoute_free(self); }
3413         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
3414         LDKPrivateRoute* operator &() { return &self; }
3415         LDKPrivateRoute* operator ->() { return &self; }
3416         const LDKPrivateRoute* operator &() const { return &self; }
3417         const LDKPrivateRoute* operator ->() const { return &self; }
3418 };
3419 class CreationError {
3420 private:
3421         LDKCreationError self;
3422 public:
3423         CreationError(const CreationError&) = delete;
3424         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
3425         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
3426         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
3427         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
3428         LDKCreationError* operator &() { return &self; }
3429         LDKCreationError* operator ->() { return &self; }
3430         const LDKCreationError* operator &() const { return &self; }
3431         const LDKCreationError* operator ->() const { return &self; }
3432 };
3433 class SemanticError {
3434 private:
3435         LDKSemanticError self;
3436 public:
3437         SemanticError(const SemanticError&) = delete;
3438         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
3439         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
3440         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
3441         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
3442         LDKSemanticError* operator &() { return &self; }
3443         LDKSemanticError* operator ->() { return &self; }
3444         const LDKSemanticError* operator &() const { return &self; }
3445         const LDKSemanticError* operator ->() const { return &self; }
3446 };
3447 class SignOrCreationError {
3448 private:
3449         LDKSignOrCreationError self;
3450 public:
3451         SignOrCreationError(const SignOrCreationError&) = delete;
3452         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
3453         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
3454         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
3455         ~SignOrCreationError() { SignOrCreationError_free(self); }
3456         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
3457         LDKSignOrCreationError* operator &() { return &self; }
3458         LDKSignOrCreationError* operator ->() { return &self; }
3459         const LDKSignOrCreationError* operator &() const { return &self; }
3460         const LDKSignOrCreationError* operator ->() const { return &self; }
3461 };
3462 class RapidGossipSync {
3463 private:
3464         LDKRapidGossipSync self;
3465 public:
3466         RapidGossipSync(const RapidGossipSync&) = delete;
3467         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
3468         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
3469         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
3470         ~RapidGossipSync() { RapidGossipSync_free(self); }
3471         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
3472         LDKRapidGossipSync* operator &() { return &self; }
3473         LDKRapidGossipSync* operator ->() { return &self; }
3474         const LDKRapidGossipSync* operator &() const { return &self; }
3475         const LDKRapidGossipSync* operator ->() const { return &self; }
3476 };
3477 class Persister {
3478 private:
3479         LDKPersister self;
3480 public:
3481         Persister(const Persister&) = delete;
3482         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
3483         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
3484         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
3485         ~Persister() { Persister_free(self); }
3486         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
3487         LDKPersister* operator &() { return &self; }
3488         LDKPersister* operator ->() { return &self; }
3489         const LDKPersister* operator &() const { return &self; }
3490         const LDKPersister* operator ->() const { return &self; }
3491         /**
3492          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
3493          */
3494         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
3495         /**
3496          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
3497          */
3498         inline LDK::CResult_NoneErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
3499         /**
3500          *  Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
3501          */
3502         inline LDK::CResult_NoneErrorZ persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer);
3503 };
3504 class DecodeError {
3505 private:
3506         LDKDecodeError self;
3507 public:
3508         DecodeError(const DecodeError&) = delete;
3509         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
3510         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
3511         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
3512         ~DecodeError() { DecodeError_free(self); }
3513         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
3514         LDKDecodeError* operator &() { return &self; }
3515         LDKDecodeError* operator ->() { return &self; }
3516         const LDKDecodeError* operator &() const { return &self; }
3517         const LDKDecodeError* operator ->() const { return &self; }
3518 };
3519 class Init {
3520 private:
3521         LDKInit self;
3522 public:
3523         Init(const Init&) = delete;
3524         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
3525         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
3526         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
3527         ~Init() { Init_free(self); }
3528         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
3529         LDKInit* operator &() { return &self; }
3530         LDKInit* operator ->() { return &self; }
3531         const LDKInit* operator &() const { return &self; }
3532         const LDKInit* operator ->() const { return &self; }
3533 };
3534 class ErrorMessage {
3535 private:
3536         LDKErrorMessage self;
3537 public:
3538         ErrorMessage(const ErrorMessage&) = delete;
3539         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
3540         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
3541         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
3542         ~ErrorMessage() { ErrorMessage_free(self); }
3543         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
3544         LDKErrorMessage* operator &() { return &self; }
3545         LDKErrorMessage* operator ->() { return &self; }
3546         const LDKErrorMessage* operator &() const { return &self; }
3547         const LDKErrorMessage* operator ->() const { return &self; }
3548 };
3549 class WarningMessage {
3550 private:
3551         LDKWarningMessage self;
3552 public:
3553         WarningMessage(const WarningMessage&) = delete;
3554         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3555         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3556         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3557         ~WarningMessage() { WarningMessage_free(self); }
3558         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3559         LDKWarningMessage* operator &() { return &self; }
3560         LDKWarningMessage* operator ->() { return &self; }
3561         const LDKWarningMessage* operator &() const { return &self; }
3562         const LDKWarningMessage* operator ->() const { return &self; }
3563 };
3564 class Ping {
3565 private:
3566         LDKPing self;
3567 public:
3568         Ping(const Ping&) = delete;
3569         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3570         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3571         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3572         ~Ping() { Ping_free(self); }
3573         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3574         LDKPing* operator &() { return &self; }
3575         LDKPing* operator ->() { return &self; }
3576         const LDKPing* operator &() const { return &self; }
3577         const LDKPing* operator ->() const { return &self; }
3578 };
3579 class Pong {
3580 private:
3581         LDKPong self;
3582 public:
3583         Pong(const Pong&) = delete;
3584         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3585         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3586         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3587         ~Pong() { Pong_free(self); }
3588         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3589         LDKPong* operator &() { return &self; }
3590         LDKPong* operator ->() { return &self; }
3591         const LDKPong* operator &() const { return &self; }
3592         const LDKPong* operator ->() const { return &self; }
3593 };
3594 class OpenChannel {
3595 private:
3596         LDKOpenChannel self;
3597 public:
3598         OpenChannel(const OpenChannel&) = delete;
3599         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3600         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3601         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3602         ~OpenChannel() { OpenChannel_free(self); }
3603         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3604         LDKOpenChannel* operator &() { return &self; }
3605         LDKOpenChannel* operator ->() { return &self; }
3606         const LDKOpenChannel* operator &() const { return &self; }
3607         const LDKOpenChannel* operator ->() const { return &self; }
3608 };
3609 class AcceptChannel {
3610 private:
3611         LDKAcceptChannel self;
3612 public:
3613         AcceptChannel(const AcceptChannel&) = delete;
3614         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
3615         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
3616         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
3617         ~AcceptChannel() { AcceptChannel_free(self); }
3618         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
3619         LDKAcceptChannel* operator &() { return &self; }
3620         LDKAcceptChannel* operator ->() { return &self; }
3621         const LDKAcceptChannel* operator &() const { return &self; }
3622         const LDKAcceptChannel* operator ->() const { return &self; }
3623 };
3624 class FundingCreated {
3625 private:
3626         LDKFundingCreated self;
3627 public:
3628         FundingCreated(const FundingCreated&) = delete;
3629         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
3630         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
3631         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
3632         ~FundingCreated() { FundingCreated_free(self); }
3633         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
3634         LDKFundingCreated* operator &() { return &self; }
3635         LDKFundingCreated* operator ->() { return &self; }
3636         const LDKFundingCreated* operator &() const { return &self; }
3637         const LDKFundingCreated* operator ->() const { return &self; }
3638 };
3639 class FundingSigned {
3640 private:
3641         LDKFundingSigned self;
3642 public:
3643         FundingSigned(const FundingSigned&) = delete;
3644         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
3645         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
3646         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
3647         ~FundingSigned() { FundingSigned_free(self); }
3648         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
3649         LDKFundingSigned* operator &() { return &self; }
3650         LDKFundingSigned* operator ->() { return &self; }
3651         const LDKFundingSigned* operator &() const { return &self; }
3652         const LDKFundingSigned* operator ->() const { return &self; }
3653 };
3654 class ChannelReady {
3655 private:
3656         LDKChannelReady self;
3657 public:
3658         ChannelReady(const ChannelReady&) = delete;
3659         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
3660         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
3661         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
3662         ~ChannelReady() { ChannelReady_free(self); }
3663         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
3664         LDKChannelReady* operator &() { return &self; }
3665         LDKChannelReady* operator ->() { return &self; }
3666         const LDKChannelReady* operator &() const { return &self; }
3667         const LDKChannelReady* operator ->() const { return &self; }
3668 };
3669 class Shutdown {
3670 private:
3671         LDKShutdown self;
3672 public:
3673         Shutdown(const Shutdown&) = delete;
3674         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
3675         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
3676         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
3677         ~Shutdown() { Shutdown_free(self); }
3678         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
3679         LDKShutdown* operator &() { return &self; }
3680         LDKShutdown* operator ->() { return &self; }
3681         const LDKShutdown* operator &() const { return &self; }
3682         const LDKShutdown* operator ->() const { return &self; }
3683 };
3684 class ClosingSignedFeeRange {
3685 private:
3686         LDKClosingSignedFeeRange self;
3687 public:
3688         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3689         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3690         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3691         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3692         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3693         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3694         LDKClosingSignedFeeRange* operator &() { return &self; }
3695         LDKClosingSignedFeeRange* operator ->() { return &self; }
3696         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3697         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3698 };
3699 class ClosingSigned {
3700 private:
3701         LDKClosingSigned self;
3702 public:
3703         ClosingSigned(const ClosingSigned&) = delete;
3704         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3705         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3706         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3707         ~ClosingSigned() { ClosingSigned_free(self); }
3708         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3709         LDKClosingSigned* operator &() { return &self; }
3710         LDKClosingSigned* operator ->() { return &self; }
3711         const LDKClosingSigned* operator &() const { return &self; }
3712         const LDKClosingSigned* operator ->() const { return &self; }
3713 };
3714 class UpdateAddHTLC {
3715 private:
3716         LDKUpdateAddHTLC self;
3717 public:
3718         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3719         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3720         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3721         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3722         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3723         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3724         LDKUpdateAddHTLC* operator &() { return &self; }
3725         LDKUpdateAddHTLC* operator ->() { return &self; }
3726         const LDKUpdateAddHTLC* operator &() const { return &self; }
3727         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3728 };
3729 class OnionMessage {
3730 private:
3731         LDKOnionMessage self;
3732 public:
3733         OnionMessage(const OnionMessage&) = delete;
3734         OnionMessage(OnionMessage&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessage)); }
3735         OnionMessage(LDKOnionMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessage)); }
3736         operator LDKOnionMessage() && { LDKOnionMessage res = self; memset(&self, 0, sizeof(LDKOnionMessage)); return res; }
3737         ~OnionMessage() { OnionMessage_free(self); }
3738         OnionMessage& operator=(OnionMessage&& o) { OnionMessage_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessage)); return *this; }
3739         LDKOnionMessage* operator &() { return &self; }
3740         LDKOnionMessage* operator ->() { return &self; }
3741         const LDKOnionMessage* operator &() const { return &self; }
3742         const LDKOnionMessage* operator ->() const { return &self; }
3743 };
3744 class UpdateFulfillHTLC {
3745 private:
3746         LDKUpdateFulfillHTLC self;
3747 public:
3748         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3749         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3750         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3751         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3752         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3753         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3754         LDKUpdateFulfillHTLC* operator &() { return &self; }
3755         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3756         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3757         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3758 };
3759 class UpdateFailHTLC {
3760 private:
3761         LDKUpdateFailHTLC self;
3762 public:
3763         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3764         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3765         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3766         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3767         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3768         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3769         LDKUpdateFailHTLC* operator &() { return &self; }
3770         LDKUpdateFailHTLC* operator ->() { return &self; }
3771         const LDKUpdateFailHTLC* operator &() const { return &self; }
3772         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3773 };
3774 class UpdateFailMalformedHTLC {
3775 private:
3776         LDKUpdateFailMalformedHTLC self;
3777 public:
3778         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3779         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3780         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3781         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3782         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3783         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3784         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3785         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3786         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3787         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3788 };
3789 class CommitmentSigned {
3790 private:
3791         LDKCommitmentSigned self;
3792 public:
3793         CommitmentSigned(const CommitmentSigned&) = delete;
3794         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3795         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3796         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3797         ~CommitmentSigned() { CommitmentSigned_free(self); }
3798         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3799         LDKCommitmentSigned* operator &() { return &self; }
3800         LDKCommitmentSigned* operator ->() { return &self; }
3801         const LDKCommitmentSigned* operator &() const { return &self; }
3802         const LDKCommitmentSigned* operator ->() const { return &self; }
3803 };
3804 class RevokeAndACK {
3805 private:
3806         LDKRevokeAndACK self;
3807 public:
3808         RevokeAndACK(const RevokeAndACK&) = delete;
3809         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
3810         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
3811         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
3812         ~RevokeAndACK() { RevokeAndACK_free(self); }
3813         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
3814         LDKRevokeAndACK* operator &() { return &self; }
3815         LDKRevokeAndACK* operator ->() { return &self; }
3816         const LDKRevokeAndACK* operator &() const { return &self; }
3817         const LDKRevokeAndACK* operator ->() const { return &self; }
3818 };
3819 class UpdateFee {
3820 private:
3821         LDKUpdateFee self;
3822 public:
3823         UpdateFee(const UpdateFee&) = delete;
3824         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
3825         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
3826         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
3827         ~UpdateFee() { UpdateFee_free(self); }
3828         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
3829         LDKUpdateFee* operator &() { return &self; }
3830         LDKUpdateFee* operator ->() { return &self; }
3831         const LDKUpdateFee* operator &() const { return &self; }
3832         const LDKUpdateFee* operator ->() const { return &self; }
3833 };
3834 class DataLossProtect {
3835 private:
3836         LDKDataLossProtect self;
3837 public:
3838         DataLossProtect(const DataLossProtect&) = delete;
3839         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
3840         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
3841         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
3842         ~DataLossProtect() { DataLossProtect_free(self); }
3843         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
3844         LDKDataLossProtect* operator &() { return &self; }
3845         LDKDataLossProtect* operator ->() { return &self; }
3846         const LDKDataLossProtect* operator &() const { return &self; }
3847         const LDKDataLossProtect* operator ->() const { return &self; }
3848 };
3849 class ChannelReestablish {
3850 private:
3851         LDKChannelReestablish self;
3852 public:
3853         ChannelReestablish(const ChannelReestablish&) = delete;
3854         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
3855         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
3856         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
3857         ~ChannelReestablish() { ChannelReestablish_free(self); }
3858         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
3859         LDKChannelReestablish* operator &() { return &self; }
3860         LDKChannelReestablish* operator ->() { return &self; }
3861         const LDKChannelReestablish* operator &() const { return &self; }
3862         const LDKChannelReestablish* operator ->() const { return &self; }
3863 };
3864 class AnnouncementSignatures {
3865 private:
3866         LDKAnnouncementSignatures self;
3867 public:
3868         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
3869         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
3870         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
3871         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
3872         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
3873         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
3874         LDKAnnouncementSignatures* operator &() { return &self; }
3875         LDKAnnouncementSignatures* operator ->() { return &self; }
3876         const LDKAnnouncementSignatures* operator &() const { return &self; }
3877         const LDKAnnouncementSignatures* operator ->() const { return &self; }
3878 };
3879 class NetAddress {
3880 private:
3881         LDKNetAddress self;
3882 public:
3883         NetAddress(const NetAddress&) = delete;
3884         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
3885         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
3886         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
3887         ~NetAddress() { NetAddress_free(self); }
3888         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
3889         LDKNetAddress* operator &() { return &self; }
3890         LDKNetAddress* operator ->() { return &self; }
3891         const LDKNetAddress* operator &() const { return &self; }
3892         const LDKNetAddress* operator ->() const { return &self; }
3893 };
3894 class UnsignedGossipMessage {
3895 private:
3896         LDKUnsignedGossipMessage self;
3897 public:
3898         UnsignedGossipMessage(const UnsignedGossipMessage&) = delete;
3899         UnsignedGossipMessage(UnsignedGossipMessage&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedGossipMessage)); }
3900         UnsignedGossipMessage(LDKUnsignedGossipMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedGossipMessage)); }
3901         operator LDKUnsignedGossipMessage() && { LDKUnsignedGossipMessage res = self; memset(&self, 0, sizeof(LDKUnsignedGossipMessage)); return res; }
3902         ~UnsignedGossipMessage() { UnsignedGossipMessage_free(self); }
3903         UnsignedGossipMessage& operator=(UnsignedGossipMessage&& o) { UnsignedGossipMessage_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedGossipMessage)); return *this; }
3904         LDKUnsignedGossipMessage* operator &() { return &self; }
3905         LDKUnsignedGossipMessage* operator ->() { return &self; }
3906         const LDKUnsignedGossipMessage* operator &() const { return &self; }
3907         const LDKUnsignedGossipMessage* operator ->() const { return &self; }
3908 };
3909 class UnsignedNodeAnnouncement {
3910 private:
3911         LDKUnsignedNodeAnnouncement self;
3912 public:
3913         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
3914         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
3915         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
3916         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
3917         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
3918         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
3919         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
3920         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
3921         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
3922         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
3923 };
3924 class NodeAnnouncement {
3925 private:
3926         LDKNodeAnnouncement self;
3927 public:
3928         NodeAnnouncement(const NodeAnnouncement&) = delete;
3929         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
3930         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
3931         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
3932         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
3933         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
3934         LDKNodeAnnouncement* operator &() { return &self; }
3935         LDKNodeAnnouncement* operator ->() { return &self; }
3936         const LDKNodeAnnouncement* operator &() const { return &self; }
3937         const LDKNodeAnnouncement* operator ->() const { return &self; }
3938 };
3939 class UnsignedChannelAnnouncement {
3940 private:
3941         LDKUnsignedChannelAnnouncement self;
3942 public:
3943         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
3944         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
3945         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
3946         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
3947         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
3948         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
3949         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
3950         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
3951         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
3952         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
3953 };
3954 class ChannelAnnouncement {
3955 private:
3956         LDKChannelAnnouncement self;
3957 public:
3958         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
3959         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
3960         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
3961         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
3962         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
3963         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
3964         LDKChannelAnnouncement* operator &() { return &self; }
3965         LDKChannelAnnouncement* operator ->() { return &self; }
3966         const LDKChannelAnnouncement* operator &() const { return &self; }
3967         const LDKChannelAnnouncement* operator ->() const { return &self; }
3968 };
3969 class UnsignedChannelUpdate {
3970 private:
3971         LDKUnsignedChannelUpdate self;
3972 public:
3973         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
3974         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
3975         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
3976         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
3977         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
3978         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
3979         LDKUnsignedChannelUpdate* operator &() { return &self; }
3980         LDKUnsignedChannelUpdate* operator ->() { return &self; }
3981         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
3982         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
3983 };
3984 class ChannelUpdate {
3985 private:
3986         LDKChannelUpdate self;
3987 public:
3988         ChannelUpdate(const ChannelUpdate&) = delete;
3989         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
3990         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
3991         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
3992         ~ChannelUpdate() { ChannelUpdate_free(self); }
3993         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
3994         LDKChannelUpdate* operator &() { return &self; }
3995         LDKChannelUpdate* operator ->() { return &self; }
3996         const LDKChannelUpdate* operator &() const { return &self; }
3997         const LDKChannelUpdate* operator ->() const { return &self; }
3998 };
3999 class QueryChannelRange {
4000 private:
4001         LDKQueryChannelRange self;
4002 public:
4003         QueryChannelRange(const QueryChannelRange&) = delete;
4004         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
4005         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
4006         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
4007         ~QueryChannelRange() { QueryChannelRange_free(self); }
4008         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
4009         LDKQueryChannelRange* operator &() { return &self; }
4010         LDKQueryChannelRange* operator ->() { return &self; }
4011         const LDKQueryChannelRange* operator &() const { return &self; }
4012         const LDKQueryChannelRange* operator ->() const { return &self; }
4013 };
4014 class ReplyChannelRange {
4015 private:
4016         LDKReplyChannelRange self;
4017 public:
4018         ReplyChannelRange(const ReplyChannelRange&) = delete;
4019         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
4020         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
4021         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
4022         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
4023         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
4024         LDKReplyChannelRange* operator &() { return &self; }
4025         LDKReplyChannelRange* operator ->() { return &self; }
4026         const LDKReplyChannelRange* operator &() const { return &self; }
4027         const LDKReplyChannelRange* operator ->() const { return &self; }
4028 };
4029 class QueryShortChannelIds {
4030 private:
4031         LDKQueryShortChannelIds self;
4032 public:
4033         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
4034         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
4035         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
4036         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
4037         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
4038         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
4039         LDKQueryShortChannelIds* operator &() { return &self; }
4040         LDKQueryShortChannelIds* operator ->() { return &self; }
4041         const LDKQueryShortChannelIds* operator &() const { return &self; }
4042         const LDKQueryShortChannelIds* operator ->() const { return &self; }
4043 };
4044 class ReplyShortChannelIdsEnd {
4045 private:
4046         LDKReplyShortChannelIdsEnd self;
4047 public:
4048         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
4049         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
4050         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
4051         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
4052         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
4053         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
4054         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
4055         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
4056         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
4057         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
4058 };
4059 class GossipTimestampFilter {
4060 private:
4061         LDKGossipTimestampFilter self;
4062 public:
4063         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
4064         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
4065         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
4066         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
4067         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
4068         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
4069         LDKGossipTimestampFilter* operator &() { return &self; }
4070         LDKGossipTimestampFilter* operator ->() { return &self; }
4071         const LDKGossipTimestampFilter* operator &() const { return &self; }
4072         const LDKGossipTimestampFilter* operator ->() const { return &self; }
4073 };
4074 class ErrorAction {
4075 private:
4076         LDKErrorAction self;
4077 public:
4078         ErrorAction(const ErrorAction&) = delete;
4079         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
4080         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
4081         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
4082         ~ErrorAction() { ErrorAction_free(self); }
4083         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
4084         LDKErrorAction* operator &() { return &self; }
4085         LDKErrorAction* operator ->() { return &self; }
4086         const LDKErrorAction* operator &() const { return &self; }
4087         const LDKErrorAction* operator ->() const { return &self; }
4088 };
4089 class LightningError {
4090 private:
4091         LDKLightningError self;
4092 public:
4093         LightningError(const LightningError&) = delete;
4094         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
4095         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
4096         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
4097         ~LightningError() { LightningError_free(self); }
4098         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
4099         LDKLightningError* operator &() { return &self; }
4100         LDKLightningError* operator ->() { return &self; }
4101         const LDKLightningError* operator &() const { return &self; }
4102         const LDKLightningError* operator ->() const { return &self; }
4103 };
4104 class CommitmentUpdate {
4105 private:
4106         LDKCommitmentUpdate self;
4107 public:
4108         CommitmentUpdate(const CommitmentUpdate&) = delete;
4109         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
4110         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
4111         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
4112         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
4113         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
4114         LDKCommitmentUpdate* operator &() { return &self; }
4115         LDKCommitmentUpdate* operator ->() { return &self; }
4116         const LDKCommitmentUpdate* operator &() const { return &self; }
4117         const LDKCommitmentUpdate* operator ->() const { return &self; }
4118 };
4119 class ChannelMessageHandler {
4120 private:
4121         LDKChannelMessageHandler self;
4122 public:
4123         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
4124         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
4125         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
4126         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
4127         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
4128         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
4129         LDKChannelMessageHandler* operator &() { return &self; }
4130         LDKChannelMessageHandler* operator ->() { return &self; }
4131         const LDKChannelMessageHandler* operator &() const { return &self; }
4132         const LDKChannelMessageHandler* operator ->() const { return &self; }
4133         /**
4134          *  Handle an incoming `open_channel` message from the given peer.
4135          */
4136         inline void handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg);
4137         /**
4138          *  Handle an incoming `accept_channel` message from the given peer.
4139          */
4140         inline void handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg);
4141         /**
4142          *  Handle an incoming `funding_created` message from the given peer.
4143          */
4144         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
4145         /**
4146          *  Handle an incoming `funding_signed` message from the given peer.
4147          */
4148         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
4149         /**
4150          *  Handle an incoming `channel_ready` message from the given peer.
4151          */
4152         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
4153         /**
4154          *  Handle an incoming `shutdown` message from the given peer.
4155          */
4156         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg);
4157         /**
4158          *  Handle an incoming `closing_signed` message from the given peer.
4159          */
4160         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
4161         /**
4162          *  Handle an incoming `update_add_htlc` message from the given peer.
4163          */
4164         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
4165         /**
4166          *  Handle an incoming `update_fulfill_htlc` message from the given peer.
4167          */
4168         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
4169         /**
4170          *  Handle an incoming `update_fail_htlc` message from the given peer.
4171          */
4172         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
4173         /**
4174          *  Handle an incoming `update_fail_malformed_htlc` message from the given peer.
4175          */
4176         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
4177         /**
4178          *  Handle an incoming `commitment_signed` message from the given peer.
4179          */
4180         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
4181         /**
4182          *  Handle an incoming `revoke_and_ack` message from the given peer.
4183          */
4184         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
4185         /**
4186          *  Handle an incoming `update_fee` message from the given peer.
4187          */
4188         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
4189         /**
4190          *  Handle an incoming `announcement_signatures` message from the given peer.
4191          */
4192         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
4193         /**
4194          *  Indicates a connection to the peer failed/an existing connection was lost.
4195          */
4196         inline void peer_disconnected(struct LDKPublicKey their_node_id);
4197         /**
4198          *  Handle a peer reconnecting, possibly generating `channel_reestablish` message(s).
4199          * 
4200          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4201          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4202          *  message handlers may still wish to communicate with this peer.
4203          */
4204         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound);
4205         /**
4206          *  Handle an incoming `channel_reestablish` message from the given peer.
4207          */
4208         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
4209         /**
4210          *  Handle an incoming `channel_update` message from the given peer.
4211          */
4212         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
4213         /**
4214          *  Handle an incoming `error` message from the given peer.
4215          */
4216         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
4217         /**
4218          *  Gets the node feature flags which this handler itself supports. All available handlers are
4219          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4220          *  which are broadcasted in our [`NodeAnnouncement`] message.
4221          */
4222         inline LDK::NodeFeatures provided_node_features();
4223         /**
4224          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4225          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4226          *  which are sent in our [`Init`] message.
4227          * 
4228          *  Note that this method is called before [`Self::peer_connected`].
4229          */
4230         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4231 };
4232 class RoutingMessageHandler {
4233 private:
4234         LDKRoutingMessageHandler self;
4235 public:
4236         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
4237         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
4238         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
4239         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
4240         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
4241         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
4242         LDKRoutingMessageHandler* operator &() { return &self; }
4243         LDKRoutingMessageHandler* operator ->() { return &self; }
4244         const LDKRoutingMessageHandler* operator &() const { return &self; }
4245         const LDKRoutingMessageHandler* operator ->() const { return &self; }
4246         /**
4247          *  Handle an incoming `node_announcement` message, returning `true` if it should be forwarded on,
4248          *  `false` or returning an `Err` otherwise.
4249          */
4250         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
4251         /**
4252          *  Handle a `channel_announcement` message, returning `true` if it should be forwarded on, `false`
4253          *  or returning an `Err` otherwise.
4254          */
4255         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
4256         /**
4257          *  Handle an incoming `channel_update` message, returning true if it should be forwarded on,
4258          *  `false` or returning an `Err` otherwise.
4259          */
4260         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
4261         /**
4262          *  Gets channel announcements and updates required to dump our routing table to a remote node,
4263          *  starting at the `short_channel_id` indicated by `starting_point` and including announcements
4264          *  for a single channel.
4265          */
4266         inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcement(uint64_t starting_point);
4267         /**
4268          *  Gets a node announcement required to dump our routing table to a remote node, starting at
4269          *  the node *after* the provided pubkey and including up to one announcement immediately
4270          *  higher (as defined by `<PublicKey as Ord>::cmp`) than `starting_point`.
4271          *  If `None` is provided for `starting_point`, we start at the first node.
4272          * 
4273          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
4274          *  Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
4275          */
4276         inline LDK::NodeAnnouncement get_next_node_announcement(struct LDKNodeId starting_point);
4277         /**
4278          *  Called when a connection is established with a peer. This can be used to
4279          *  perform routing table synchronization using a strategy defined by the
4280          *  implementor.
4281          * 
4282          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4283          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4284          *  message handlers may still wish to communicate with this peer.
4285          */
4286         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
4287         /**
4288          *  Handles the reply of a query we initiated to learn about channels
4289          *  for a given range of blocks. We can expect to receive one or more
4290          *  replies to a single query.
4291          */
4292         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
4293         /**
4294          *  Handles the reply of a query we initiated asking for routing gossip
4295          *  messages for a list of channels. We should receive this message when
4296          *  a node has completed its best effort to send us the pertaining routing
4297          *  gossip messages.
4298          */
4299         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
4300         /**
4301          *  Handles when a peer asks us to send a list of `short_channel_id`s
4302          *  for the requested range of blocks.
4303          */
4304         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
4305         /**
4306          *  Handles when a peer asks us to send routing gossip messages for a
4307          *  list of `short_channel_id`s.
4308          */
4309         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
4310         /**
4311          *  Indicates that there are a large number of [`ChannelAnnouncement`] (or other) messages
4312          *  pending some async action. While there is no guarantee of the rate of future messages, the
4313          *  caller should seek to reduce the rate of new gossip messages handled, especially
4314          *  [`ChannelAnnouncement`]s.
4315          */
4316         inline bool processing_queue_high();
4317         /**
4318          *  Gets the node feature flags which this handler itself supports. All available handlers are
4319          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4320          *  which are broadcasted in our [`NodeAnnouncement`] message.
4321          */
4322         inline LDK::NodeFeatures provided_node_features();
4323         /**
4324          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4325          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4326          *  which are sent in our [`Init`] message.
4327          * 
4328          *  Note that this method is called before [`Self::peer_connected`].
4329          */
4330         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4331 };
4332 class OnionMessageHandler {
4333 private:
4334         LDKOnionMessageHandler self;
4335 public:
4336         OnionMessageHandler(const OnionMessageHandler&) = delete;
4337         OnionMessageHandler(OnionMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(OnionMessageHandler)); }
4338         OnionMessageHandler(LDKOnionMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOnionMessageHandler)); }
4339         operator LDKOnionMessageHandler() && { LDKOnionMessageHandler res = self; memset(&self, 0, sizeof(LDKOnionMessageHandler)); return res; }
4340         ~OnionMessageHandler() { OnionMessageHandler_free(self); }
4341         OnionMessageHandler& operator=(OnionMessageHandler&& o) { OnionMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(OnionMessageHandler)); return *this; }
4342         LDKOnionMessageHandler* operator &() { return &self; }
4343         LDKOnionMessageHandler* operator ->() { return &self; }
4344         const LDKOnionMessageHandler* operator &() const { return &self; }
4345         const LDKOnionMessageHandler* operator ->() const { return &self; }
4346         /**
4347          *  Handle an incoming `onion_message` message from the given peer.
4348          */
4349         inline void handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg);
4350         /**
4351          *  Called when a connection is established with a peer. Can be used to track which peers
4352          *  advertise onion message support and are online.
4353          * 
4354          *  May return an `Err(())` if the features the peer supports are not sufficient to communicate
4355          *  with us. Implementors should be somewhat conservative about doing so, however, as other
4356          *  message handlers may still wish to communicate with this peer.
4357          */
4358         inline LDK::CResult_NoneNoneZ peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound);
4359         /**
4360          *  Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
4361          *  drop and refuse to forward onion messages to this peer.
4362          */
4363         inline void peer_disconnected(struct LDKPublicKey their_node_id);
4364         /**
4365          *  Gets the node feature flags which this handler itself supports. All available handlers are
4366          *  queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
4367          *  which are broadcasted in our [`NodeAnnouncement`] message.
4368          */
4369         inline LDK::NodeFeatures provided_node_features();
4370         /**
4371          *  Gets the init feature flags which should be sent to the given peer. All available handlers
4372          *  are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
4373          *  which are sent in our [`Init`] message.
4374          * 
4375          *  Note that this method is called before [`Self::peer_connected`].
4376          */
4377         inline LDK::InitFeatures provided_init_features(struct LDKPublicKey their_node_id);
4378 };
4379 class GraphSyncError {
4380 private:
4381         LDKGraphSyncError self;
4382 public:
4383         GraphSyncError(const GraphSyncError&) = delete;
4384         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
4385         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
4386         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
4387         ~GraphSyncError() { GraphSyncError_free(self); }
4388         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
4389         LDKGraphSyncError* operator &() { return &self; }
4390         LDKGraphSyncError* operator ->() { return &self; }
4391         const LDKGraphSyncError* operator &() const { return &self; }
4392         const LDKGraphSyncError* operator ->() const { return &self; }
4393 };
4394 class Level {
4395 private:
4396         LDKLevel self;
4397 public:
4398         Level(const Level&) = delete;
4399         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
4400         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
4401         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
4402         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
4403         LDKLevel* operator &() { return &self; }
4404         LDKLevel* operator ->() { return &self; }
4405         const LDKLevel* operator &() const { return &self; }
4406         const LDKLevel* operator ->() const { return &self; }
4407 };
4408 class Record {
4409 private:
4410         LDKRecord self;
4411 public:
4412         Record(const Record&) = delete;
4413         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
4414         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
4415         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
4416         ~Record() { Record_free(self); }
4417         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
4418         LDKRecord* operator &() { return &self; }
4419         LDKRecord* operator ->() { return &self; }
4420         const LDKRecord* operator &() const { return &self; }
4421         const LDKRecord* operator ->() const { return &self; }
4422 };
4423 class Logger {
4424 private:
4425         LDKLogger self;
4426 public:
4427         Logger(const Logger&) = delete;
4428         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
4429         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
4430         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
4431         ~Logger() { Logger_free(self); }
4432         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
4433         LDKLogger* operator &() { return &self; }
4434         LDKLogger* operator ->() { return &self; }
4435         const LDKLogger* operator &() const { return &self; }
4436         const LDKLogger* operator ->() const { return &self; }
4437         /**
4438          *  Logs the `Record`
4439          */
4440         inline void log(const struct LDKRecord *NONNULL_PTR record);
4441 };
4442 class FutureCallback {
4443 private:
4444         LDKFutureCallback self;
4445 public:
4446         FutureCallback(const FutureCallback&) = delete;
4447         FutureCallback(FutureCallback&& o) : self(o.self) { memset(&o, 0, sizeof(FutureCallback)); }
4448         FutureCallback(LDKFutureCallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFutureCallback)); }
4449         operator LDKFutureCallback() && { LDKFutureCallback res = self; memset(&self, 0, sizeof(LDKFutureCallback)); return res; }
4450         ~FutureCallback() { FutureCallback_free(self); }
4451         FutureCallback& operator=(FutureCallback&& o) { FutureCallback_free(self); self = o.self; memset(&o, 0, sizeof(FutureCallback)); return *this; }
4452         LDKFutureCallback* operator &() { return &self; }
4453         LDKFutureCallback* operator ->() { return &self; }
4454         const LDKFutureCallback* operator &() const { return &self; }
4455         const LDKFutureCallback* operator ->() const { return &self; }
4456         /**
4457          *  The method which is called.
4458          */
4459         inline void call();
4460 };
4461 class Future {
4462 private:
4463         LDKFuture self;
4464 public:
4465         Future(const Future&) = delete;
4466         Future(Future&& o) : self(o.self) { memset(&o, 0, sizeof(Future)); }
4467         Future(LDKFuture&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFuture)); }
4468         operator LDKFuture() && { LDKFuture res = self; memset(&self, 0, sizeof(LDKFuture)); return res; }
4469         ~Future() { Future_free(self); }
4470         Future& operator=(Future&& o) { Future_free(self); self = o.self; memset(&o, 0, sizeof(Future)); return *this; }
4471         LDKFuture* operator &() { return &self; }
4472         LDKFuture* operator ->() { return &self; }
4473         const LDKFuture* operator &() const { return &self; }
4474         const LDKFuture* operator ->() const { return &self; }
4475 };
4476 class MonitorUpdateId {
4477 private:
4478         LDKMonitorUpdateId self;
4479 public:
4480         MonitorUpdateId(const MonitorUpdateId&) = delete;
4481         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
4482         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
4483         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
4484         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
4485         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
4486         LDKMonitorUpdateId* operator &() { return &self; }
4487         LDKMonitorUpdateId* operator ->() { return &self; }
4488         const LDKMonitorUpdateId* operator &() const { return &self; }
4489         const LDKMonitorUpdateId* operator ->() const { return &self; }
4490 };
4491 class Persist {
4492 private:
4493         LDKPersist self;
4494 public:
4495         Persist(const Persist&) = delete;
4496         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
4497         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
4498         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
4499         ~Persist() { Persist_free(self); }
4500         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
4501         LDKPersist* operator &() { return &self; }
4502         LDKPersist* operator ->() { return &self; }
4503         const LDKPersist* operator &() const { return &self; }
4504         const LDKPersist* operator ->() const { return &self; }
4505         /**
4506          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
4507          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
4508          * 
4509          *  The data can be stored any way you want, but the identifier provided by LDK is the
4510          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
4511          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
4512          * 
4513          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
4514          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
4515          * 
4516          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
4517          *  and [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
4518          * 
4519          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
4520          *  [`Writeable::write`]: crate::util::ser::Writeable::write
4521          */
4522         inline LDK::ChannelMonitorUpdateStatus persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
4523         /**
4524          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
4525          *  update.
4526          * 
4527          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
4528          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
4529          *  details.
4530          * 
4531          *  During blockchain synchronization operations, this may be called with no
4532          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
4533          *  Note that after the full [`ChannelMonitor`] is persisted any previous
4534          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
4535          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
4536          * 
4537          *  If an implementer chooses to persist the updates only, they need to make
4538          *  sure that all the updates are applied to the `ChannelMonitors` *before*
4539          *  the set of channel monitors is given to the `ChannelManager`
4540          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
4541          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
4542          *  persisted, then there is no need to persist individual updates.
4543          * 
4544          *  Note that there could be a performance tradeoff between persisting complete
4545          *  channel monitors on every update vs. persisting only updates and applying
4546          *  them in batches. The size of each monitor grows `O(number of state updates)`
4547          *  whereas updates are small and `O(1)`.
4548          * 
4549          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
4550          *  if you return [`ChannelMonitorUpdateStatus::InProgress`].
4551          * 
4552          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
4553          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
4554          *  [`ChannelMonitorUpdateStatus`] for requirements when returning errors.
4555          * 
4556          *  [`Writeable::write`]: crate::util::ser::Writeable::write
4557          * 
4558          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
4559          */
4560         inline LDK::ChannelMonitorUpdateStatus update_persisted_channel(struct LDKOutPoint channel_id, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
4561 };
4562 class LockedChannelMonitor {
4563 private:
4564         LDKLockedChannelMonitor self;
4565 public:
4566         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
4567         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
4568         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
4569         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
4570         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
4571         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
4572         LDKLockedChannelMonitor* operator &() { return &self; }
4573         LDKLockedChannelMonitor* operator ->() { return &self; }
4574         const LDKLockedChannelMonitor* operator &() const { return &self; }
4575         const LDKLockedChannelMonitor* operator ->() const { return &self; }
4576 };
4577 class ChainMonitor {
4578 private:
4579         LDKChainMonitor self;
4580 public:
4581         ChainMonitor(const ChainMonitor&) = delete;
4582         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
4583         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
4584         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
4585         ~ChainMonitor() { ChainMonitor_free(self); }
4586         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
4587         LDKChainMonitor* operator &() { return &self; }
4588         LDKChainMonitor* operator ->() { return &self; }
4589         const LDKChainMonitor* operator &() const { return &self; }
4590         const LDKChainMonitor* operator ->() const { return &self; }
4591 };
4592 class CResult_LockedChannelMonitorNoneZ {
4593 private:
4594         LDKCResult_LockedChannelMonitorNoneZ self;
4595 public:
4596         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
4597         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
4598         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
4599         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
4600         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
4601         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
4602         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
4603         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
4604         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
4605         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
4606 };
4607 class CResult_PhantomRouteHintsDecodeErrorZ {
4608 private:
4609         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
4610 public:
4611         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
4612         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
4613         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
4614         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
4615         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
4616         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
4617         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
4618         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
4619         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
4620         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
4621 };
4622 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
4623 private:
4624         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
4625 public:
4626         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
4627         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4628         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4629         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
4630         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
4631         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ& operator=(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return *this; }
4632         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
4633         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
4634         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
4635         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
4636 };
4637 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
4638 private:
4639         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
4640 public:
4641         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
4642         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
4643         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
4644         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
4645         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
4646         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ& operator=(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return *this; }
4647         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
4648         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
4649         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
4650         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
4651 };
4652 class CVec_C2Tuple_u32TxOutZZ {
4653 private:
4654         LDKCVec_C2Tuple_u32TxOutZZ self;
4655 public:
4656         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
4657         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
4658         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
4659         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
4660         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
4661         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; }
4662         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
4663         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
4664         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
4665         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
4666 };
4667 class CResult_FundingCreatedDecodeErrorZ {
4668 private:
4669         LDKCResult_FundingCreatedDecodeErrorZ self;
4670 public:
4671         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
4672         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
4673         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
4674         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
4675         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
4676         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
4677         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
4678         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
4679         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
4680         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
4681 };
4682 class CResult_ChannelInfoDecodeErrorZ {
4683 private:
4684         LDKCResult_ChannelInfoDecodeErrorZ self;
4685 public:
4686         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
4687         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
4688         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
4689         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
4690         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
4691         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
4692         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
4693         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
4694         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
4695         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
4696 };
4697 class CResult_NoneSendErrorZ {
4698 private:
4699         LDKCResult_NoneSendErrorZ self;
4700 public:
4701         CResult_NoneSendErrorZ(const CResult_NoneSendErrorZ&) = delete;
4702         CResult_NoneSendErrorZ(CResult_NoneSendErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); }
4703         CResult_NoneSendErrorZ(LDKCResult_NoneSendErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSendErrorZ)); }
4704         operator LDKCResult_NoneSendErrorZ() && { LDKCResult_NoneSendErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSendErrorZ)); return res; }
4705         ~CResult_NoneSendErrorZ() { CResult_NoneSendErrorZ_free(self); }
4706         CResult_NoneSendErrorZ& operator=(CResult_NoneSendErrorZ&& o) { CResult_NoneSendErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSendErrorZ)); return *this; }
4707         LDKCResult_NoneSendErrorZ* operator &() { return &self; }
4708         LDKCResult_NoneSendErrorZ* operator ->() { return &self; }
4709         const LDKCResult_NoneSendErrorZ* operator &() const { return &self; }
4710         const LDKCResult_NoneSendErrorZ* operator ->() const { return &self; }
4711 };
4712 class CResult_CVec_u8ZPeerHandleErrorZ {
4713 private:
4714         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
4715 public:
4716         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
4717         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
4718         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
4719         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
4720         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
4721         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; }
4722         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
4723         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
4724         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
4725         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
4726 };
4727 class CResult_GossipTimestampFilterDecodeErrorZ {
4728 private:
4729         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
4730 public:
4731         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
4732         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
4733         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
4734         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
4735         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
4736         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
4737         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
4738         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
4739         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
4740         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
4741 };
4742 class COption_NetworkUpdateZ {
4743 private:
4744         LDKCOption_NetworkUpdateZ self;
4745 public:
4746         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
4747         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
4748         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
4749         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
4750         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
4751         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
4752         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
4753         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
4754         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
4755         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
4756 };
4757 class COption_u64Z {
4758 private:
4759         LDKCOption_u64Z self;
4760 public:
4761         COption_u64Z(const COption_u64Z&) = delete;
4762         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
4763         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
4764         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
4765         ~COption_u64Z() { COption_u64Z_free(self); }
4766         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
4767         LDKCOption_u64Z* operator &() { return &self; }
4768         LDKCOption_u64Z* operator ->() { return &self; }
4769         const LDKCOption_u64Z* operator &() const { return &self; }
4770         const LDKCOption_u64Z* operator ->() const { return &self; }
4771 };
4772 class CResult_PaymentPreimageAPIErrorZ {
4773 private:
4774         LDKCResult_PaymentPreimageAPIErrorZ self;
4775 public:
4776         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
4777         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
4778         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
4779         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
4780         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
4781         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
4782         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
4783         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
4784         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
4785         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
4786 };
4787 class CResult_RouteHintDecodeErrorZ {
4788 private:
4789         LDKCResult_RouteHintDecodeErrorZ self;
4790 public:
4791         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
4792         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
4793         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
4794         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
4795         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
4796         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
4797         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
4798         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
4799         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
4800         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
4801 };
4802 class COption_FilterZ {
4803 private:
4804         LDKCOption_FilterZ self;
4805 public:
4806         COption_FilterZ(const COption_FilterZ&) = delete;
4807         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
4808         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
4809         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
4810         ~COption_FilterZ() { COption_FilterZ_free(self); }
4811         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
4812         LDKCOption_FilterZ* operator &() { return &self; }
4813         LDKCOption_FilterZ* operator ->() { return &self; }
4814         const LDKCOption_FilterZ* operator &() const { return &self; }
4815         const LDKCOption_FilterZ* operator ->() const { return &self; }
4816 };
4817 class COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
4818 private:
4819         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
4820 public:
4821         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
4822         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
4823         COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
4824         operator LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
4825         ~COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
4826         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; }
4827         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
4828         LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
4829         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
4830         const LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
4831 };
4832 class CResult_COption_APIErrorZDecodeErrorZ {
4833 private:
4834         LDKCResult_COption_APIErrorZDecodeErrorZ self;
4835 public:
4836         CResult_COption_APIErrorZDecodeErrorZ(const CResult_COption_APIErrorZDecodeErrorZ&) = delete;
4837         CResult_COption_APIErrorZDecodeErrorZ(CResult_COption_APIErrorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_APIErrorZDecodeErrorZ)); }
4838         CResult_COption_APIErrorZDecodeErrorZ(LDKCResult_COption_APIErrorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); }
4839         operator LDKCResult_COption_APIErrorZDecodeErrorZ() && { LDKCResult_COption_APIErrorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_APIErrorZDecodeErrorZ)); return res; }
4840         ~CResult_COption_APIErrorZDecodeErrorZ() { CResult_COption_APIErrorZDecodeErrorZ_free(self); }
4841         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; }
4842         LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() { return &self; }
4843         LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() { return &self; }
4844         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator &() const { return &self; }
4845         const LDKCResult_COption_APIErrorZDecodeErrorZ* operator ->() const { return &self; }
4846 };
4847 class CVec_UpdateAddHTLCZ {
4848 private:
4849         LDKCVec_UpdateAddHTLCZ self;
4850 public:
4851         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
4852         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
4853         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
4854         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
4855         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
4856         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
4857         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
4858         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
4859         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
4860         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
4861 };
4862 class CResult_CommitmentSignedDecodeErrorZ {
4863 private:
4864         LDKCResult_CommitmentSignedDecodeErrorZ self;
4865 public:
4866         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
4867         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
4868         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
4869         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
4870         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
4871         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
4872         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
4873         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
4874         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
4875         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
4876 };
4877 class COption_u32Z {
4878 private:
4879         LDKCOption_u32Z self;
4880 public:
4881         COption_u32Z(const COption_u32Z&) = delete;
4882         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
4883         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
4884         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
4885         ~COption_u32Z() { COption_u32Z_free(self); }
4886         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
4887         LDKCOption_u32Z* operator &() { return &self; }
4888         LDKCOption_u32Z* operator ->() { return &self; }
4889         const LDKCOption_u32Z* operator &() const { return &self; }
4890         const LDKCOption_u32Z* operator ->() const { return &self; }
4891 };
4892 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4893 private:
4894         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
4895 public:
4896         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
4897         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4898         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4899         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
4900         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
4901         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
4902         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
4903         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
4904         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
4905         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
4906 };
4907 class CVec_C2Tuple_TxidBlockHashZZ {
4908 private:
4909         LDKCVec_C2Tuple_TxidBlockHashZZ self;
4910 public:
4911         CVec_C2Tuple_TxidBlockHashZZ(const CVec_C2Tuple_TxidBlockHashZZ&) = delete;
4912         CVec_C2Tuple_TxidBlockHashZZ(CVec_C2Tuple_TxidBlockHashZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidBlockHashZZ)); }
4913         CVec_C2Tuple_TxidBlockHashZZ(LDKCVec_C2Tuple_TxidBlockHashZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_TxidBlockHashZZ)); }
4914         operator LDKCVec_C2Tuple_TxidBlockHashZZ() && { LDKCVec_C2Tuple_TxidBlockHashZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidBlockHashZZ)); return res; }
4915         ~CVec_C2Tuple_TxidBlockHashZZ() { CVec_C2Tuple_TxidBlockHashZZ_free(self); }
4916         CVec_C2Tuple_TxidBlockHashZZ& operator=(CVec_C2Tuple_TxidBlockHashZZ&& o) { CVec_C2Tuple_TxidBlockHashZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_TxidBlockHashZZ)); return *this; }
4917         LDKCVec_C2Tuple_TxidBlockHashZZ* operator &() { return &self; }
4918         LDKCVec_C2Tuple_TxidBlockHashZZ* operator ->() { return &self; }
4919         const LDKCVec_C2Tuple_TxidBlockHashZZ* operator &() const { return &self; }
4920         const LDKCVec_C2Tuple_TxidBlockHashZZ* operator ->() const { return &self; }
4921 };
4922 class CResult_CommitmentTransactionDecodeErrorZ {
4923 private:
4924         LDKCResult_CommitmentTransactionDecodeErrorZ self;
4925 public:
4926         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
4927         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
4928         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
4929         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
4930         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
4931         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
4932         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4933         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4934         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4935         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4936 };
4937 class CResult_TransactionNoneZ {
4938 private:
4939         LDKCResult_TransactionNoneZ self;
4940 public:
4941         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
4942         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
4943         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
4944         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
4945         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
4946         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
4947         LDKCResult_TransactionNoneZ* operator &() { return &self; }
4948         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
4949         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
4950         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
4951 };
4952 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
4953 private:
4954         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
4955 public:
4956         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
4957         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4958         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4959         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
4960         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
4961         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
4962         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
4963         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
4964         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
4965         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
4966 };
4967 class CResult_ErrorMessageDecodeErrorZ {
4968 private:
4969         LDKCResult_ErrorMessageDecodeErrorZ self;
4970 public:
4971         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
4972         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
4973         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
4974         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
4975         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
4976         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
4977         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
4978         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
4979         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
4980         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
4981 };
4982 class CResult_OpenChannelDecodeErrorZ {
4983 private:
4984         LDKCResult_OpenChannelDecodeErrorZ self;
4985 public:
4986         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
4987         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
4988         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
4989         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
4990         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
4991         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
4992         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
4993         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
4994         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
4995         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
4996 };
4997 class COption_APIErrorZ {
4998 private:
4999         LDKCOption_APIErrorZ self;
5000 public:
5001         COption_APIErrorZ(const COption_APIErrorZ&) = delete;
5002         COption_APIErrorZ(COption_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_APIErrorZ)); }
5003         COption_APIErrorZ(LDKCOption_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_APIErrorZ)); }
5004         operator LDKCOption_APIErrorZ() && { LDKCOption_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCOption_APIErrorZ)); return res; }
5005         ~COption_APIErrorZ() { COption_APIErrorZ_free(self); }
5006         COption_APIErrorZ& operator=(COption_APIErrorZ&& o) { COption_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_APIErrorZ)); return *this; }
5007         LDKCOption_APIErrorZ* operator &() { return &self; }
5008         LDKCOption_APIErrorZ* operator ->() { return &self; }
5009         const LDKCOption_APIErrorZ* operator &() const { return &self; }
5010         const LDKCOption_APIErrorZ* operator ->() const { return &self; }
5011 };
5012 class CResult_QueryChannelRangeDecodeErrorZ {
5013 private:
5014         LDKCResult_QueryChannelRangeDecodeErrorZ self;
5015 public:
5016         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
5017         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
5018         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
5019         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
5020         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
5021         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
5022         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
5023         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
5024         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
5025         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
5026 };
5027 class CVec_TransactionZ {
5028 private:
5029         LDKCVec_TransactionZ self;
5030 public:
5031         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
5032         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
5033         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
5034         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
5035         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
5036         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
5037         LDKCVec_TransactionZ* operator &() { return &self; }
5038         LDKCVec_TransactionZ* operator ->() { return &self; }
5039         const LDKCVec_TransactionZ* operator &() const { return &self; }
5040         const LDKCVec_TransactionZ* operator ->() const { return &self; }
5041 };
5042 class C2Tuple_TxidBlockHashZ {
5043 private:
5044         LDKC2Tuple_TxidBlockHashZ self;
5045 public:
5046         C2Tuple_TxidBlockHashZ(const C2Tuple_TxidBlockHashZ&) = delete;
5047         C2Tuple_TxidBlockHashZ(C2Tuple_TxidBlockHashZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidBlockHashZ)); }
5048         C2Tuple_TxidBlockHashZ(LDKC2Tuple_TxidBlockHashZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidBlockHashZ)); }
5049         operator LDKC2Tuple_TxidBlockHashZ() && { LDKC2Tuple_TxidBlockHashZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidBlockHashZ)); return res; }
5050         ~C2Tuple_TxidBlockHashZ() { C2Tuple_TxidBlockHashZ_free(self); }
5051         C2Tuple_TxidBlockHashZ& operator=(C2Tuple_TxidBlockHashZ&& o) { C2Tuple_TxidBlockHashZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_TxidBlockHashZ)); return *this; }
5052         LDKC2Tuple_TxidBlockHashZ* operator &() { return &self; }
5053         LDKC2Tuple_TxidBlockHashZ* operator ->() { return &self; }
5054         const LDKC2Tuple_TxidBlockHashZ* operator &() const { return &self; }
5055         const LDKC2Tuple_TxidBlockHashZ* operator ->() const { return &self; }
5056 };
5057 class CResult_ChannelFeaturesDecodeErrorZ {
5058 private:
5059         LDKCResult_ChannelFeaturesDecodeErrorZ self;
5060 public:
5061         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
5062         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
5063         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
5064         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
5065         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
5066         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
5067         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
5068         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
5069         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
5070         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
5071 };
5072 class CResult_ChannelReadyDecodeErrorZ {
5073 private:
5074         LDKCResult_ChannelReadyDecodeErrorZ self;
5075 public:
5076         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
5077         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
5078         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
5079         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
5080         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
5081         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
5082         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
5083         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
5084         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
5085         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
5086 };
5087 class CResult_UpdateFeeDecodeErrorZ {
5088 private:
5089         LDKCResult_UpdateFeeDecodeErrorZ self;
5090 public:
5091         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
5092         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
5093         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
5094         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
5095         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
5096         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
5097         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
5098         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
5099         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
5100         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
5101 };
5102 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
5103 private:
5104         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
5105 public:
5106         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
5107         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
5108         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
5109         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
5110         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
5111         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
5112         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
5113         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
5114         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
5115         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
5116 };
5117 class CResult_boolLightningErrorZ {
5118 private:
5119         LDKCResult_boolLightningErrorZ self;
5120 public:
5121         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
5122         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
5123         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
5124         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
5125         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
5126         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
5127         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
5128         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
5129         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
5130         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
5131 };
5132 class CResult_NodeIdDecodeErrorZ {
5133 private:
5134         LDKCResult_NodeIdDecodeErrorZ self;
5135 public:
5136         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
5137         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
5138         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
5139         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
5140         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
5141         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
5142         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
5143         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
5144         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
5145         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
5146 };
5147 class COption_HTLCDestinationZ {
5148 private:
5149         LDKCOption_HTLCDestinationZ self;
5150 public:
5151         COption_HTLCDestinationZ(const COption_HTLCDestinationZ&) = delete;
5152         COption_HTLCDestinationZ(COption_HTLCDestinationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCDestinationZ)); }
5153         COption_HTLCDestinationZ(LDKCOption_HTLCDestinationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCDestinationZ)); }
5154         operator LDKCOption_HTLCDestinationZ() && { LDKCOption_HTLCDestinationZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCDestinationZ)); return res; }
5155         ~COption_HTLCDestinationZ() { COption_HTLCDestinationZ_free(self); }
5156         COption_HTLCDestinationZ& operator=(COption_HTLCDestinationZ&& o) { COption_HTLCDestinationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCDestinationZ)); return *this; }
5157         LDKCOption_HTLCDestinationZ* operator &() { return &self; }
5158         LDKCOption_HTLCDestinationZ* operator ->() { return &self; }
5159         const LDKCOption_HTLCDestinationZ* operator &() const { return &self; }
5160         const LDKCOption_HTLCDestinationZ* operator ->() const { return &self; }
5161 };
5162 class C2Tuple_BlockHashChannelMonitorZ {
5163 private:
5164         LDKC2Tuple_BlockHashChannelMonitorZ self;
5165 public:
5166         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
5167         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
5168         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
5169         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
5170         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
5171         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
5172         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
5173         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
5174         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
5175         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
5176 };
5177 class CResult_ShutdownScriptInvalidShutdownScriptZ {
5178 private:
5179         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
5180 public:
5181         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
5182         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
5183         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
5184         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
5185         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
5186         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
5187         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
5188         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
5189         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
5190         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
5191 };
5192 class CResult_NodeAnnouncementInfoDecodeErrorZ {
5193 private:
5194         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
5195 public:
5196         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
5197         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
5198         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
5199         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
5200         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
5201         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
5202         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
5203         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
5204         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
5205         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
5206 };
5207 class CResult_COption_NetworkUpdateZDecodeErrorZ {
5208 private:
5209         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
5210 public:
5211         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
5212         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
5213         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
5214         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
5215         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
5216         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; }
5217         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
5218         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
5219         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
5220         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
5221 };
5222 class CResult_NoneRetryableSendFailureZ {
5223 private:
5224         LDKCResult_NoneRetryableSendFailureZ self;
5225 public:
5226         CResult_NoneRetryableSendFailureZ(const CResult_NoneRetryableSendFailureZ&) = delete;
5227         CResult_NoneRetryableSendFailureZ(CResult_NoneRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); }
5228         CResult_NoneRetryableSendFailureZ(LDKCResult_NoneRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); }
5229         operator LDKCResult_NoneRetryableSendFailureZ() && { LDKCResult_NoneRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneRetryableSendFailureZ)); return res; }
5230         ~CResult_NoneRetryableSendFailureZ() { CResult_NoneRetryableSendFailureZ_free(self); }
5231         CResult_NoneRetryableSendFailureZ& operator=(CResult_NoneRetryableSendFailureZ&& o) { CResult_NoneRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneRetryableSendFailureZ)); return *this; }
5232         LDKCResult_NoneRetryableSendFailureZ* operator &() { return &self; }
5233         LDKCResult_NoneRetryableSendFailureZ* operator ->() { return &self; }
5234         const LDKCResult_NoneRetryableSendFailureZ* operator &() const { return &self; }
5235         const LDKCResult_NoneRetryableSendFailureZ* operator ->() const { return &self; }
5236 };
5237 class CVec_UpdateFailMalformedHTLCZ {
5238 private:
5239         LDKCVec_UpdateFailMalformedHTLCZ self;
5240 public:
5241         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
5242         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
5243         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
5244         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
5245         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
5246         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
5247         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
5248         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
5249         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
5250         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
5251 };
5252 class CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ {
5253 private:
5254         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ self;
5255 public:
5256         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(const CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&) = delete;
5257         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
5258         CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); }
5259         operator LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() && { LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ)); return res; }
5260         ~CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ() { CVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ_free(self); }
5261         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; }
5262         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() { return &self; }
5263         LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() { return &self; }
5264         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator &() const { return &self; }
5265         const LDKCVec_C2Tuple_OutPointCVec_MonitorUpdateIdZZZ* operator ->() const { return &self; }
5266 };
5267 class CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ {
5268 private:
5269         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ self;
5270 public:
5271         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(const CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&) = delete;
5272         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); }
5273         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); }
5274         operator LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ() && { LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); return res; }
5275         ~CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ() { CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ_free(self); }
5276         CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ& operator=(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ&& o) { CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyCOption_NetAddressZZZ)); return *this; }
5277         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator &() { return &self; }
5278         LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator ->() { return &self; }
5279         const LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator &() const { return &self; }
5280         const LDKCVec_C2Tuple_PublicKeyCOption_NetAddressZZZ* operator ->() const { return &self; }
5281 };
5282 class CVec_RouteHopZ {
5283 private:
5284         LDKCVec_RouteHopZ self;
5285 public:
5286         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
5287         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
5288         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
5289         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
5290         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
5291         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
5292         LDKCVec_RouteHopZ* operator &() { return &self; }
5293         LDKCVec_RouteHopZ* operator ->() { return &self; }
5294         const LDKCVec_RouteHopZ* operator &() const { return &self; }
5295         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
5296 };
5297 class COption_CustomOnionMessageContentsZ {
5298 private:
5299         LDKCOption_CustomOnionMessageContentsZ self;
5300 public:
5301         COption_CustomOnionMessageContentsZ(const COption_CustomOnionMessageContentsZ&) = delete;
5302         COption_CustomOnionMessageContentsZ(COption_CustomOnionMessageContentsZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); }
5303         COption_CustomOnionMessageContentsZ(LDKCOption_CustomOnionMessageContentsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); }
5304         operator LDKCOption_CustomOnionMessageContentsZ() && { LDKCOption_CustomOnionMessageContentsZ res = self; memset(&self, 0, sizeof(LDKCOption_CustomOnionMessageContentsZ)); return res; }
5305         ~COption_CustomOnionMessageContentsZ() { COption_CustomOnionMessageContentsZ_free(self); }
5306         COption_CustomOnionMessageContentsZ& operator=(COption_CustomOnionMessageContentsZ&& o) { COption_CustomOnionMessageContentsZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CustomOnionMessageContentsZ)); return *this; }
5307         LDKCOption_CustomOnionMessageContentsZ* operator &() { return &self; }
5308         LDKCOption_CustomOnionMessageContentsZ* operator ->() { return &self; }
5309         const LDKCOption_CustomOnionMessageContentsZ* operator &() const { return &self; }
5310         const LDKCOption_CustomOnionMessageContentsZ* operator ->() const { return &self; }
5311 };
5312 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
5313 private:
5314         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
5315 public:
5316         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
5317         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5318         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5319         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
5320         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
5321         CVec_C2Tuple_BlockHashChannelMonitorZZ& operator=(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); return *this; }
5322         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
5323         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
5324         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
5325         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
5326 };
5327 class CVec_ThirtyTwoBytesZ {
5328 private:
5329         LDKCVec_ThirtyTwoBytesZ self;
5330 public:
5331         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
5332         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
5333         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
5334         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
5335         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
5336         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
5337         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
5338         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
5339         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
5340         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
5341 };
5342 class CResult_ClosingSignedDecodeErrorZ {
5343 private:
5344         LDKCResult_ClosingSignedDecodeErrorZ self;
5345 public:
5346         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
5347         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
5348         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
5349         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
5350         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
5351         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
5352         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
5353         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
5354         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
5355         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
5356 };
5357 class CResult_NonePaymentErrorZ {
5358 private:
5359         LDKCResult_NonePaymentErrorZ self;
5360 public:
5361         CResult_NonePaymentErrorZ(const CResult_NonePaymentErrorZ&) = delete;
5362         CResult_NonePaymentErrorZ(CResult_NonePaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentErrorZ)); }
5363         CResult_NonePaymentErrorZ(LDKCResult_NonePaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentErrorZ)); }
5364         operator LDKCResult_NonePaymentErrorZ() && { LDKCResult_NonePaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentErrorZ)); return res; }
5365         ~CResult_NonePaymentErrorZ() { CResult_NonePaymentErrorZ_free(self); }
5366         CResult_NonePaymentErrorZ& operator=(CResult_NonePaymentErrorZ&& o) { CResult_NonePaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentErrorZ)); return *this; }
5367         LDKCResult_NonePaymentErrorZ* operator &() { return &self; }
5368         LDKCResult_NonePaymentErrorZ* operator ->() { return &self; }
5369         const LDKCResult_NonePaymentErrorZ* operator &() const { return &self; }
5370         const LDKCResult_NonePaymentErrorZ* operator ->() const { return &self; }
5371 };
5372 class CVec_CResult_NoneAPIErrorZZ {
5373 private:
5374         LDKCVec_CResult_NoneAPIErrorZZ self;
5375 public:
5376         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
5377         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
5378         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
5379         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
5380         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
5381         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; }
5382         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
5383         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
5384         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
5385         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
5386 };
5387 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
5388 private:
5389         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
5390 public:
5391         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
5392         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5393         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5394         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
5395         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
5396         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
5397         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
5398         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
5399         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
5400         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
5401 };
5402 class CVec_RecentPaymentDetailsZ {
5403 private:
5404         LDKCVec_RecentPaymentDetailsZ self;
5405 public:
5406         CVec_RecentPaymentDetailsZ(const CVec_RecentPaymentDetailsZ&) = delete;
5407         CVec_RecentPaymentDetailsZ(CVec_RecentPaymentDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); }
5408         CVec_RecentPaymentDetailsZ(LDKCVec_RecentPaymentDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); }
5409         operator LDKCVec_RecentPaymentDetailsZ() && { LDKCVec_RecentPaymentDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_RecentPaymentDetailsZ)); return res; }
5410         ~CVec_RecentPaymentDetailsZ() { CVec_RecentPaymentDetailsZ_free(self); }
5411         CVec_RecentPaymentDetailsZ& operator=(CVec_RecentPaymentDetailsZ&& o) { CVec_RecentPaymentDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RecentPaymentDetailsZ)); return *this; }
5412         LDKCVec_RecentPaymentDetailsZ* operator &() { return &self; }
5413         LDKCVec_RecentPaymentDetailsZ* operator ->() { return &self; }
5414         const LDKCVec_RecentPaymentDetailsZ* operator &() const { return &self; }
5415         const LDKCVec_RecentPaymentDetailsZ* operator ->() const { return &self; }
5416 };
5417 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
5418 private:
5419         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
5420 public:
5421         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
5422         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5423         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5424         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
5425         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
5426         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ& operator=(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return *this; }
5427         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
5428         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
5429         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
5430         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
5431 };
5432 class CVec_RouteHintHopZ {
5433 private:
5434         LDKCVec_RouteHintHopZ self;
5435 public:
5436         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
5437         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
5438         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
5439         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
5440         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
5441         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
5442         LDKCVec_RouteHintHopZ* operator &() { return &self; }
5443         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
5444         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
5445         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
5446 };
5447 class CResult_PaymentParametersDecodeErrorZ {
5448 private:
5449         LDKCResult_PaymentParametersDecodeErrorZ self;
5450 public:
5451         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
5452         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
5453         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
5454         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
5455         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
5456         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
5457         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
5458         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
5459         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
5460         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
5461 };
5462 class CVec_U5Z {
5463 private:
5464         LDKCVec_U5Z self;
5465 public:
5466         CVec_U5Z(const CVec_U5Z&) = delete;
5467         CVec_U5Z(CVec_U5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_U5Z)); }
5468         CVec_U5Z(LDKCVec_U5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_U5Z)); }
5469         operator LDKCVec_U5Z() && { LDKCVec_U5Z res = self; memset(&self, 0, sizeof(LDKCVec_U5Z)); return res; }
5470         ~CVec_U5Z() { CVec_U5Z_free(self); }
5471         CVec_U5Z& operator=(CVec_U5Z&& o) { CVec_U5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_U5Z)); return *this; }
5472         LDKCVec_U5Z* operator &() { return &self; }
5473         LDKCVec_U5Z* operator ->() { return &self; }
5474         const LDKCVec_U5Z* operator &() const { return &self; }
5475         const LDKCVec_U5Z* operator ->() const { return &self; }
5476 };
5477 class COption_UtxoLookupZ {
5478 private:
5479         LDKCOption_UtxoLookupZ self;
5480 public:
5481         COption_UtxoLookupZ(const COption_UtxoLookupZ&) = delete;
5482         COption_UtxoLookupZ(COption_UtxoLookupZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_UtxoLookupZ)); }
5483         COption_UtxoLookupZ(LDKCOption_UtxoLookupZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_UtxoLookupZ)); }
5484         operator LDKCOption_UtxoLookupZ() && { LDKCOption_UtxoLookupZ res = self; memset(&self, 0, sizeof(LDKCOption_UtxoLookupZ)); return res; }
5485         ~COption_UtxoLookupZ() { COption_UtxoLookupZ_free(self); }
5486         COption_UtxoLookupZ& operator=(COption_UtxoLookupZ&& o) { COption_UtxoLookupZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_UtxoLookupZ)); return *this; }
5487         LDKCOption_UtxoLookupZ* operator &() { return &self; }
5488         LDKCOption_UtxoLookupZ* operator ->() { return &self; }
5489         const LDKCOption_UtxoLookupZ* operator &() const { return &self; }
5490         const LDKCOption_UtxoLookupZ* operator ->() const { return &self; }
5491 };
5492 class CResult_PongDecodeErrorZ {
5493 private:
5494         LDKCResult_PongDecodeErrorZ self;
5495 public:
5496         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
5497         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
5498         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
5499         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
5500         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
5501         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
5502         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
5503         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
5504         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
5505         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
5506 };
5507 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
5508 private:
5509         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
5510 public:
5511         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
5512         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5513         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5514         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
5515         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
5516         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
5517         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
5518         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
5519         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
5520         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
5521 };
5522 class C2Tuple_OutPointCVec_MonitorUpdateIdZZ {
5523 private:
5524         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ self;
5525 public:
5526         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(const C2Tuple_OutPointCVec_MonitorUpdateIdZZ&) = delete;
5527         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(C2Tuple_OutPointCVec_MonitorUpdateIdZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
5528         C2Tuple_OutPointCVec_MonitorUpdateIdZZ(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); }
5529         operator LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ() && { LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ)); return res; }
5530         ~C2Tuple_OutPointCVec_MonitorUpdateIdZZ() { C2Tuple_OutPointCVec_MonitorUpdateIdZZ_free(self); }
5531         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; }
5532         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() { return &self; }
5533         LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() { return &self; }
5534         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator &() const { return &self; }
5535         const LDKC2Tuple_OutPointCVec_MonitorUpdateIdZZ* operator ->() const { return &self; }
5536 };
5537 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
5538 private:
5539         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
5540 public:
5541         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
5542         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5543         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5544         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
5545         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
5546         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ& operator=(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return *this; }
5547         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
5548         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
5549         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
5550         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
5551 };
5552 class C2Tuple_BlockHashChannelManagerZ {
5553 private:
5554         LDKC2Tuple_BlockHashChannelManagerZ self;
5555 public:
5556         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
5557         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
5558         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
5559         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
5560         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
5561         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
5562         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
5563         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
5564         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
5565         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
5566 };
5567 class CResult_ChannelTransactionParametersDecodeErrorZ {
5568 private:
5569         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
5570 public:
5571         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
5572         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
5573         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
5574         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
5575         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
5576         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
5577         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
5578         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
5579         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
5580         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
5581 };
5582 class CResult_WriteableEcdsaChannelSignerDecodeErrorZ {
5583 private:
5584         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ self;
5585 public:
5586         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(const CResult_WriteableEcdsaChannelSignerDecodeErrorZ&) = delete;
5587         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
5588         CResult_WriteableEcdsaChannelSignerDecodeErrorZ(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); }
5589         operator LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ() && { LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return res; }
5590         ~CResult_WriteableEcdsaChannelSignerDecodeErrorZ() { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); }
5591         CResult_WriteableEcdsaChannelSignerDecodeErrorZ& operator=(CResult_WriteableEcdsaChannelSignerDecodeErrorZ&& o) { CResult_WriteableEcdsaChannelSignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WriteableEcdsaChannelSignerDecodeErrorZ)); return *this; }
5592         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() { return &self; }
5593         LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() { return &self; }
5594         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator &() const { return &self; }
5595         const LDKCResult_WriteableEcdsaChannelSignerDecodeErrorZ* operator ->() const { return &self; }
5596 };
5597 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
5598 private:
5599         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
5600 public:
5601         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
5602         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5603         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5604         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
5605         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
5606         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
5607         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5608         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5609         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5610         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5611 };
5612 class C2Tuple_PaymentHashPaymentIdZ {
5613 private:
5614         LDKC2Tuple_PaymentHashPaymentIdZ self;
5615 public:
5616         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
5617         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
5618         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
5619         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
5620         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
5621         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
5622         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
5623         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
5624         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
5625         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
5626 };
5627 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
5628 private:
5629         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ self;
5630 public:
5631         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(const CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&) = delete;
5632         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5633         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5634         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return res; }
5635         ~CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); }
5636         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ& operator=(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return *this; }
5637         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() { return &self; }
5638         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() { return &self; }
5639         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() const { return &self; }
5640         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() const { return &self; }
5641 };
5642 class CResult_NoneErrorZ {
5643 private:
5644         LDKCResult_NoneErrorZ self;
5645 public:
5646         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
5647         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
5648         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
5649         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
5650         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
5651         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
5652         LDKCResult_NoneErrorZ* operator &() { return &self; }
5653         LDKCResult_NoneErrorZ* operator ->() { return &self; }
5654         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
5655         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
5656 };
5657 class CResult_InFlightHtlcsDecodeErrorZ {
5658 private:
5659         LDKCResult_InFlightHtlcsDecodeErrorZ self;
5660 public:
5661         CResult_InFlightHtlcsDecodeErrorZ(const CResult_InFlightHtlcsDecodeErrorZ&) = delete;
5662         CResult_InFlightHtlcsDecodeErrorZ(CResult_InFlightHtlcsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); }
5663         CResult_InFlightHtlcsDecodeErrorZ(LDKCResult_InFlightHtlcsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); }
5664         operator LDKCResult_InFlightHtlcsDecodeErrorZ() && { LDKCResult_InFlightHtlcsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InFlightHtlcsDecodeErrorZ)); return res; }
5665         ~CResult_InFlightHtlcsDecodeErrorZ() { CResult_InFlightHtlcsDecodeErrorZ_free(self); }
5666         CResult_InFlightHtlcsDecodeErrorZ& operator=(CResult_InFlightHtlcsDecodeErrorZ&& o) { CResult_InFlightHtlcsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InFlightHtlcsDecodeErrorZ)); return *this; }
5667         LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() { return &self; }
5668         LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() { return &self; }
5669         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator &() const { return &self; }
5670         const LDKCResult_InFlightHtlcsDecodeErrorZ* operator ->() const { return &self; }
5671 };
5672 class CResult_COption_HTLCDestinationZDecodeErrorZ {
5673 private:
5674         LDKCResult_COption_HTLCDestinationZDecodeErrorZ self;
5675 public:
5676         CResult_COption_HTLCDestinationZDecodeErrorZ(const CResult_COption_HTLCDestinationZDecodeErrorZ&) = delete;
5677         CResult_COption_HTLCDestinationZDecodeErrorZ(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); }
5678         CResult_COption_HTLCDestinationZDecodeErrorZ(LDKCResult_COption_HTLCDestinationZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); }
5679         operator LDKCResult_COption_HTLCDestinationZDecodeErrorZ() && { LDKCResult_COption_HTLCDestinationZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); return res; }
5680         ~CResult_COption_HTLCDestinationZDecodeErrorZ() { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); }
5681         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; }
5682         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() { return &self; }
5683         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() { return &self; }
5684         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() const { return &self; }
5685         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() const { return &self; }
5686 };
5687 class CResult_SiPrefixParseErrorZ {
5688 private:
5689         LDKCResult_SiPrefixParseErrorZ self;
5690 public:
5691         CResult_SiPrefixParseErrorZ(const CResult_SiPrefixParseErrorZ&) = delete;
5692         CResult_SiPrefixParseErrorZ(CResult_SiPrefixParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); }
5693         CResult_SiPrefixParseErrorZ(LDKCResult_SiPrefixParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); }
5694         operator LDKCResult_SiPrefixParseErrorZ() && { LDKCResult_SiPrefixParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); return res; }
5695         ~CResult_SiPrefixParseErrorZ() { CResult_SiPrefixParseErrorZ_free(self); }
5696         CResult_SiPrefixParseErrorZ& operator=(CResult_SiPrefixParseErrorZ&& o) { CResult_SiPrefixParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); return *this; }
5697         LDKCResult_SiPrefixParseErrorZ* operator &() { return &self; }
5698         LDKCResult_SiPrefixParseErrorZ* operator ->() { return &self; }
5699         const LDKCResult_SiPrefixParseErrorZ* operator &() const { return &self; }
5700         const LDKCResult_SiPrefixParseErrorZ* operator ->() const { return &self; }
5701 };
5702 class CResult_BlindedHopDecodeErrorZ {
5703 private:
5704         LDKCResult_BlindedHopDecodeErrorZ self;
5705 public:
5706         CResult_BlindedHopDecodeErrorZ(const CResult_BlindedHopDecodeErrorZ&) = delete;
5707         CResult_BlindedHopDecodeErrorZ(CResult_BlindedHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); }
5708         CResult_BlindedHopDecodeErrorZ(LDKCResult_BlindedHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); }
5709         operator LDKCResult_BlindedHopDecodeErrorZ() && { LDKCResult_BlindedHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopDecodeErrorZ)); return res; }
5710         ~CResult_BlindedHopDecodeErrorZ() { CResult_BlindedHopDecodeErrorZ_free(self); }
5711         CResult_BlindedHopDecodeErrorZ& operator=(CResult_BlindedHopDecodeErrorZ&& o) { CResult_BlindedHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopDecodeErrorZ)); return *this; }
5712         LDKCResult_BlindedHopDecodeErrorZ* operator &() { return &self; }
5713         LDKCResult_BlindedHopDecodeErrorZ* operator ->() { return &self; }
5714         const LDKCResult_BlindedHopDecodeErrorZ* operator &() const { return &self; }
5715         const LDKCResult_BlindedHopDecodeErrorZ* operator ->() const { return &self; }
5716 };
5717 class CResult_TrustedCommitmentTransactionNoneZ {
5718 private:
5719         LDKCResult_TrustedCommitmentTransactionNoneZ self;
5720 public:
5721         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
5722         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
5723         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
5724         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
5725         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
5726         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
5727         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
5728         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
5729         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
5730         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
5731 };
5732 class CResult_FixedPenaltyScorerDecodeErrorZ {
5733 private:
5734         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
5735 public:
5736         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
5737         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
5738         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
5739         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
5740         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
5741         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
5742         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
5743         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
5744         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
5745         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
5746 };
5747 class CResult_NoneLightningErrorZ {
5748 private:
5749         LDKCResult_NoneLightningErrorZ self;
5750 public:
5751         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
5752         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
5753         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
5754         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
5755         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
5756         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
5757         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
5758         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
5759         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
5760         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
5761 };
5762 class CResult_PaymentHashRetryableSendFailureZ {
5763 private:
5764         LDKCResult_PaymentHashRetryableSendFailureZ self;
5765 public:
5766         CResult_PaymentHashRetryableSendFailureZ(const CResult_PaymentHashRetryableSendFailureZ&) = delete;
5767         CResult_PaymentHashRetryableSendFailureZ(CResult_PaymentHashRetryableSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentHashRetryableSendFailureZ)); }
5768         CResult_PaymentHashRetryableSendFailureZ(LDKCResult_PaymentHashRetryableSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentHashRetryableSendFailureZ)); }
5769         operator LDKCResult_PaymentHashRetryableSendFailureZ() && { LDKCResult_PaymentHashRetryableSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentHashRetryableSendFailureZ)); return res; }
5770         ~CResult_PaymentHashRetryableSendFailureZ() { CResult_PaymentHashRetryableSendFailureZ_free(self); }
5771         CResult_PaymentHashRetryableSendFailureZ& operator=(CResult_PaymentHashRetryableSendFailureZ&& o) { CResult_PaymentHashRetryableSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentHashRetryableSendFailureZ)); return *this; }
5772         LDKCResult_PaymentHashRetryableSendFailureZ* operator &() { return &self; }
5773         LDKCResult_PaymentHashRetryableSendFailureZ* operator ->() { return &self; }
5774         const LDKCResult_PaymentHashRetryableSendFailureZ* operator &() const { return &self; }
5775         const LDKCResult_PaymentHashRetryableSendFailureZ* operator ->() const { return &self; }
5776 };
5777 class C2Tuple_PublicKeyCOption_NetAddressZZ {
5778 private:
5779         LDKC2Tuple_PublicKeyCOption_NetAddressZZ self;
5780 public:
5781         C2Tuple_PublicKeyCOption_NetAddressZZ(const C2Tuple_PublicKeyCOption_NetAddressZZ&) = delete;
5782         C2Tuple_PublicKeyCOption_NetAddressZZ(C2Tuple_PublicKeyCOption_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyCOption_NetAddressZZ)); }
5783         C2Tuple_PublicKeyCOption_NetAddressZZ(LDKC2Tuple_PublicKeyCOption_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyCOption_NetAddressZZ)); }
5784         operator LDKC2Tuple_PublicKeyCOption_NetAddressZZ() && { LDKC2Tuple_PublicKeyCOption_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyCOption_NetAddressZZ)); return res; }
5785         ~C2Tuple_PublicKeyCOption_NetAddressZZ() { C2Tuple_PublicKeyCOption_NetAddressZZ_free(self); }
5786         C2Tuple_PublicKeyCOption_NetAddressZZ& operator=(C2Tuple_PublicKeyCOption_NetAddressZZ&& o) { C2Tuple_PublicKeyCOption_NetAddressZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyCOption_NetAddressZZ)); return *this; }
5787         LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator &() { return &self; }
5788         LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator ->() { return &self; }
5789         const LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator &() const { return &self; }
5790         const LDKC2Tuple_PublicKeyCOption_NetAddressZZ* operator ->() const { return &self; }
5791 };
5792 class CResult_COption_EventZDecodeErrorZ {
5793 private:
5794         LDKCResult_COption_EventZDecodeErrorZ self;
5795 public:
5796         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
5797         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
5798         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
5799         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
5800         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
5801         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; }
5802         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
5803         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
5804         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
5805         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
5806 };
5807 class CResult_CVec_SignatureZNoneZ {
5808 private:
5809         LDKCResult_CVec_SignatureZNoneZ self;
5810 public:
5811         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
5812         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
5813         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
5814         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
5815         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
5816         CResult_CVec_SignatureZNoneZ& operator=(CResult_CVec_SignatureZNoneZ&& o) { CResult_CVec_SignatureZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); return *this; }
5817         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
5818         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
5819         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
5820         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
5821 };
5822 class COption_CVec_NetAddressZZ {
5823 private:
5824         LDKCOption_CVec_NetAddressZZ self;
5825 public:
5826         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
5827         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
5828         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
5829         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
5830         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
5831         COption_CVec_NetAddressZZ& operator=(COption_CVec_NetAddressZZ&& o) { COption_CVec_NetAddressZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); return *this; }
5832         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
5833         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
5834         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
5835         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
5836 };
5837 class CResult_NonePeerHandleErrorZ {
5838 private:
5839         LDKCResult_NonePeerHandleErrorZ self;
5840 public:
5841         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
5842         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
5843         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
5844         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
5845         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
5846         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
5847         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
5848         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
5849         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
5850         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
5851 };
5852 class CResult__u832APIErrorZ {
5853 private:
5854         LDKCResult__u832APIErrorZ self;
5855 public:
5856         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
5857         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
5858         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
5859         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
5860         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
5861         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
5862         LDKCResult__u832APIErrorZ* operator &() { return &self; }
5863         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
5864         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
5865         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
5866 };
5867 class CResult_PaymentIdPaymentErrorZ {
5868 private:
5869         LDKCResult_PaymentIdPaymentErrorZ self;
5870 public:
5871         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
5872         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
5873         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
5874         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
5875         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
5876         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
5877         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
5878         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
5879         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
5880         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
5881 };
5882 class CResult_COption_MonitorEventZDecodeErrorZ {
5883 private:
5884         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
5885 public:
5886         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
5887         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
5888         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
5889         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
5890         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
5891         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; }
5892         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
5893         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
5894         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
5895         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
5896 };
5897 class CResult_RoutingFeesDecodeErrorZ {
5898 private:
5899         LDKCResult_RoutingFeesDecodeErrorZ self;
5900 public:
5901         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
5902         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
5903         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
5904         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
5905         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
5906         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
5907         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
5908         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
5909         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
5910         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
5911 };
5912 class CResult_PayeePubKeyErrorZ {
5913 private:
5914         LDKCResult_PayeePubKeyErrorZ self;
5915 public:
5916         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
5917         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
5918         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
5919         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
5920         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
5921         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
5922         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
5923         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
5924         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
5925         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
5926 };
5927 class CResult_DescriptionCreationErrorZ {
5928 private:
5929         LDKCResult_DescriptionCreationErrorZ self;
5930 public:
5931         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
5932         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
5933         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
5934         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
5935         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
5936         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
5937         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
5938         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
5939         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
5940         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
5941 };
5942 class CResult_QueryShortChannelIdsDecodeErrorZ {
5943 private:
5944         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
5945 public:
5946         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
5947         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
5948         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
5949         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
5950         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
5951         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
5952         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
5953         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
5954         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
5955         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
5956 };
5957 class CResult_InvoiceSemanticErrorZ {
5958 private:
5959         LDKCResult_InvoiceSemanticErrorZ self;
5960 public:
5961         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
5962         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
5963         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
5964         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
5965         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
5966         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
5967         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
5968         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
5969         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
5970         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
5971 };
5972 class CResult_UpdateAddHTLCDecodeErrorZ {
5973 private:
5974         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
5975 public:
5976         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
5977         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
5978         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
5979         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
5980         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
5981         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
5982         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
5983         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
5984         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
5985         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
5986 };
5987 class COption_MonitorEventZ {
5988 private:
5989         LDKCOption_MonitorEventZ self;
5990 public:
5991         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
5992         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
5993         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
5994         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
5995         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
5996         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
5997         LDKCOption_MonitorEventZ* operator &() { return &self; }
5998         LDKCOption_MonitorEventZ* operator ->() { return &self; }
5999         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
6000         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
6001 };
6002 class COption_TypeZ {
6003 private:
6004         LDKCOption_TypeZ self;
6005 public:
6006         COption_TypeZ(const COption_TypeZ&) = delete;
6007         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
6008         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
6009         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
6010         ~COption_TypeZ() { COption_TypeZ_free(self); }
6011         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
6012         LDKCOption_TypeZ* operator &() { return &self; }
6013         LDKCOption_TypeZ* operator ->() { return &self; }
6014         const LDKCOption_TypeZ* operator &() const { return &self; }
6015         const LDKCOption_TypeZ* operator ->() const { return &self; }
6016 };
6017 class CResult_COption_TypeZDecodeErrorZ {
6018 private:
6019         LDKCResult_COption_TypeZDecodeErrorZ self;
6020 public:
6021         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
6022         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
6023         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
6024         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
6025         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
6026         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; }
6027         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
6028         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
6029         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
6030         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
6031 };
6032 class CResult_COption_PathFailureZDecodeErrorZ {
6033 private:
6034         LDKCResult_COption_PathFailureZDecodeErrorZ self;
6035 public:
6036         CResult_COption_PathFailureZDecodeErrorZ(const CResult_COption_PathFailureZDecodeErrorZ&) = delete;
6037         CResult_COption_PathFailureZDecodeErrorZ(CResult_COption_PathFailureZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_PathFailureZDecodeErrorZ)); }
6038         CResult_COption_PathFailureZDecodeErrorZ(LDKCResult_COption_PathFailureZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); }
6039         operator LDKCResult_COption_PathFailureZDecodeErrorZ() && { LDKCResult_COption_PathFailureZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_PathFailureZDecodeErrorZ)); return res; }
6040         ~CResult_COption_PathFailureZDecodeErrorZ() { CResult_COption_PathFailureZDecodeErrorZ_free(self); }
6041         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; }
6042         LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() { return &self; }
6043         LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() { return &self; }
6044         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator &() const { return &self; }
6045         const LDKCResult_COption_PathFailureZDecodeErrorZ* operator ->() const { return &self; }
6046 };
6047 class CResult_UpdateFailHTLCDecodeErrorZ {
6048 private:
6049         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
6050 public:
6051         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
6052         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
6053         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
6054         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
6055         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
6056         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
6057         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
6058         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
6059         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
6060         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
6061 };
6062 class CResult_InvoiceParseOrSemanticErrorZ {
6063 private:
6064         LDKCResult_InvoiceParseOrSemanticErrorZ self;
6065 public:
6066         CResult_InvoiceParseOrSemanticErrorZ(const CResult_InvoiceParseOrSemanticErrorZ&) = delete;
6067         CResult_InvoiceParseOrSemanticErrorZ(CResult_InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); }
6068         CResult_InvoiceParseOrSemanticErrorZ(LDKCResult_InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); }
6069         operator LDKCResult_InvoiceParseOrSemanticErrorZ() && { LDKCResult_InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); return res; }
6070         ~CResult_InvoiceParseOrSemanticErrorZ() { CResult_InvoiceParseOrSemanticErrorZ_free(self); }
6071         CResult_InvoiceParseOrSemanticErrorZ& operator=(CResult_InvoiceParseOrSemanticErrorZ&& o) { CResult_InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); return *this; }
6072         LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
6073         LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
6074         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
6075         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
6076 };
6077 class CResult_RevokeAndACKDecodeErrorZ {
6078 private:
6079         LDKCResult_RevokeAndACKDecodeErrorZ self;
6080 public:
6081         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
6082         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
6083         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
6084         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
6085         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
6086         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
6087         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
6088         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
6089         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
6090         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
6091 };
6092 class CResult_SpendableOutputDescriptorDecodeErrorZ {
6093 private:
6094         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
6095 public:
6096         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
6097         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
6098         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
6099         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
6100         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
6101         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
6102         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6103         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6104         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6105         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6106 };
6107 class CResult_UnsignedChannelUpdateDecodeErrorZ {
6108 private:
6109         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
6110 public:
6111         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
6112         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
6113         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
6114         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
6115         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
6116         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
6117         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
6118         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6119         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6120         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6121 };
6122 class CVec_EventZ {
6123 private:
6124         LDKCVec_EventZ self;
6125 public:
6126         CVec_EventZ(const CVec_EventZ&) = delete;
6127         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
6128         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
6129         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
6130         ~CVec_EventZ() { CVec_EventZ_free(self); }
6131         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
6132         LDKCVec_EventZ* operator &() { return &self; }
6133         LDKCVec_EventZ* operator ->() { return &self; }
6134         const LDKCVec_EventZ* operator &() const { return &self; }
6135         const LDKCVec_EventZ* operator ->() const { return &self; }
6136 };
6137 class CResult_NoneSemanticErrorZ {
6138 private:
6139         LDKCResult_NoneSemanticErrorZ self;
6140 public:
6141         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
6142         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
6143         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
6144         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
6145         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
6146         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
6147         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
6148         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
6149         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
6150         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
6151 };
6152 class CVec_C2Tuple_u32ScriptZZ {
6153 private:
6154         LDKCVec_C2Tuple_u32ScriptZZ self;
6155 public:
6156         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
6157         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
6158         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
6159         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
6160         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
6161         CVec_C2Tuple_u32ScriptZZ& operator=(CVec_C2Tuple_u32ScriptZZ&& o) { CVec_C2Tuple_u32ScriptZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); return *this; }
6162         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
6163         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
6164         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
6165         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
6166 };
6167 class CResult_COption_ClosureReasonZDecodeErrorZ {
6168 private:
6169         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
6170 public:
6171         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
6172         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
6173         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
6174         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
6175         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
6176         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; }
6177         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
6178         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
6179         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
6180         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
6181 };
6182 class CResult_PaymentHashPaymentSendFailureZ {
6183 private:
6184         LDKCResult_PaymentHashPaymentSendFailureZ self;
6185 public:
6186         CResult_PaymentHashPaymentSendFailureZ(const CResult_PaymentHashPaymentSendFailureZ&) = delete;
6187         CResult_PaymentHashPaymentSendFailureZ(CResult_PaymentHashPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); }
6188         CResult_PaymentHashPaymentSendFailureZ(LDKCResult_PaymentHashPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); }
6189         operator LDKCResult_PaymentHashPaymentSendFailureZ() && { LDKCResult_PaymentHashPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentHashPaymentSendFailureZ)); return res; }
6190         ~CResult_PaymentHashPaymentSendFailureZ() { CResult_PaymentHashPaymentSendFailureZ_free(self); }
6191         CResult_PaymentHashPaymentSendFailureZ& operator=(CResult_PaymentHashPaymentSendFailureZ&& o) { CResult_PaymentHashPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentHashPaymentSendFailureZ)); return *this; }
6192         LDKCResult_PaymentHashPaymentSendFailureZ* operator &() { return &self; }
6193         LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() { return &self; }
6194         const LDKCResult_PaymentHashPaymentSendFailureZ* operator &() const { return &self; }
6195         const LDKCResult_PaymentHashPaymentSendFailureZ* operator ->() const { return &self; }
6196 };
6197 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
6198 private:
6199         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
6200 public:
6201         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
6202         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6203         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6204         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
6205         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
6206         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
6207         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
6208         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
6209         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
6210         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
6211 };
6212 class CResult_RouteParametersDecodeErrorZ {
6213 private:
6214         LDKCResult_RouteParametersDecodeErrorZ self;
6215 public:
6216         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
6217         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
6218         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
6219         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
6220         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
6221         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
6222         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
6223         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
6224         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
6225         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
6226 };
6227 class CResult_PrivateRouteCreationErrorZ {
6228 private:
6229         LDKCResult_PrivateRouteCreationErrorZ self;
6230 public:
6231         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
6232         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
6233         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
6234         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
6235         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
6236         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
6237         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
6238         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
6239         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
6240         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
6241 };
6242 class CResult_NodeAliasDecodeErrorZ {
6243 private:
6244         LDKCResult_NodeAliasDecodeErrorZ self;
6245 public:
6246         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
6247         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
6248         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
6249         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
6250         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
6251         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
6252         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
6253         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
6254         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
6255         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
6256 };
6257 class CVec_UpdateFulfillHTLCZ {
6258 private:
6259         LDKCVec_UpdateFulfillHTLCZ self;
6260 public:
6261         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
6262         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
6263         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
6264         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
6265         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
6266         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
6267         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
6268         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
6269         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
6270         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
6271 };
6272 class CResult_AnnouncementSignaturesDecodeErrorZ {
6273 private:
6274         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
6275 public:
6276         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
6277         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
6278         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
6279         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
6280         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
6281         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
6282         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
6283         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
6284         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
6285         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
6286 };
6287 class CResult_UpdateFulfillHTLCDecodeErrorZ {
6288 private:
6289         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
6290 public:
6291         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
6292         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
6293         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
6294         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
6295         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
6296         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
6297         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
6298         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
6299         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
6300         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
6301 };
6302 class CResult_NodeFeaturesDecodeErrorZ {
6303 private:
6304         LDKCResult_NodeFeaturesDecodeErrorZ self;
6305 public:
6306         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
6307         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
6308         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
6309         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
6310         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
6311         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
6312         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
6313         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
6314         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
6315         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
6316 };
6317 class CResult_InMemorySignerDecodeErrorZ {
6318 private:
6319         LDKCResult_InMemorySignerDecodeErrorZ self;
6320 public:
6321         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
6322         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
6323         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
6324         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
6325         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
6326         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
6327         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
6328         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
6329         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
6330         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
6331 };
6332 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
6333 private:
6334         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
6335 public:
6336         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
6337         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6338         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6339         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
6340         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
6341         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
6342         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
6343         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
6344         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
6345         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
6346 };
6347 class COption_PathFailureZ {
6348 private:
6349         LDKCOption_PathFailureZ self;
6350 public:
6351         COption_PathFailureZ(const COption_PathFailureZ&) = delete;
6352         COption_PathFailureZ(COption_PathFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_PathFailureZ)); }
6353         COption_PathFailureZ(LDKCOption_PathFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_PathFailureZ)); }
6354         operator LDKCOption_PathFailureZ() && { LDKCOption_PathFailureZ res = self; memset(&self, 0, sizeof(LDKCOption_PathFailureZ)); return res; }
6355         ~COption_PathFailureZ() { COption_PathFailureZ_free(self); }
6356         COption_PathFailureZ& operator=(COption_PathFailureZ&& o) { COption_PathFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_PathFailureZ)); return *this; }
6357         LDKCOption_PathFailureZ* operator &() { return &self; }
6358         LDKCOption_PathFailureZ* operator ->() { return &self; }
6359         const LDKCOption_PathFailureZ* operator &() const { return &self; }
6360         const LDKCOption_PathFailureZ* operator ->() const { return &self; }
6361 };
6362 class COption_ScalarZ {
6363 private:
6364         LDKCOption_ScalarZ self;
6365 public:
6366         COption_ScalarZ(const COption_ScalarZ&) = delete;
6367         COption_ScalarZ(COption_ScalarZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ScalarZ)); }
6368         COption_ScalarZ(LDKCOption_ScalarZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ScalarZ)); }
6369         operator LDKCOption_ScalarZ() && { LDKCOption_ScalarZ res = self; memset(&self, 0, sizeof(LDKCOption_ScalarZ)); return res; }
6370         ~COption_ScalarZ() { COption_ScalarZ_free(self); }
6371         COption_ScalarZ& operator=(COption_ScalarZ&& o) { COption_ScalarZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ScalarZ)); return *this; }
6372         LDKCOption_ScalarZ* operator &() { return &self; }
6373         LDKCOption_ScalarZ* operator ->() { return &self; }
6374         const LDKCOption_ScalarZ* operator &() const { return &self; }
6375         const LDKCOption_ScalarZ* operator ->() const { return &self; }
6376 };
6377 class CResult_ChannelUpdateInfoDecodeErrorZ {
6378 private:
6379         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
6380 public:
6381         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
6382         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
6383         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
6384         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
6385         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
6386         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
6387         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
6388         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
6389         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
6390         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
6391 };
6392 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
6393 private:
6394         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
6395 public:
6396         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
6397         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6398         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6399         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
6400         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
6401         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
6402         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
6403         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
6404         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
6405         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
6406 };
6407 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
6408 private:
6409         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
6410 public:
6411         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
6412         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6413         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6414         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
6415         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
6416         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ& operator=(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return *this; }
6417         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
6418         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
6419         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
6420         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
6421 };
6422 class CVec_TxOutZ {
6423 private:
6424         LDKCVec_TxOutZ self;
6425 public:
6426         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
6427         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
6428         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
6429         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
6430         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
6431         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
6432         LDKCVec_TxOutZ* operator &() { return &self; }
6433         LDKCVec_TxOutZ* operator ->() { return &self; }
6434         const LDKCVec_TxOutZ* operator &() const { return &self; }
6435         const LDKCVec_TxOutZ* operator ->() const { return &self; }
6436 };
6437 class CVec_UpdateFailHTLCZ {
6438 private:
6439         LDKCVec_UpdateFailHTLCZ self;
6440 public:
6441         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
6442         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
6443         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
6444         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
6445         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
6446         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
6447         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
6448         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
6449         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
6450         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
6451 };
6452 class CVec_SpendableOutputDescriptorZ {
6453 private:
6454         LDKCVec_SpendableOutputDescriptorZ self;
6455 public:
6456         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
6457         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
6458         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
6459         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
6460         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
6461         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
6462         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
6463         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
6464         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
6465         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
6466 };
6467 class COption_C2Tuple_u64u64ZZ {
6468 private:
6469         LDKCOption_C2Tuple_u64u64ZZ self;
6470 public:
6471         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
6472         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
6473         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
6474         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
6475         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
6476         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; }
6477         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
6478         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
6479         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
6480         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
6481 };
6482 class CResult_ChannelAnnouncementDecodeErrorZ {
6483 private:
6484         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
6485 public:
6486         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
6487         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
6488         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
6489         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
6490         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
6491         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
6492         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
6493         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
6494         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
6495         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6496 };
6497 class CResult_HTLCUpdateDecodeErrorZ {
6498 private:
6499         LDKCResult_HTLCUpdateDecodeErrorZ self;
6500 public:
6501         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
6502         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
6503         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
6504         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
6505         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
6506         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
6507         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
6508         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
6509         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
6510         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
6511 };
6512 class C2Tuple_SignatureCVec_SignatureZZ {
6513 private:
6514         LDKC2Tuple_SignatureCVec_SignatureZZ self;
6515 public:
6516         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
6517         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
6518         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
6519         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
6520         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
6521         C2Tuple_SignatureCVec_SignatureZZ& operator=(C2Tuple_SignatureCVec_SignatureZZ&& o) { C2Tuple_SignatureCVec_SignatureZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); return *this; }
6522         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
6523         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
6524         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
6525         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
6526 };
6527 class CVec_OutPointZ {
6528 private:
6529         LDKCVec_OutPointZ self;
6530 public:
6531         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
6532         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
6533         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
6534         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
6535         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
6536         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
6537         LDKCVec_OutPointZ* operator &() { return &self; }
6538         LDKCVec_OutPointZ* operator ->() { return &self; }
6539         const LDKCVec_OutPointZ* operator &() const { return &self; }
6540         const LDKCVec_OutPointZ* operator ->() const { return &self; }
6541 };
6542 class COption_WriteableScoreZ {
6543 private:
6544         LDKCOption_WriteableScoreZ self;
6545 public:
6546         COption_WriteableScoreZ(const COption_WriteableScoreZ&) = delete;
6547         COption_WriteableScoreZ(COption_WriteableScoreZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_WriteableScoreZ)); }
6548         COption_WriteableScoreZ(LDKCOption_WriteableScoreZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_WriteableScoreZ)); }
6549         operator LDKCOption_WriteableScoreZ() && { LDKCOption_WriteableScoreZ res = self; memset(&self, 0, sizeof(LDKCOption_WriteableScoreZ)); return res; }
6550         ~COption_WriteableScoreZ() { COption_WriteableScoreZ_free(self); }
6551         COption_WriteableScoreZ& operator=(COption_WriteableScoreZ&& o) { COption_WriteableScoreZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_WriteableScoreZ)); return *this; }
6552         LDKCOption_WriteableScoreZ* operator &() { return &self; }
6553         LDKCOption_WriteableScoreZ* operator ->() { return &self; }
6554         const LDKCOption_WriteableScoreZ* operator &() const { return &self; }
6555         const LDKCOption_WriteableScoreZ* operator ->() const { return &self; }
6556 };
6557 class CResult_PositiveTimestampCreationErrorZ {
6558 private:
6559         LDKCResult_PositiveTimestampCreationErrorZ self;
6560 public:
6561         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
6562         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
6563         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
6564         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
6565         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
6566         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
6567         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
6568         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
6569         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
6570         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
6571 };
6572 class C2Tuple__u168_u168Z {
6573 private:
6574         LDKC2Tuple__u168_u168Z self;
6575 public:
6576         C2Tuple__u168_u168Z(const C2Tuple__u168_u168Z&) = delete;
6577         C2Tuple__u168_u168Z(C2Tuple__u168_u168Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple__u168_u168Z)); }
6578         C2Tuple__u168_u168Z(LDKC2Tuple__u168_u168Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple__u168_u168Z)); }
6579         operator LDKC2Tuple__u168_u168Z() && { LDKC2Tuple__u168_u168Z res = self; memset(&self, 0, sizeof(LDKC2Tuple__u168_u168Z)); return res; }
6580         ~C2Tuple__u168_u168Z() { C2Tuple__u168_u168Z_free(self); }
6581         C2Tuple__u168_u168Z& operator=(C2Tuple__u168_u168Z&& o) { C2Tuple__u168_u168Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple__u168_u168Z)); return *this; }
6582         LDKC2Tuple__u168_u168Z* operator &() { return &self; }
6583         LDKC2Tuple__u168_u168Z* operator ->() { return &self; }
6584         const LDKC2Tuple__u168_u168Z* operator &() const { return &self; }
6585         const LDKC2Tuple__u168_u168Z* operator ->() const { return &self; }
6586 };
6587 class CResult_InvoiceFeaturesDecodeErrorZ {
6588 private:
6589         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
6590 public:
6591         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
6592         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
6593         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
6594         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
6595         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
6596         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
6597         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
6598         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
6599         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
6600         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
6601 };
6602 class CResult_ChannelMonitorUpdateDecodeErrorZ {
6603 private:
6604         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
6605 public:
6606         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
6607         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
6608         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
6609         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
6610         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
6611         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
6612         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
6613         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
6614         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
6615         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
6616 };
6617 class CResult_ReplyChannelRangeDecodeErrorZ {
6618 private:
6619         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
6620 public:
6621         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
6622         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
6623         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
6624         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
6625         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
6626         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
6627         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
6628         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
6629         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
6630         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
6631 };
6632 class CResult_InvoiceSignOrCreationErrorZ {
6633 private:
6634         LDKCResult_InvoiceSignOrCreationErrorZ self;
6635 public:
6636         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
6637         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
6638         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
6639         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
6640         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
6641         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
6642         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
6643         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
6644         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
6645         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
6646 };
6647 class CResult_TrustedClosingTransactionNoneZ {
6648 private:
6649         LDKCResult_TrustedClosingTransactionNoneZ self;
6650 public:
6651         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
6652         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
6653         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
6654         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
6655         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
6656         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
6657         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
6658         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
6659         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
6660         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
6661 };
6662 class CResult_NetAddressDecodeErrorZ {
6663 private:
6664         LDKCResult_NetAddressDecodeErrorZ self;
6665 public:
6666         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
6667         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
6668         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
6669         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
6670         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
6671         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
6672         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
6673         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
6674         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
6675         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
6676 };
6677 class C2Tuple_PublicKeyTypeZ {
6678 private:
6679         LDKC2Tuple_PublicKeyTypeZ self;
6680 public:
6681         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
6682         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
6683         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
6684         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
6685         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
6686         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
6687         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
6688         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
6689         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
6690         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
6691 };
6692 class CResult_ChannelReestablishDecodeErrorZ {
6693 private:
6694         LDKCResult_ChannelReestablishDecodeErrorZ self;
6695 public:
6696         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
6697         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
6698         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
6699         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
6700         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
6701         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
6702         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
6703         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
6704         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
6705         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
6706 };
6707 class CResult_OnionMessageDecodeErrorZ {
6708 private:
6709         LDKCResult_OnionMessageDecodeErrorZ self;
6710 public:
6711         CResult_OnionMessageDecodeErrorZ(const CResult_OnionMessageDecodeErrorZ&) = delete;
6712         CResult_OnionMessageDecodeErrorZ(CResult_OnionMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); }
6713         CResult_OnionMessageDecodeErrorZ(LDKCResult_OnionMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); }
6714         operator LDKCResult_OnionMessageDecodeErrorZ() && { LDKCResult_OnionMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OnionMessageDecodeErrorZ)); return res; }
6715         ~CResult_OnionMessageDecodeErrorZ() { CResult_OnionMessageDecodeErrorZ_free(self); }
6716         CResult_OnionMessageDecodeErrorZ& operator=(CResult_OnionMessageDecodeErrorZ&& o) { CResult_OnionMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OnionMessageDecodeErrorZ)); return *this; }
6717         LDKCResult_OnionMessageDecodeErrorZ* operator &() { return &self; }
6718         LDKCResult_OnionMessageDecodeErrorZ* operator ->() { return &self; }
6719         const LDKCResult_OnionMessageDecodeErrorZ* operator &() const { return &self; }
6720         const LDKCResult_OnionMessageDecodeErrorZ* operator ->() const { return &self; }
6721 };
6722 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
6723 private:
6724         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
6725 public:
6726         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
6727         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
6728         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
6729         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
6730         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
6731         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
6732         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
6733         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
6734         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
6735         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6736 };
6737 class CResult_InitFeaturesDecodeErrorZ {
6738 private:
6739         LDKCResult_InitFeaturesDecodeErrorZ self;
6740 public:
6741         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
6742         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
6743         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
6744         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
6745         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
6746         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
6747         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
6748         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
6749         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
6750         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
6751 };
6752 class CResult_PublicKeyNoneZ {
6753 private:
6754         LDKCResult_PublicKeyNoneZ self;
6755 public:
6756         CResult_PublicKeyNoneZ(const CResult_PublicKeyNoneZ&) = delete;
6757         CResult_PublicKeyNoneZ(CResult_PublicKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); }
6758         CResult_PublicKeyNoneZ(LDKCResult_PublicKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); }
6759         operator LDKCResult_PublicKeyNoneZ() && { LDKCResult_PublicKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyNoneZ)); return res; }
6760         ~CResult_PublicKeyNoneZ() { CResult_PublicKeyNoneZ_free(self); }
6761         CResult_PublicKeyNoneZ& operator=(CResult_PublicKeyNoneZ&& o) { CResult_PublicKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyNoneZ)); return *this; }
6762         LDKCResult_PublicKeyNoneZ* operator &() { return &self; }
6763         LDKCResult_PublicKeyNoneZ* operator ->() { return &self; }
6764         const LDKCResult_PublicKeyNoneZ* operator &() const { return &self; }
6765         const LDKCResult_PublicKeyNoneZ* operator ->() const { return &self; }
6766 };
6767 class CResult_PingDecodeErrorZ {
6768 private:
6769         LDKCResult_PingDecodeErrorZ self;
6770 public:
6771         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
6772         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
6773         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
6774         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
6775         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
6776         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
6777         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
6778         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
6779         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
6780         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
6781 };
6782 class CResult_BlindedHopFeaturesDecodeErrorZ {
6783 private:
6784         LDKCResult_BlindedHopFeaturesDecodeErrorZ self;
6785 public:
6786         CResult_BlindedHopFeaturesDecodeErrorZ(const CResult_BlindedHopFeaturesDecodeErrorZ&) = delete;
6787         CResult_BlindedHopFeaturesDecodeErrorZ(CResult_BlindedHopFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); }
6788         CResult_BlindedHopFeaturesDecodeErrorZ(LDKCResult_BlindedHopFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); }
6789         operator LDKCResult_BlindedHopFeaturesDecodeErrorZ() && { LDKCResult_BlindedHopFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedHopFeaturesDecodeErrorZ)); return res; }
6790         ~CResult_BlindedHopFeaturesDecodeErrorZ() { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); }
6791         CResult_BlindedHopFeaturesDecodeErrorZ& operator=(CResult_BlindedHopFeaturesDecodeErrorZ&& o) { CResult_BlindedHopFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedHopFeaturesDecodeErrorZ)); return *this; }
6792         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() { return &self; }
6793         LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() { return &self; }
6794         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator &() const { return &self; }
6795         const LDKCResult_BlindedHopFeaturesDecodeErrorZ* operator ->() const { return &self; }
6796 };
6797 class CVec_TransactionOutputsZ {
6798 private:
6799         LDKCVec_TransactionOutputsZ self;
6800 public:
6801         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
6802         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
6803         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
6804         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
6805         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
6806         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
6807         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
6808         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
6809         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
6810         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
6811 };
6812 class COption_HTLCClaimZ {
6813 private:
6814         LDKCOption_HTLCClaimZ self;
6815 public:
6816         COption_HTLCClaimZ(const COption_HTLCClaimZ&) = delete;
6817         COption_HTLCClaimZ(COption_HTLCClaimZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCClaimZ)); }
6818         COption_HTLCClaimZ(LDKCOption_HTLCClaimZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCClaimZ)); }
6819         operator LDKCOption_HTLCClaimZ() && { LDKCOption_HTLCClaimZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCClaimZ)); return res; }
6820         ~COption_HTLCClaimZ() { COption_HTLCClaimZ_free(self); }
6821         COption_HTLCClaimZ& operator=(COption_HTLCClaimZ&& o) { COption_HTLCClaimZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCClaimZ)); return *this; }
6822         LDKCOption_HTLCClaimZ* operator &() { return &self; }
6823         LDKCOption_HTLCClaimZ* operator ->() { return &self; }
6824         const LDKCOption_HTLCClaimZ* operator &() const { return &self; }
6825         const LDKCOption_HTLCClaimZ* operator ->() const { return &self; }
6826 };
6827 class CVec_CVec_u8ZZ {
6828 private:
6829         LDKCVec_CVec_u8ZZ self;
6830 public:
6831         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
6832         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
6833         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
6834         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
6835         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
6836         CVec_CVec_u8ZZ& operator=(CVec_CVec_u8ZZ&& o) { CVec_CVec_u8ZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); return *this; }
6837         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
6838         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
6839         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
6840         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
6841 };
6842 class CResult_COption_CustomOnionMessageContentsZDecodeErrorZ {
6843 private:
6844         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ self;
6845 public:
6846         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(const CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&) = delete;
6847         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
6848         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); }
6849         operator LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ() && { LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); return res; }
6850         ~CResult_COption_CustomOnionMessageContentsZDecodeErrorZ() { CResult_COption_CustomOnionMessageContentsZDecodeErrorZ_free(self); }
6851         CResult_COption_CustomOnionMessageContentsZDecodeErrorZ& operator=(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ&& o) { CResult_COption_CustomOnionMessageContentsZDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_COption_CustomOnionMessageContentsZDecodeErrorZ)); return *this; }
6852         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() { return &self; }
6853         LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() { return &self; }
6854         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator &() const { return &self; }
6855         const LDKCResult_COption_CustomOnionMessageContentsZDecodeErrorZ* operator ->() const { return &self; }
6856 };
6857 class CResult_ShutdownScriptDecodeErrorZ {
6858 private:
6859         LDKCResult_ShutdownScriptDecodeErrorZ self;
6860 public:
6861         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
6862         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
6863         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
6864         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
6865         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
6866         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
6867         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
6868         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
6869         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
6870         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
6871 };
6872 class CResult_ProbabilisticScorerDecodeErrorZ {
6873 private:
6874         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
6875 public:
6876         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
6877         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
6878         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
6879         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
6880         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
6881         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
6882         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
6883         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
6884         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
6885         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
6886 };
6887 class CResult_TxCreationKeysDecodeErrorZ {
6888 private:
6889         LDKCResult_TxCreationKeysDecodeErrorZ self;
6890 public:
6891         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
6892         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
6893         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
6894         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
6895         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
6896         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
6897         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
6898         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
6899         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
6900         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
6901 };
6902 class C2Tuple_usizeTransactionZ {
6903 private:
6904         LDKC2Tuple_usizeTransactionZ self;
6905 public:
6906         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
6907         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
6908         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
6909         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
6910         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
6911         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
6912         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
6913         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
6914         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
6915         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
6916 };
6917 class CResult_NodeAnnouncementDecodeErrorZ {
6918 private:
6919         LDKCResult_NodeAnnouncementDecodeErrorZ self;
6920 public:
6921         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
6922         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
6923         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
6924         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
6925         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
6926         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
6927         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
6928         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
6929         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
6930         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
6931 };
6932 class CResult_BlindedPathDecodeErrorZ {
6933 private:
6934         LDKCResult_BlindedPathDecodeErrorZ self;
6935 public:
6936         CResult_BlindedPathDecodeErrorZ(const CResult_BlindedPathDecodeErrorZ&) = delete;
6937         CResult_BlindedPathDecodeErrorZ(CResult_BlindedPathDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); }
6938         CResult_BlindedPathDecodeErrorZ(LDKCResult_BlindedPathDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); }
6939         operator LDKCResult_BlindedPathDecodeErrorZ() && { LDKCResult_BlindedPathDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathDecodeErrorZ)); return res; }
6940         ~CResult_BlindedPathDecodeErrorZ() { CResult_BlindedPathDecodeErrorZ_free(self); }
6941         CResult_BlindedPathDecodeErrorZ& operator=(CResult_BlindedPathDecodeErrorZ&& o) { CResult_BlindedPathDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathDecodeErrorZ)); return *this; }
6942         LDKCResult_BlindedPathDecodeErrorZ* operator &() { return &self; }
6943         LDKCResult_BlindedPathDecodeErrorZ* operator ->() { return &self; }
6944         const LDKCResult_BlindedPathDecodeErrorZ* operator &() const { return &self; }
6945         const LDKCResult_BlindedPathDecodeErrorZ* operator ->() const { return &self; }
6946 };
6947 class CVec_ChannelMonitorZ {
6948 private:
6949         LDKCVec_ChannelMonitorZ self;
6950 public:
6951         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
6952         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
6953         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
6954         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
6955         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
6956         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
6957         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
6958         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
6959         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
6960         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
6961 };
6962 class CResult_RouteHopDecodeErrorZ {
6963 private:
6964         LDKCResult_RouteHopDecodeErrorZ self;
6965 public:
6966         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
6967         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
6968         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
6969         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
6970         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
6971         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
6972         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
6973         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
6974         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
6975         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
6976 };
6977 class CVec_BalanceZ {
6978 private:
6979         LDKCVec_BalanceZ self;
6980 public:
6981         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
6982         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
6983         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
6984         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
6985         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
6986         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
6987         LDKCVec_BalanceZ* operator &() { return &self; }
6988         LDKCVec_BalanceZ* operator ->() { return &self; }
6989         const LDKCVec_BalanceZ* operator &() const { return &self; }
6990         const LDKCVec_BalanceZ* operator ->() const { return &self; }
6991 };
6992 class CResult_FundingSignedDecodeErrorZ {
6993 private:
6994         LDKCResult_FundingSignedDecodeErrorZ self;
6995 public:
6996         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
6997         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
6998         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
6999         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
7000         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
7001         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
7002         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
7003         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
7004         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
7005         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
7006 };
7007 class CResult_RecoverableSignatureNoneZ {
7008 private:
7009         LDKCResult_RecoverableSignatureNoneZ self;
7010 public:
7011         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
7012         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
7013         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
7014         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
7015         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
7016         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
7017         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
7018         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
7019         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
7020         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
7021 };
7022 class C2Tuple_Z {
7023 private:
7024         LDKC2Tuple_Z self;
7025 public:
7026         C2Tuple_Z(const C2Tuple_Z&) = delete;
7027         C2Tuple_Z(C2Tuple_Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_Z)); }
7028         C2Tuple_Z(LDKC2Tuple_Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_Z)); }
7029         operator LDKC2Tuple_Z() && { LDKC2Tuple_Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_Z)); return res; }
7030         ~C2Tuple_Z() { C2Tuple_Z_free(self); }
7031         C2Tuple_Z& operator=(C2Tuple_Z&& o) { C2Tuple_Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_Z)); return *this; }
7032         LDKC2Tuple_Z* operator &() { return &self; }
7033         LDKC2Tuple_Z* operator ->() { return &self; }
7034         const LDKC2Tuple_Z* operator &() const { return &self; }
7035         const LDKC2Tuple_Z* operator ->() const { return &self; }
7036 };
7037 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
7038 private:
7039         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
7040 public:
7041         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
7042         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
7043         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
7044         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
7045         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
7046         C3Tuple_RawInvoice_u832InvoiceSignatureZ& operator=(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); return *this; }
7047         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
7048         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
7049         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
7050         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
7051 };
7052 class CResult_NetworkGraphDecodeErrorZ {
7053 private:
7054         LDKCResult_NetworkGraphDecodeErrorZ self;
7055 public:
7056         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
7057         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
7058         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
7059         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
7060         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
7061         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
7062         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
7063         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
7064         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
7065         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
7066 };
7067 class CResult_NodeInfoDecodeErrorZ {
7068 private:
7069         LDKCResult_NodeInfoDecodeErrorZ self;
7070 public:
7071         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
7072         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
7073         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
7074         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
7075         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
7076         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
7077         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
7078         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
7079         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
7080         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
7081 };
7082 class CVec_NodeIdZ {
7083 private:
7084         LDKCVec_NodeIdZ self;
7085 public:
7086         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
7087         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
7088         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
7089         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
7090         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
7091         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
7092         LDKCVec_NodeIdZ* operator &() { return &self; }
7093         LDKCVec_NodeIdZ* operator ->() { return &self; }
7094         const LDKCVec_NodeIdZ* operator &() const { return &self; }
7095         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
7096 };
7097 class CResult_RouteLightningErrorZ {
7098 private:
7099         LDKCResult_RouteLightningErrorZ self;
7100 public:
7101         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
7102         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
7103         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
7104         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
7105         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
7106         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
7107         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
7108         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
7109         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
7110         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
7111 };
7112 class CResult_ChannelPublicKeysDecodeErrorZ {
7113 private:
7114         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
7115 public:
7116         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
7117         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
7118         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
7119         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
7120         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
7121         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
7122         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
7123         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
7124         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
7125         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
7126 };
7127 class CVec_u8Z {
7128 private:
7129         LDKCVec_u8Z self;
7130 public:
7131         CVec_u8Z(const CVec_u8Z&) = delete;
7132         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
7133         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
7134         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
7135         ~CVec_u8Z() { CVec_u8Z_free(self); }
7136         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
7137         LDKCVec_u8Z* operator &() { return &self; }
7138         LDKCVec_u8Z* operator ->() { return &self; }
7139         const LDKCVec_u8Z* operator &() const { return &self; }
7140         const LDKCVec_u8Z* operator ->() const { return &self; }
7141 };
7142 class CResult_NonePaymentSendFailureZ {
7143 private:
7144         LDKCResult_NonePaymentSendFailureZ self;
7145 public:
7146         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
7147         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
7148         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
7149         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
7150         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
7151         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
7152         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
7153         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
7154         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
7155         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
7156 };
7157 class CResult_HolderCommitmentTransactionDecodeErrorZ {
7158 private:
7159         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
7160 public:
7161         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
7162         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
7163         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
7164         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
7165         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
7166         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
7167         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
7168         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
7169         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
7170         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
7171 };
7172 class CResult_WarningMessageDecodeErrorZ {
7173 private:
7174         LDKCResult_WarningMessageDecodeErrorZ self;
7175 public:
7176         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
7177         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
7178         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
7179         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
7180         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
7181         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
7182         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
7183         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
7184         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
7185         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
7186 };
7187 class CResult_ChannelCounterpartyDecodeErrorZ {
7188 private:
7189         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
7190 public:
7191         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
7192         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
7193         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
7194         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
7195         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
7196         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
7197         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
7198         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
7199         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
7200         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
7201 };
7202 class CResult_SignatureNoneZ {
7203 private:
7204         LDKCResult_SignatureNoneZ self;
7205 public:
7206         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
7207         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
7208         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
7209         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
7210         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
7211         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
7212         LDKCResult_SignatureNoneZ* operator &() { return &self; }
7213         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
7214         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
7215         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
7216 };
7217 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
7218 private:
7219         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
7220 public:
7221         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
7222         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
7223         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
7224         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
7225         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
7226         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ& operator=(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return *this; }
7227         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
7228         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
7229         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
7230         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
7231 };
7232 class CResult_InitDecodeErrorZ {
7233 private:
7234         LDKCResult_InitDecodeErrorZ self;
7235 public:
7236         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
7237         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
7238         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
7239         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
7240         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
7241         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
7242         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
7243         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
7244         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
7245         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
7246 };
7247 class CVec_MonitorUpdateIdZ {
7248 private:
7249         LDKCVec_MonitorUpdateIdZ self;
7250 public:
7251         CVec_MonitorUpdateIdZ(const CVec_MonitorUpdateIdZ&) = delete;
7252         CVec_MonitorUpdateIdZ(CVec_MonitorUpdateIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); }
7253         CVec_MonitorUpdateIdZ(LDKCVec_MonitorUpdateIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); }
7254         operator LDKCVec_MonitorUpdateIdZ() && { LDKCVec_MonitorUpdateIdZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorUpdateIdZ)); return res; }
7255         ~CVec_MonitorUpdateIdZ() { CVec_MonitorUpdateIdZ_free(self); }
7256         CVec_MonitorUpdateIdZ& operator=(CVec_MonitorUpdateIdZ&& o) { CVec_MonitorUpdateIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorUpdateIdZ)); return *this; }
7257         LDKCVec_MonitorUpdateIdZ* operator &() { return &self; }
7258         LDKCVec_MonitorUpdateIdZ* operator ->() { return &self; }
7259         const LDKCVec_MonitorUpdateIdZ* operator &() const { return &self; }
7260         const LDKCVec_MonitorUpdateIdZ* operator ->() const { return &self; }
7261 };
7262 class CResult_PaymentPurposeDecodeErrorZ {
7263 private:
7264         LDKCResult_PaymentPurposeDecodeErrorZ self;
7265 public:
7266         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
7267         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
7268         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
7269         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
7270         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
7271         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
7272         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
7273         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
7274         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
7275         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
7276 };
7277 class CResult_OutPointDecodeErrorZ {
7278 private:
7279         LDKCResult_OutPointDecodeErrorZ self;
7280 public:
7281         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
7282         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
7283         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
7284         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
7285         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
7286         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
7287         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
7288         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
7289         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
7290         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
7291 };
7292 class CVec_ChannelDetailsZ {
7293 private:
7294         LDKCVec_ChannelDetailsZ self;
7295 public:
7296         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
7297         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
7298         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
7299         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
7300         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
7301         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
7302         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
7303         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
7304         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
7305         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
7306 };
7307 class CVec_MessageSendEventZ {
7308 private:
7309         LDKCVec_MessageSendEventZ self;
7310 public:
7311         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
7312         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
7313         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
7314         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
7315         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
7316         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
7317         LDKCVec_MessageSendEventZ* operator &() { return &self; }
7318         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
7319         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
7320         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
7321 };
7322 class COption_NetAddressZ {
7323 private:
7324         LDKCOption_NetAddressZ self;
7325 public:
7326         COption_NetAddressZ(const COption_NetAddressZ&) = delete;
7327         COption_NetAddressZ(COption_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetAddressZ)); }
7328         COption_NetAddressZ(LDKCOption_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetAddressZ)); }
7329         operator LDKCOption_NetAddressZ() && { LDKCOption_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_NetAddressZ)); return res; }
7330         ~COption_NetAddressZ() { COption_NetAddressZ_free(self); }
7331         COption_NetAddressZ& operator=(COption_NetAddressZ&& o) { COption_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetAddressZ)); return *this; }
7332         LDKCOption_NetAddressZ* operator &() { return &self; }
7333         LDKCOption_NetAddressZ* operator ->() { return &self; }
7334         const LDKCOption_NetAddressZ* operator &() const { return &self; }
7335         const LDKCOption_NetAddressZ* operator ->() const { return &self; }
7336 };
7337 class C2Tuple_OutPointScriptZ {
7338 private:
7339         LDKC2Tuple_OutPointScriptZ self;
7340 public:
7341         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
7342         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
7343         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
7344         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
7345         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
7346         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
7347         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
7348         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
7349         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
7350         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
7351 };
7352 class CResult_RouteHintHopDecodeErrorZ {
7353 private:
7354         LDKCResult_RouteHintHopDecodeErrorZ self;
7355 public:
7356         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
7357         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
7358         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
7359         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
7360         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
7361         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
7362         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
7363         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
7364         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
7365         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
7366 };
7367 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
7368 private:
7369         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
7370 public:
7371         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
7372         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
7373         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
7374         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
7375         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
7376         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
7377         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
7378         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
7379         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
7380         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
7381 };
7382 class CResult_SharedSecretNoneZ {
7383 private:
7384         LDKCResult_SharedSecretNoneZ self;
7385 public:
7386         CResult_SharedSecretNoneZ(const CResult_SharedSecretNoneZ&) = delete;
7387         CResult_SharedSecretNoneZ(CResult_SharedSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); }
7388         CResult_SharedSecretNoneZ(LDKCResult_SharedSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); }
7389         operator LDKCResult_SharedSecretNoneZ() && { LDKCResult_SharedSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SharedSecretNoneZ)); return res; }
7390         ~CResult_SharedSecretNoneZ() { CResult_SharedSecretNoneZ_free(self); }
7391         CResult_SharedSecretNoneZ& operator=(CResult_SharedSecretNoneZ&& o) { CResult_SharedSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SharedSecretNoneZ)); return *this; }
7392         LDKCResult_SharedSecretNoneZ* operator &() { return &self; }
7393         LDKCResult_SharedSecretNoneZ* operator ->() { return &self; }
7394         const LDKCResult_SharedSecretNoneZ* operator &() const { return &self; }
7395         const LDKCResult_SharedSecretNoneZ* operator ->() const { return &self; }
7396 };
7397 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
7398 private:
7399         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
7400 public:
7401         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
7402         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
7403         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
7404         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
7405         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
7406         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ& operator=(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return *this; }
7407         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
7408         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
7409         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
7410         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
7411 };
7412 class CResult_CVec_CVec_u8ZZNoneZ {
7413 private:
7414         LDKCResult_CVec_CVec_u8ZZNoneZ self;
7415 public:
7416         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
7417         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
7418         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
7419         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
7420         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
7421         CResult_CVec_CVec_u8ZZNoneZ& operator=(CResult_CVec_CVec_u8ZZNoneZ&& o) { CResult_CVec_CVec_u8ZZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); return *this; }
7422         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
7423         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
7424         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
7425         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
7426 };
7427 class C2Tuple_PaymentHashPaymentSecretZ {
7428 private:
7429         LDKC2Tuple_PaymentHashPaymentSecretZ self;
7430 public:
7431         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
7432         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
7433         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
7434         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
7435         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
7436         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
7437         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
7438         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
7439         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
7440         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
7441 };
7442 class CResult_AcceptChannelDecodeErrorZ {
7443 private:
7444         LDKCResult_AcceptChannelDecodeErrorZ self;
7445 public:
7446         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
7447         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
7448         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
7449         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
7450         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
7451         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
7452         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
7453         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
7454         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
7455         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
7456 };
7457 class CVec_SignatureZ {
7458 private:
7459         LDKCVec_SignatureZ self;
7460 public:
7461         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
7462         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
7463         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
7464         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
7465         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
7466         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
7467         LDKCVec_SignatureZ* operator &() { return &self; }
7468         LDKCVec_SignatureZ* operator ->() { return &self; }
7469         const LDKCVec_SignatureZ* operator &() const { return &self; }
7470         const LDKCVec_SignatureZ* operator ->() const { return &self; }
7471 };
7472 class CVec_u64Z {
7473 private:
7474         LDKCVec_u64Z self;
7475 public:
7476         CVec_u64Z(const CVec_u64Z&) = delete;
7477         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
7478         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
7479         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
7480         ~CVec_u64Z() { CVec_u64Z_free(self); }
7481         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
7482         LDKCVec_u64Z* operator &() { return &self; }
7483         LDKCVec_u64Z* operator ->() { return &self; }
7484         const LDKCVec_u64Z* operator &() const { return &self; }
7485         const LDKCVec_u64Z* operator ->() const { return &self; }
7486 };
7487 class CResult_StringErrorZ {
7488 private:
7489         LDKCResult_StringErrorZ self;
7490 public:
7491         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
7492         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
7493         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
7494         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
7495         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
7496         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
7497         LDKCResult_StringErrorZ* operator &() { return &self; }
7498         LDKCResult_StringErrorZ* operator ->() { return &self; }
7499         const LDKCResult_StringErrorZ* operator &() const { return &self; }
7500         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
7501 };
7502 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
7503 private:
7504         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
7505 public:
7506         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
7507         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
7508         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
7509         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
7510         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
7511         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ& operator=(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return *this; }
7512         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
7513         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
7514         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
7515         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
7516 };
7517 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
7518 private:
7519         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
7520 public:
7521         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
7522         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
7523         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
7524         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
7525         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
7526         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ& operator=(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return *this; }
7527         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
7528         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
7529         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
7530         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
7531 };
7532 class COption_EventZ {
7533 private:
7534         LDKCOption_EventZ self;
7535 public:
7536         COption_EventZ(const COption_EventZ&) = delete;
7537         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
7538         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
7539         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
7540         ~COption_EventZ() { COption_EventZ_free(self); }
7541         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
7542         LDKCOption_EventZ* operator &() { return &self; }
7543         LDKCOption_EventZ* operator ->() { return &self; }
7544         const LDKCOption_EventZ* operator &() const { return &self; }
7545         const LDKCOption_EventZ* operator ->() const { return &self; }
7546 };
7547 class CResult_ChannelTypeFeaturesDecodeErrorZ {
7548 private:
7549         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
7550 public:
7551         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
7552         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
7553         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
7554         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
7555         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
7556         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
7557         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
7558         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
7559         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
7560         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
7561 };
7562 class CVec_RouteHintZ {
7563 private:
7564         LDKCVec_RouteHintZ self;
7565 public:
7566         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
7567         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
7568         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
7569         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
7570         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
7571         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
7572         LDKCVec_RouteHintZ* operator &() { return &self; }
7573         LDKCVec_RouteHintZ* operator ->() { return &self; }
7574         const LDKCVec_RouteHintZ* operator &() const { return &self; }
7575         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
7576 };
7577 class COption_u16Z {
7578 private:
7579         LDKCOption_u16Z self;
7580 public:
7581         COption_u16Z(const COption_u16Z&) = delete;
7582         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
7583         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
7584         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
7585         ~COption_u16Z() { COption_u16Z_free(self); }
7586         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
7587         LDKCOption_u16Z* operator &() { return &self; }
7588         LDKCOption_u16Z* operator ->() { return &self; }
7589         const LDKCOption_u16Z* operator &() const { return &self; }
7590         const LDKCOption_u16Z* operator ->() const { return &self; }
7591 };
7592 class CVec_CVec_RouteHopZZ {
7593 private:
7594         LDKCVec_CVec_RouteHopZZ self;
7595 public:
7596         CVec_CVec_RouteHopZZ(const CVec_CVec_RouteHopZZ&) = delete;
7597         CVec_CVec_RouteHopZZ(CVec_CVec_RouteHopZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); }
7598         CVec_CVec_RouteHopZZ(LDKCVec_CVec_RouteHopZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); }
7599         operator LDKCVec_CVec_RouteHopZZ() && { LDKCVec_CVec_RouteHopZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); return res; }
7600         ~CVec_CVec_RouteHopZZ() { CVec_CVec_RouteHopZZ_free(self); }
7601         CVec_CVec_RouteHopZZ& operator=(CVec_CVec_RouteHopZZ&& o) { CVec_CVec_RouteHopZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); return *this; }
7602         LDKCVec_CVec_RouteHopZZ* operator &() { return &self; }
7603         LDKCVec_CVec_RouteHopZZ* operator ->() { return &self; }
7604         const LDKCVec_CVec_RouteHopZZ* operator &() const { return &self; }
7605         const LDKCVec_CVec_RouteHopZZ* operator ->() const { return &self; }
7606 };
7607 class CVec_C2Tuple_PublicKeyTypeZZ {
7608 private:
7609         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
7610 public:
7611         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
7612         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
7613         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
7614         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
7615         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
7616         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; }
7617         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
7618         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
7619         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
7620         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
7621 };
7622 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ {
7623 private:
7624         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ self;
7625 public:
7626         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(const C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&) = delete;
7627         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
7628         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
7629         operator LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() && { LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); return res; }
7630         ~C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() { C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(self); }
7631         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ& operator=(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& o) { C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); return *this; }
7632         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() { return &self; }
7633         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() { return &self; }
7634         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() const { return &self; }
7635         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() const { return &self; }
7636 };
7637 class CResult_u32GraphSyncErrorZ {
7638 private:
7639         LDKCResult_u32GraphSyncErrorZ self;
7640 public:
7641         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
7642         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
7643         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
7644         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
7645         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
7646         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
7647         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
7648         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
7649         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
7650         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
7651 };
7652 class CVec_PhantomRouteHintsZ {
7653 private:
7654         LDKCVec_PhantomRouteHintsZ self;
7655 public:
7656         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
7657         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
7658         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
7659         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
7660         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
7661         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
7662         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
7663         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
7664         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
7665         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
7666 };
7667 class CResult_NoneAPIErrorZ {
7668 private:
7669         LDKCResult_NoneAPIErrorZ self;
7670 public:
7671         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
7672         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
7673         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
7674         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
7675         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
7676         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
7677         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
7678         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
7679         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
7680         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
7681 };
7682 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
7683 private:
7684         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
7685 public:
7686         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
7687         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
7688         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
7689         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
7690         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
7691         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
7692         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
7693         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
7694         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
7695         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
7696 };
7697 class CVec_NetAddressZ {
7698 private:
7699         LDKCVec_NetAddressZ self;
7700 public:
7701         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
7702         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
7703         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
7704         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
7705         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
7706         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
7707         LDKCVec_NetAddressZ* operator &() { return &self; }
7708         LDKCVec_NetAddressZ* operator ->() { return &self; }
7709         const LDKCVec_NetAddressZ* operator &() const { return &self; }
7710         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
7711 };
7712 class CResult_ChannelDetailsDecodeErrorZ {
7713 private:
7714         LDKCResult_ChannelDetailsDecodeErrorZ self;
7715 public:
7716         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
7717         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
7718         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
7719         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
7720         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
7721         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
7722         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
7723         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
7724         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
7725         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
7726 };
7727 class CVec_PublicKeyZ {
7728 private:
7729         LDKCVec_PublicKeyZ self;
7730 public:
7731         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
7732         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
7733         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
7734         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
7735         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
7736         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
7737         LDKCVec_PublicKeyZ* operator &() { return &self; }
7738         LDKCVec_PublicKeyZ* operator ->() { return &self; }
7739         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
7740         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
7741 };
7742 class CVec_C2Tuple_usizeTransactionZZ {
7743 private:
7744         LDKCVec_C2Tuple_usizeTransactionZZ self;
7745 public:
7746         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
7747         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
7748         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
7749         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
7750         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
7751         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; }
7752         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
7753         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
7754         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
7755         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
7756 };
7757 class C2Tuple_u64u64Z {
7758 private:
7759         LDKC2Tuple_u64u64Z self;
7760 public:
7761         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
7762         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
7763         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
7764         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
7765         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
7766         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
7767         LDKC2Tuple_u64u64Z* operator &() { return &self; }
7768         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
7769         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
7770         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
7771 };
7772 class C2Tuple_u32TxOutZ {
7773 private:
7774         LDKC2Tuple_u32TxOutZ self;
7775 public:
7776         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
7777         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
7778         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
7779         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
7780         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
7781         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
7782         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
7783         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
7784         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
7785         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
7786 };
7787 class CResult_PaymentSecretNoneZ {
7788 private:
7789         LDKCResult_PaymentSecretNoneZ self;
7790 public:
7791         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
7792         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
7793         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
7794         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
7795         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
7796         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
7797         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
7798         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
7799         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
7800         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
7801 };
7802 class CResult_ChannelConfigDecodeErrorZ {
7803 private:
7804         LDKCResult_ChannelConfigDecodeErrorZ self;
7805 public:
7806         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
7807         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
7808         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
7809         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
7810         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
7811         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
7812         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
7813         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
7814         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
7815         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
7816 };
7817 class CVec_PrivateRouteZ {
7818 private:
7819         LDKCVec_PrivateRouteZ self;
7820 public:
7821         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
7822         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
7823         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
7824         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
7825         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
7826         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
7827         LDKCVec_PrivateRouteZ* operator &() { return &self; }
7828         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
7829         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
7830         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
7831 };
7832 class CResult_BlindedPathNoneZ {
7833 private:
7834         LDKCResult_BlindedPathNoneZ self;
7835 public:
7836         CResult_BlindedPathNoneZ(const CResult_BlindedPathNoneZ&) = delete;
7837         CResult_BlindedPathNoneZ(CResult_BlindedPathNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); }
7838         CResult_BlindedPathNoneZ(LDKCResult_BlindedPathNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); }
7839         operator LDKCResult_BlindedPathNoneZ() && { LDKCResult_BlindedPathNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_BlindedPathNoneZ)); return res; }
7840         ~CResult_BlindedPathNoneZ() { CResult_BlindedPathNoneZ_free(self); }
7841         CResult_BlindedPathNoneZ& operator=(CResult_BlindedPathNoneZ&& o) { CResult_BlindedPathNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BlindedPathNoneZ)); return *this; }
7842         LDKCResult_BlindedPathNoneZ* operator &() { return &self; }
7843         LDKCResult_BlindedPathNoneZ* operator ->() { return &self; }
7844         const LDKCResult_BlindedPathNoneZ* operator &() const { return &self; }
7845         const LDKCResult_BlindedPathNoneZ* operator ->() const { return &self; }
7846 };
7847 class CResult_ShutdownDecodeErrorZ {
7848 private:
7849         LDKCResult_ShutdownDecodeErrorZ self;
7850 public:
7851         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
7852         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
7853         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
7854         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
7855         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
7856         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
7857         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
7858         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
7859         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
7860         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
7861 };
7862 class CResult_TxOutUtxoLookupErrorZ {
7863 private:
7864         LDKCResult_TxOutUtxoLookupErrorZ self;
7865 public:
7866         CResult_TxOutUtxoLookupErrorZ(const CResult_TxOutUtxoLookupErrorZ&) = delete;
7867         CResult_TxOutUtxoLookupErrorZ(CResult_TxOutUtxoLookupErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); }
7868         CResult_TxOutUtxoLookupErrorZ(LDKCResult_TxOutUtxoLookupErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); }
7869         operator LDKCResult_TxOutUtxoLookupErrorZ() && { LDKCResult_TxOutUtxoLookupErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutUtxoLookupErrorZ)); return res; }
7870         ~CResult_TxOutUtxoLookupErrorZ() { CResult_TxOutUtxoLookupErrorZ_free(self); }
7871         CResult_TxOutUtxoLookupErrorZ& operator=(CResult_TxOutUtxoLookupErrorZ&& o) { CResult_TxOutUtxoLookupErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutUtxoLookupErrorZ)); return *this; }
7872         LDKCResult_TxOutUtxoLookupErrorZ* operator &() { return &self; }
7873         LDKCResult_TxOutUtxoLookupErrorZ* operator ->() { return &self; }
7874         const LDKCResult_TxOutUtxoLookupErrorZ* operator &() const { return &self; }
7875         const LDKCResult_TxOutUtxoLookupErrorZ* operator ->() const { return &self; }
7876 };
7877 class CVec_MonitorEventZ {
7878 private:
7879         LDKCVec_MonitorEventZ self;
7880 public:
7881         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
7882         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
7883         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
7884         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
7885         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
7886         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
7887         LDKCVec_MonitorEventZ* operator &() { return &self; }
7888         LDKCVec_MonitorEventZ* operator ->() { return &self; }
7889         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
7890         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
7891 };
7892 class CVec_PaymentPreimageZ {
7893 private:
7894         LDKCVec_PaymentPreimageZ self;
7895 public:
7896         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
7897         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
7898         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
7899         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
7900         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
7901         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
7902         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
7903         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
7904         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
7905         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
7906 };
7907 class CResult_PublicKeyErrorZ {
7908 private:
7909         LDKCResult_PublicKeyErrorZ self;
7910 public:
7911         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
7912         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
7913         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
7914         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
7915         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
7916         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
7917         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
7918         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
7919         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
7920         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
7921 };
7922 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ {
7923 private:
7924         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ self;
7925 public:
7926         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(const CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&) = delete;
7927         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
7928         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
7929         operator LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() && { LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); return res; }
7930         ~CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() { CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(self); }
7931         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ& operator=(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& o) { CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); return *this; }
7932         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() { return &self; }
7933         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() { return &self; }
7934         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() const { return &self; }
7935         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() const { return &self; }
7936 };
7937 class CResult_NoneNoneZ {
7938 private:
7939         LDKCResult_NoneNoneZ self;
7940 public:
7941         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
7942         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
7943         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
7944         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
7945         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
7946         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
7947         LDKCResult_NoneNoneZ* operator &() { return &self; }
7948         LDKCResult_NoneNoneZ* operator ->() { return &self; }
7949         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
7950         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
7951 };
7952 class COption_ClosureReasonZ {
7953 private:
7954         LDKCOption_ClosureReasonZ self;
7955 public:
7956         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
7957         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
7958         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
7959         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
7960         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
7961         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
7962         LDKCOption_ClosureReasonZ* operator &() { return &self; }
7963         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
7964         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
7965         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
7966 };
7967 class COption_u128Z {
7968 private:
7969         LDKCOption_u128Z self;
7970 public:
7971         COption_u128Z(const COption_u128Z&) = delete;
7972         COption_u128Z(COption_u128Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u128Z)); }
7973         COption_u128Z(LDKCOption_u128Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u128Z)); }
7974         operator LDKCOption_u128Z() && { LDKCOption_u128Z res = self; memset(&self, 0, sizeof(LDKCOption_u128Z)); return res; }
7975         ~COption_u128Z() { COption_u128Z_free(self); }
7976         COption_u128Z& operator=(COption_u128Z&& o) { COption_u128Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u128Z)); return *this; }
7977         LDKCOption_u128Z* operator &() { return &self; }
7978         LDKCOption_u128Z* operator ->() { return &self; }
7979         const LDKCOption_u128Z* operator &() const { return &self; }
7980         const LDKCOption_u128Z* operator ->() const { return &self; }
7981 };
7982 class CVec_APIErrorZ {
7983 private:
7984         LDKCVec_APIErrorZ self;
7985 public:
7986         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
7987         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
7988         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
7989         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
7990         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
7991         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
7992         LDKCVec_APIErrorZ* operator &() { return &self; }
7993         LDKCVec_APIErrorZ* operator ->() { return &self; }
7994         const LDKCVec_APIErrorZ* operator &() const { return &self; }
7995         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
7996 };
7997 class CResult_boolPeerHandleErrorZ {
7998 private:
7999         LDKCResult_boolPeerHandleErrorZ self;
8000 public:
8001         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
8002         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
8003         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
8004         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
8005         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
8006         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
8007         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
8008         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
8009         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
8010         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
8011 };
8012 class CResult_ChannelUpdateDecodeErrorZ {
8013 private:
8014         LDKCResult_ChannelUpdateDecodeErrorZ self;
8015 public:
8016         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
8017         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
8018         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
8019         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
8020         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
8021         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
8022         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
8023         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
8024         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
8025         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
8026 };
8027 class CResult_PaymentSecretAPIErrorZ {
8028 private:
8029         LDKCResult_PaymentSecretAPIErrorZ self;
8030 public:
8031         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
8032         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
8033         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
8034         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
8035         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
8036         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
8037         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
8038         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
8039         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
8040         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
8041 };
8042 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
8043 private:
8044         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
8045 public:
8046         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
8047         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
8048         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
8049         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
8050         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
8051         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
8052         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
8053         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
8054         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
8055         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
8056 };
8057 class C2Tuple_u32ScriptZ {
8058 private:
8059         LDKC2Tuple_u32ScriptZ self;
8060 public:
8061         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
8062         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
8063         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
8064         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
8065         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
8066         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
8067         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
8068         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
8069         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
8070         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
8071 };
8072 class CResult_SignedRawInvoiceParseErrorZ {
8073 private:
8074         LDKCResult_SignedRawInvoiceParseErrorZ self;
8075 public:
8076         CResult_SignedRawInvoiceParseErrorZ(const CResult_SignedRawInvoiceParseErrorZ&) = delete;
8077         CResult_SignedRawInvoiceParseErrorZ(CResult_SignedRawInvoiceParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); }
8078         CResult_SignedRawInvoiceParseErrorZ(LDKCResult_SignedRawInvoiceParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); }
8079         operator LDKCResult_SignedRawInvoiceParseErrorZ() && { LDKCResult_SignedRawInvoiceParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); return res; }
8080         ~CResult_SignedRawInvoiceParseErrorZ() { CResult_SignedRawInvoiceParseErrorZ_free(self); }
8081         CResult_SignedRawInvoiceParseErrorZ& operator=(CResult_SignedRawInvoiceParseErrorZ&& o) { CResult_SignedRawInvoiceParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); return *this; }
8082         LDKCResult_SignedRawInvoiceParseErrorZ* operator &() { return &self; }
8083         LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() { return &self; }
8084         const LDKCResult_SignedRawInvoiceParseErrorZ* operator &() const { return &self; }
8085         const LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() const { return &self; }
8086 };
8087 class COption_C2Tuple_EightU16sEightU16sZZ {
8088 private:
8089         LDKCOption_C2Tuple_EightU16sEightU16sZZ self;
8090 public:
8091         COption_C2Tuple_EightU16sEightU16sZZ(const COption_C2Tuple_EightU16sEightU16sZZ&) = delete;
8092         COption_C2Tuple_EightU16sEightU16sZZ(COption_C2Tuple_EightU16sEightU16sZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_EightU16sEightU16sZZ)); }
8093         COption_C2Tuple_EightU16sEightU16sZZ(LDKCOption_C2Tuple_EightU16sEightU16sZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_EightU16sEightU16sZZ)); }
8094         operator LDKCOption_C2Tuple_EightU16sEightU16sZZ() && { LDKCOption_C2Tuple_EightU16sEightU16sZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_EightU16sEightU16sZZ)); return res; }
8095         ~COption_C2Tuple_EightU16sEightU16sZZ() { COption_C2Tuple_EightU16sEightU16sZZ_free(self); }
8096         COption_C2Tuple_EightU16sEightU16sZZ& operator=(COption_C2Tuple_EightU16sEightU16sZZ&& o) { COption_C2Tuple_EightU16sEightU16sZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_C2Tuple_EightU16sEightU16sZZ)); return *this; }
8097         LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator &() { return &self; }
8098         LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator ->() { return &self; }
8099         const LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator &() const { return &self; }
8100         const LDKCOption_C2Tuple_EightU16sEightU16sZZ* operator ->() const { return &self; }
8101 };
8102 class CResult_RouteDecodeErrorZ {
8103 private:
8104         LDKCResult_RouteDecodeErrorZ self;
8105 public:
8106         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
8107         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
8108         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
8109         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
8110         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
8111         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
8112         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
8113         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
8114         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
8115         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
8116 };
8117 class COption_NoneZ {
8118 private:
8119         LDKCOption_NoneZ self;
8120 public:
8121         COption_NoneZ(const COption_NoneZ&) = delete;
8122         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
8123         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
8124         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
8125         ~COption_NoneZ() { COption_NoneZ_free(self); }
8126         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
8127         LDKCOption_NoneZ* operator &() { return &self; }
8128         LDKCOption_NoneZ* operator ->() { return &self; }
8129         const LDKCOption_NoneZ* operator &() const { return &self; }
8130         const LDKCOption_NoneZ* operator ->() const { return &self; }
8131 };
8132
8133 inline LDK::CResult_RouteLightningErrorZ Router::find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKInFlightHtlcs *NONNULL_PTR inflight_htlcs) {
8134         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, first_hops, inflight_htlcs);
8135         return ret;
8136 }
8137 inline LDK::CResult_RouteLightningErrorZ Router::find_route_with_id(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKInFlightHtlcs *NONNULL_PTR inflight_htlcs, struct LDKThirtyTwoBytes _payment_hash, struct LDKThirtyTwoBytes _payment_id) {
8138         LDK::CResult_RouteLightningErrorZ ret = (self.find_route_with_id)(self.this_arg, payer, route_params, first_hops, inflight_htlcs, _payment_hash, _payment_id);
8139         return ret;
8140 }
8141 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
8142         (self.broadcast_transaction)(self.this_arg, tx);
8143 }
8144 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
8145         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
8146         return ret;
8147 }
8148 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
8149         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
8150         return ret;
8151 }
8152 inline LDK::OnionMessage OnionMessageProvider::next_onion_message_for_peer(struct LDKPublicKey peer_node_id) {
8153         LDK::OnionMessage ret = (self.next_onion_message_for_peer)(self.this_arg, peer_node_id);
8154         return ret;
8155 }
8156 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
8157         (self.process_pending_events)(self.this_arg, handler);
8158 }
8159 inline void EventHandler::handle_event(struct LDKEvent event) {
8160         (self.handle_event)(self.this_arg, event);
8161 }
8162 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
8163         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
8164 }
8165 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
8166         (self.block_connected)(self.this_arg, block, height);
8167 }
8168 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
8169         (self.block_disconnected)(self.this_arg, header, height);
8170 }
8171 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
8172         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
8173 }
8174 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
8175         (self.transaction_unconfirmed)(self.this_arg, txid);
8176 }
8177 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
8178         (self.best_block_updated)(self.this_arg, header, height);
8179 }
8180 inline LDK::CVec_C2Tuple_TxidBlockHashZZ Confirm::get_relevant_txids() {
8181         LDK::CVec_C2Tuple_TxidBlockHashZZ ret = (self.get_relevant_txids)(self.this_arg);
8182         return ret;
8183 }
8184 inline LDK::ChannelMonitorUpdateStatus Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
8185         LDK::ChannelMonitorUpdateStatus ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
8186         return ret;
8187 }
8188 inline LDK::ChannelMonitorUpdateStatus Watch::update_channel(struct LDKOutPoint funding_txo, const struct LDKChannelMonitorUpdate *NONNULL_PTR update) {
8189         LDK::ChannelMonitorUpdateStatus ret = (self.update_channel)(self.this_arg, funding_txo, update);
8190         return ret;
8191 }
8192 inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ Watch::release_pending_monitor_events() {
8193         LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ ret = (self.release_pending_monitor_events)(self.this_arg);
8194         return ret;
8195 }
8196 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
8197         (self.register_tx)(self.this_arg, txid, script_pubkey);
8198 }
8199 inline void Filter::register_output(struct LDKWatchedOutput output) {
8200         (self.register_output)(self.this_arg, output);
8201 }
8202 inline uint64_t Score::channel_penalty_msat(uint64_t short_channel_id, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target, struct LDKChannelUsage usage) {
8203         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, source, target, usage);
8204         return ret;
8205 }
8206 inline void Score::payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
8207         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
8208 }
8209 inline void Score::payment_path_successful(struct LDKCVec_RouteHopZ path) {
8210         (self.payment_path_successful)(self.this_arg, path);
8211 }
8212 inline void Score::probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
8213         (self.probe_failed)(self.this_arg, path, short_channel_id);
8214 }
8215 inline void Score::probe_successful(struct LDKCVec_RouteHopZ path) {
8216         (self.probe_successful)(self.this_arg, path);
8217 }
8218 inline LDK::Score LockableScore::lock() {
8219         LDK::Score ret = (self.lock)(self.this_arg);
8220         return ret;
8221 }
8222 inline uint64_t CustomOnionMessageContents::tlv_type() {
8223         uint64_t ret = (self.tlv_type)(self.this_arg);
8224         return ret;
8225 }
8226 inline LDKPublicKey ChannelSigner::get_per_commitment_point(uint64_t idx) {
8227         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
8228         return ret;
8229 }
8230 inline LDKThirtyTwoBytes ChannelSigner::release_commitment_secret(uint64_t idx) {
8231         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
8232         return ret;
8233 }
8234 inline LDK::CResult_NoneNoneZ ChannelSigner::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
8235         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
8236         return ret;
8237 }
8238 inline LDKThirtyTwoBytes ChannelSigner::channel_keys_id() {
8239         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
8240         return ret;
8241 }
8242 inline void ChannelSigner::provide_channel_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
8243         (self.provide_channel_parameters)(self.this_arg, channel_parameters);
8244 }
8245 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ EcdsaChannelSigner::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
8246         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
8247         return ret;
8248 }
8249 inline LDK::CResult_NoneNoneZ EcdsaChannelSigner::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
8250         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
8251         return ret;
8252 }
8253 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ EcdsaChannelSigner::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
8254         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
8255         return ret;
8256 }
8257 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_justice_revoked_output(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]) {
8258         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
8259         return ret;
8260 }
8261 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_justice_revoked_htlc(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc) {
8262         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
8263         return ret;
8264 }
8265 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_counterparty_htlc_transaction(struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc) {
8266         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
8267         return ret;
8268 }
8269 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
8270         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
8271         return ret;
8272 }
8273 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_holder_anchor_input(struct LDKTransaction anchor_tx, uintptr_t input) {
8274         LDK::CResult_SignatureNoneZ ret = (self.sign_holder_anchor_input)(self.this_arg, anchor_tx, input);
8275         return ret;
8276 }
8277 inline LDK::CResult_SignatureNoneZ EcdsaChannelSigner::sign_channel_announcement_with_funding_key(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
8278         LDK::CResult_SignatureNoneZ ret = (self.sign_channel_announcement_with_funding_key)(self.this_arg, msg);
8279         return ret;
8280 }
8281 inline LDKThirtyTwoBytes EntropySource::get_secure_random_bytes() {
8282         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
8283         return ret;
8284 }
8285 inline LDKThirtyTwoBytes NodeSigner::get_inbound_payment_key_material() {
8286         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
8287         return ret;
8288 }
8289 inline LDK::CResult_PublicKeyNoneZ NodeSigner::get_node_id(enum LDKRecipient recipient) {
8290         LDK::CResult_PublicKeyNoneZ ret = (self.get_node_id)(self.this_arg, recipient);
8291         return ret;
8292 }
8293 inline LDK::CResult_SharedSecretNoneZ NodeSigner::ecdh(enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak) {
8294         LDK::CResult_SharedSecretNoneZ ret = (self.ecdh)(self.this_arg, recipient, other_key, tweak);
8295         return ret;
8296 }
8297 inline LDK::CResult_RecoverableSignatureNoneZ NodeSigner::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_U5Z invoice_data, enum LDKRecipient recipient) {
8298         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, recipient);
8299         return ret;
8300 }
8301 inline LDK::CResult_SignatureNoneZ NodeSigner::sign_gossip_message(struct LDKUnsignedGossipMessage msg) {
8302         LDK::CResult_SignatureNoneZ ret = (self.sign_gossip_message)(self.this_arg, msg);
8303         return ret;
8304 }
8305 inline LDKThirtyTwoBytes SignerProvider::generate_channel_keys_id(bool inbound, uint64_t channel_value_satoshis, struct LDKU128 user_channel_id) {
8306         LDKThirtyTwoBytes ret = (self.generate_channel_keys_id)(self.this_arg, inbound, channel_value_satoshis, user_channel_id);
8307         return ret;
8308 }
8309 inline LDK::WriteableEcdsaChannelSigner SignerProvider::derive_channel_signer(uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id) {
8310         LDK::WriteableEcdsaChannelSigner ret = (self.derive_channel_signer)(self.this_arg, channel_value_satoshis, channel_keys_id);
8311         return ret;
8312 }
8313 inline LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ SignerProvider::read_chan_signer(struct LDKu8slice reader) {
8314         LDK::CResult_WriteableEcdsaChannelSignerDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
8315         return ret;
8316 }
8317 inline LDK::CVec_u8Z SignerProvider::get_destination_script() {
8318         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
8319         return ret;
8320 }
8321 inline LDK::ShutdownScript SignerProvider::get_shutdown_scriptpubkey() {
8322         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
8323         return ret;
8324 }
8325 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
8326         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
8327         return ret;
8328 }
8329 inline uint16_t Type::type_id() {
8330         uint16_t ret = (self.type_id)(self.this_arg);
8331         return ret;
8332 }
8333 inline LDK::Str Type::debug_str() {
8334         LDK::Str ret = (self.debug_str)(self.this_arg);
8335         return ret;
8336 }
8337 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
8338         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
8339         return ret;
8340 }
8341 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
8342         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
8343         return ret;
8344 }
8345 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
8346         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
8347         return ret;
8348 }
8349 inline void SocketDescriptor::disconnect_socket() {
8350         (self.disconnect_socket)(self.this_arg);
8351 }
8352 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
8353         bool ret = (self.eq)(self.this_arg, other_arg);
8354         return ret;
8355 }
8356 inline uint64_t SocketDescriptor::hash() {
8357         uint64_t ret = (self.hash)(self.this_arg);
8358         return ret;
8359 }
8360 inline LDK::UtxoResult UtxoLookup::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
8361         LDK::UtxoResult ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
8362         return ret;
8363 }
8364 inline void CustomOnionMessageHandler::handle_custom_message(struct LDKCustomOnionMessageContents msg) {
8365         (self.handle_custom_message)(self.this_arg, msg);
8366 }
8367 inline LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ CustomOnionMessageHandler::read_custom_message(uint64_t message_type, struct LDKu8slice buffer) {
8368         LDK::CResult_COption_CustomOnionMessageContentsZDecodeErrorZ ret = (self.read_custom_message)(self.this_arg, message_type, buffer);
8369         return ret;
8370 }
8371 inline LDK::CResult_NoneErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
8372         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
8373         return ret;
8374 }
8375 inline LDK::CResult_NoneErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
8376         LDK::CResult_NoneErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
8377         return ret;
8378 }
8379 inline LDK::CResult_NoneErrorZ Persister::persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer) {
8380         LDK::CResult_NoneErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
8381         return ret;
8382 }
8383 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, const struct LDKOpenChannel *NONNULL_PTR msg) {
8384         (self.handle_open_channel)(self.this_arg, their_node_id, msg);
8385 }
8386 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, const struct LDKAcceptChannel *NONNULL_PTR msg) {
8387         (self.handle_accept_channel)(self.this_arg, their_node_id, msg);
8388 }
8389 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
8390         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
8391 }
8392 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
8393         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
8394 }
8395 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
8396         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
8397 }
8398 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKShutdown *NONNULL_PTR msg) {
8399         (self.handle_shutdown)(self.this_arg, their_node_id, msg);
8400 }
8401 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
8402         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
8403 }
8404 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
8405         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
8406 }
8407 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
8408         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
8409 }
8410 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
8411         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
8412 }
8413 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
8414         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
8415 }
8416 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
8417         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
8418 }
8419 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
8420         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
8421 }
8422 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
8423         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
8424 }
8425 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
8426         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
8427 }
8428 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
8429         (self.peer_disconnected)(self.this_arg, their_node_id);
8430 }
8431 inline LDK::CResult_NoneNoneZ ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg, bool inbound) {
8432         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, msg, inbound);
8433         return ret;
8434 }
8435 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
8436         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
8437 }
8438 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
8439         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
8440 }
8441 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
8442         (self.handle_error)(self.this_arg, their_node_id, msg);
8443 }
8444 inline LDK::NodeFeatures ChannelMessageHandler::provided_node_features() {
8445         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8446         return ret;
8447 }
8448 inline LDK::InitFeatures ChannelMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8449         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8450         return ret;
8451 }
8452 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
8453         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
8454         return ret;
8455 }
8456 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
8457         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
8458         return ret;
8459 }
8460 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
8461         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
8462         return ret;
8463 }
8464 inline LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcement(uint64_t starting_point) {
8465         LDK::COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcement)(self.this_arg, starting_point);
8466         return ret;
8467 }
8468 inline LDK::NodeAnnouncement RoutingMessageHandler::get_next_node_announcement(struct LDKNodeId starting_point) {
8469         LDK::NodeAnnouncement ret = (self.get_next_node_announcement)(self.this_arg, starting_point);
8470         return ret;
8471 }
8472 inline LDK::CResult_NoneNoneZ RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
8473         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
8474         return ret;
8475 }
8476 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
8477         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
8478         return ret;
8479 }
8480 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
8481         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
8482         return ret;
8483 }
8484 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
8485         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
8486         return ret;
8487 }
8488 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
8489         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
8490         return ret;
8491 }
8492 inline bool RoutingMessageHandler::processing_queue_high() {
8493         bool ret = (self.processing_queue_high)(self.this_arg);
8494         return ret;
8495 }
8496 inline LDK::NodeFeatures RoutingMessageHandler::provided_node_features() {
8497         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8498         return ret;
8499 }
8500 inline LDK::InitFeatures RoutingMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8501         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8502         return ret;
8503 }
8504 inline void OnionMessageHandler::handle_onion_message(struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg) {
8505         (self.handle_onion_message)(self.this_arg, peer_node_id, msg);
8506 }
8507 inline LDK::CResult_NoneNoneZ OnionMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init, bool inbound) {
8508         LDK::CResult_NoneNoneZ ret = (self.peer_connected)(self.this_arg, their_node_id, init, inbound);
8509         return ret;
8510 }
8511 inline void OnionMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id) {
8512         (self.peer_disconnected)(self.this_arg, their_node_id);
8513 }
8514 inline LDK::NodeFeatures OnionMessageHandler::provided_node_features() {
8515         LDK::NodeFeatures ret = (self.provided_node_features)(self.this_arg);
8516         return ret;
8517 }
8518 inline LDK::InitFeatures OnionMessageHandler::provided_init_features(struct LDKPublicKey their_node_id) {
8519         LDK::InitFeatures ret = (self.provided_init_features)(self.this_arg, their_node_id);
8520         return ret;
8521 }
8522 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
8523         (self.log)(self.this_arg, record);
8524 }
8525 inline void FutureCallback::call() {
8526         (self.call)(self.this_arg);
8527 }
8528 inline LDK::ChannelMonitorUpdateStatus Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
8529         LDK::ChannelMonitorUpdateStatus ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
8530         return ret;
8531 }
8532 inline LDK::ChannelMonitorUpdateStatus Persist::update_persisted_channel(struct LDKOutPoint channel_id, struct LDKChannelMonitorUpdate update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
8533         LDK::ChannelMonitorUpdateStatus ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
8534         return ret;
8535 }
8536 }