006c7831c9698ebe1b7a67895ac24c6ace8a5e34
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class CounterpartyCommitmentSecrets;
6 class TxCreationKeys;
7 class ChannelPublicKeys;
8 class HTLCOutputInCommitment;
9 class ChannelTransactionParameters;
10 class CounterpartyChannelTransactionParameters;
11 class DirectedChannelTransactionParameters;
12 class HolderCommitmentTransaction;
13 class BuiltCommitmentTransaction;
14 class ClosingTransaction;
15 class TrustedClosingTransaction;
16 class CommitmentTransaction;
17 class TrustedCommitmentTransaction;
18 class ShutdownScript;
19 class InvalidShutdownScript;
20 class BackgroundProcessor;
21 class GossipSync;
22 class RouteHop;
23 class Route;
24 class RouteParameters;
25 class PaymentParameters;
26 class RouteHint;
27 class RouteHintHop;
28 class BroadcasterInterface;
29 class ConfirmationTarget;
30 class FeeEstimator;
31 class PaymentPurpose;
32 class ClosureReason;
33 class HTLCDestination;
34 class Event;
35 class MessageSendEvent;
36 class MessageSendEventsProvider;
37 class EventsProvider;
38 class EventHandler;
39 class BestBlock;
40 class AccessError;
41 class Access;
42 class Listen;
43 class Confirm;
44 class ChannelMonitorUpdateErr;
45 class Watch;
46 class Filter;
47 class WatchedOutput;
48 class Score;
49 class LockableScore;
50 class MultiThreadedLockableScore;
51 class ChannelUsage;
52 class FixedPenaltyScorer;
53 class ProbabilisticScorer;
54 class ProbabilisticScoringParameters;
55 class InitFeatures;
56 class NodeFeatures;
57 class ChannelFeatures;
58 class InvoiceFeatures;
59 class ChannelTypeFeatures;
60 class NodeId;
61 class NetworkGraph;
62 class ReadOnlyNetworkGraph;
63 class NetworkUpdate;
64 class P2PGossipSync;
65 class ChannelUpdateInfo;
66 class ChannelInfo;
67 class DirectedChannelInfo;
68 class EffectiveCapacity;
69 class RoutingFees;
70 class NodeAnnouncementInfo;
71 class NodeAlias;
72 class NodeInfo;
73 class DelayedPaymentOutputDescriptor;
74 class StaticPaymentOutputDescriptor;
75 class SpendableOutputDescriptor;
76 class BaseSign;
77 class Sign;
78 class Recipient;
79 class KeysInterface;
80 class InMemorySigner;
81 class KeysManager;
82 class PhantomKeysManager;
83 class FilesystemPersister;
84 class ChannelManager;
85 class ChainParameters;
86 class CounterpartyForwardingInfo;
87 class ChannelCounterparty;
88 class ChannelDetails;
89 class PaymentSendFailure;
90 class PhantomRouteHints;
91 class ChannelManagerReadArgs;
92 class ChannelHandshakeConfig;
93 class ChannelHandshakeLimits;
94 class ChannelConfig;
95 class UserConfig;
96 class APIError;
97 class BigSize;
98 class Hostname;
99 class OutPoint;
100 class CustomMessageReader;
101 class Type;
102 class InvoicePayer;
103 class Payer;
104 class Router;
105 class Retry;
106 class PaymentError;
107 class ParseError;
108 class ParseOrSemanticError;
109 class Invoice;
110 class SignedRawInvoice;
111 class RawInvoice;
112 class RawDataPart;
113 class PositiveTimestamp;
114 class SiPrefix;
115 class Currency;
116 class Sha256;
117 class Description;
118 class PayeePubKey;
119 class ExpiryTime;
120 class MinFinalCltvExpiry;
121 class Fallback;
122 class InvoiceSignature;
123 class PrivateRoute;
124 class CreationError;
125 class SemanticError;
126 class SignOrCreationError;
127 class ChannelMonitorUpdate;
128 class MonitorEvent;
129 class HTLCUpdate;
130 class Balance;
131 class ChannelMonitor;
132 class ExpandedKey;
133 class CustomMessageHandler;
134 class IgnoringMessageHandler;
135 class ErroringMessageHandler;
136 class MessageHandler;
137 class SocketDescriptor;
138 class PeerHandleError;
139 class PeerManager;
140 class RapidGossipSync;
141 class Persister;
142 class DecodeError;
143 class Init;
144 class ErrorMessage;
145 class WarningMessage;
146 class Ping;
147 class Pong;
148 class OpenChannel;
149 class AcceptChannel;
150 class FundingCreated;
151 class FundingSigned;
152 class ChannelReady;
153 class Shutdown;
154 class ClosingSignedFeeRange;
155 class ClosingSigned;
156 class UpdateAddHTLC;
157 class UpdateFulfillHTLC;
158 class UpdateFailHTLC;
159 class UpdateFailMalformedHTLC;
160 class CommitmentSigned;
161 class RevokeAndACK;
162 class UpdateFee;
163 class DataLossProtect;
164 class ChannelReestablish;
165 class AnnouncementSignatures;
166 class NetAddress;
167 class UnsignedNodeAnnouncement;
168 class NodeAnnouncement;
169 class UnsignedChannelAnnouncement;
170 class ChannelAnnouncement;
171 class UnsignedChannelUpdate;
172 class ChannelUpdate;
173 class QueryChannelRange;
174 class ReplyChannelRange;
175 class QueryShortChannelIds;
176 class ReplyShortChannelIdsEnd;
177 class GossipTimestampFilter;
178 class ErrorAction;
179 class LightningError;
180 class CommitmentUpdate;
181 class ChannelMessageHandler;
182 class RoutingMessageHandler;
183 class GraphSyncError;
184 class DefaultRouter;
185 class Level;
186 class Record;
187 class Logger;
188 class MonitorUpdateId;
189 class Persist;
190 class LockedChannelMonitor;
191 class ChainMonitor;
192 class CVec_SpendableOutputDescriptorZ;
193 class CResult_LockedChannelMonitorNoneZ;
194 class CResult_PhantomRouteHintsDecodeErrorZ;
195 class COption_C2Tuple_u64u64ZZ;
196 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
197 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
198 class CResult_HTLCUpdateDecodeErrorZ;
199 class C2Tuple_SignatureCVec_SignatureZZ;
200 class CVec_C2Tuple_u32TxOutZZ;
201 class CResult_ChannelInfoDecodeErrorZ;
202 class CResult_FundingCreatedDecodeErrorZ;
203 class CResult_ChannelAnnouncementDecodeErrorZ;
204 class CVec_OutPointZ;
205 class CResult_PositiveTimestampCreationErrorZ;
206 class CResult_CVec_u8ZPeerHandleErrorZ;
207 class CResult_InvoiceFeaturesDecodeErrorZ;
208 class COption_NetworkUpdateZ;
209 class COption_u64Z;
210 class CResult_TxOutAccessErrorZ;
211 class CResult_TrustedClosingTransactionNoneZ;
212 class CResult_PaymentPreimageAPIErrorZ;
213 class CResult_ChannelMonitorUpdateDecodeErrorZ;
214 class CResult_RouteHintDecodeErrorZ;
215 class C2Tuple_PublicKeyTypeZ;
216 class CResult_NetAddressDecodeErrorZ;
217 class CResult_ChannelReestablishDecodeErrorZ;
218 class CResult_CommitmentSignedDecodeErrorZ;
219 class CVec_UpdateAddHTLCZ;
220 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
221 class COption_u32Z;
222 class CResult_InitFeaturesDecodeErrorZ;
223 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
224 class CResult_PaymentIdPaymentSendFailureZ;
225 class CResult_ReplyChannelRangeDecodeErrorZ;
226 class CResult_CommitmentTransactionDecodeErrorZ;
227 class COption_C2Tuple_usizeTransactionZZ;
228 class CResult_TransactionNoneZ;
229 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
230 class CResult_PingDecodeErrorZ;
231 class CResult_GossipTimestampFilterDecodeErrorZ;
232 class CResult_InvoiceSignOrCreationErrorZ;
233 class COption_FilterZ;
234 class CVec_TransactionOutputsZ;
235 class CResult_ErrorMessageDecodeErrorZ;
236 class CResult_OpenChannelDecodeErrorZ;
237 class CVec_CVec_u8ZZ;
238 class CResult_SecretKeyErrorZ;
239 class CResult_ShutdownScriptDecodeErrorZ;
240 class CResult_ProbabilisticScorerDecodeErrorZ;
241 class CResult_QueryChannelRangeDecodeErrorZ;
242 class CResult_TxCreationKeysDecodeErrorZ;
243 class C2Tuple_usizeTransactionZ;
244 class CResult_ChannelFeaturesDecodeErrorZ;
245 class CVec_ChannelMonitorZ;
246 class CVec_TransactionZ;
247 class CResult_ChannelReadyDecodeErrorZ;
248 class CResult_RouteHopDecodeErrorZ;
249 class CResult_UpdateFeeDecodeErrorZ;
250 class CResult_NodeAnnouncementDecodeErrorZ;
251 class CVec_BalanceZ;
252 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
253 class CResult_boolLightningErrorZ;
254 class CResult_TxCreationKeysErrorZ;
255 class COption_HTLCDestinationZ;
256 class CResult_NodeIdDecodeErrorZ;
257 class CResult_ShutdownScriptInvalidShutdownScriptZ;
258 class CResult_NodeAnnouncementInfoDecodeErrorZ;
259 class CResult_COption_NetworkUpdateZDecodeErrorZ;
260 class CResult_RecoverableSignatureNoneZ;
261 class C2Tuple_BlockHashChannelMonitorZ;
262 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
263 class CVec_UpdateFailMalformedHTLCZ;
264 class CResult_FundingSignedDecodeErrorZ;
265 class CResult_NetworkGraphDecodeErrorZ;
266 class CVec_RouteHopZ;
267 class CResult_NonePaymentSendFailureZ;
268 class CResult_NodeInfoDecodeErrorZ;
269 class CResult_RouteLightningErrorZ;
270 class CResult_ChannelPublicKeysDecodeErrorZ;
271 class CVec_NodeIdZ;
272 class CVec_u8Z;
273 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
274 class CVec_ThirtyTwoBytesZ;
275 class CResult_ClosingSignedDecodeErrorZ;
276 class CResult_HolderCommitmentTransactionDecodeErrorZ;
277 class CVec_CResult_NoneAPIErrorZZ;
278 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
279 class CResult_ChannelCounterpartyDecodeErrorZ;
280 class CResult_WarningMessageDecodeErrorZ;
281 class CResult_SignatureNoneZ;
282 class CVec_RouteHintHopZ;
283 class CResult_SecretKeyNoneZ;
284 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
285 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
286 class CResult_PaymentParametersDecodeErrorZ;
287 class CResult_PaymentPurposeDecodeErrorZ;
288 class CResult_InitDecodeErrorZ;
289 class CResult_OutPointDecodeErrorZ;
290 class CVec_ChannelDetailsZ;
291 class CResult_SignDecodeErrorZ;
292 class CVec_MessageSendEventZ;
293 class COption_NetAddressZ;
294 class C2Tuple_OutPointScriptZ;
295 class CResult_RouteHintHopDecodeErrorZ;
296 class CResult_C2Tuple_SignatureSignatureZNoneZ;
297 class CVec_NodeAnnouncementZ;
298 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
299 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
300 class CVec_TxidZ;
301 class COption_AccessZ;
302 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
303 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
304 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
305 class CResult_CVec_CVec_u8ZZNoneZ;
306 class C2Tuple_SignatureSignatureZ;
307 class C2Tuple_PaymentHashPaymentSecretZ;
308 class C2Tuple_BlockHashChannelManagerZ;
309 class CResult_ChannelTransactionParametersDecodeErrorZ;
310 class CResult_AcceptChannelDecodeErrorZ;
311 class CVec_SignatureZ;
312 class CVec_u64Z;
313 class CResult_PongDecodeErrorZ;
314 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
315 class C2Tuple_PaymentHashPaymentIdZ;
316 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
317 class CResult_NoneErrorZ;
318 class CResult_COption_HTLCDestinationZDecodeErrorZ;
319 class CResult_StringErrorZ;
320 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
321 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
322 class COption_EventZ;
323 class CResult_ChannelTypeFeaturesDecodeErrorZ;
324 class CResult_SiPrefixParseErrorZ;
325 class CVec_RouteHintZ;
326 class COption_u16Z;
327 class CVec_CVec_RouteHopZZ;
328 class CResult_TrustedCommitmentTransactionNoneZ;
329 class CResult_FixedPenaltyScorerDecodeErrorZ;
330 class CResult_NoneLightningErrorZ;
331 class CResult_NonePeerHandleErrorZ;
332 class CResult_COption_EventZDecodeErrorZ;
333 class CResult_CVec_SignatureZNoneZ;
334 class COption_CVec_NetAddressZZ;
335 class CResult__u832APIErrorZ;
336 class CResult_PaymentIdPaymentErrorZ;
337 class CResult_DescriptionCreationErrorZ;
338 class CResult_RoutingFeesDecodeErrorZ;
339 class CResult_PayeePubKeyErrorZ;
340 class CResult_COption_MonitorEventZDecodeErrorZ;
341 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ;
342 class CVec_C2Tuple_PublicKeyTypeZZ;
343 class CResult_InvoiceSemanticErrorZ;
344 class CResult_u32GraphSyncErrorZ;
345 class CResult_UpdateAddHTLCDecodeErrorZ;
346 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
347 class CResult_NoneAPIErrorZ;
348 class CVec_NetAddressZ;
349 class CResult_ChannelDetailsDecodeErrorZ;
350 class CVec_PublicKeyZ;
351 class CVec_C2Tuple_usizeTransactionZZ;
352 class CResult_QueryShortChannelIdsDecodeErrorZ;
353 class CVec_PhantomRouteHintsZ;
354 class COption_MonitorEventZ;
355 class C2Tuple_u64u64Z;
356 class COption_TypeZ;
357 class CResult_COption_TypeZDecodeErrorZ;
358 class C2Tuple_u32TxOutZ;
359 class CResult_UpdateFailHTLCDecodeErrorZ;
360 class CResult_InvoiceParseOrSemanticErrorZ;
361 class CResult_PaymentSecretNoneZ;
362 class CResult_ChannelConfigDecodeErrorZ;
363 class CVec_PrivateRouteZ;
364 class CResult_SpendableOutputDescriptorDecodeErrorZ;
365 class CResult_RevokeAndACKDecodeErrorZ;
366 class CResult_UnsignedChannelUpdateDecodeErrorZ;
367 class CResult_ShutdownDecodeErrorZ;
368 class CVec_EventZ;
369 class CResult_NoneSemanticErrorZ;
370 class CVec_MonitorEventZ;
371 class CVec_PaymentPreimageZ;
372 class CVec_C2Tuple_u32ScriptZZ;
373 class CResult_NoneChannelMonitorUpdateErrZ;
374 class CResult_COption_ClosureReasonZDecodeErrorZ;
375 class CResult_PublicKeyErrorZ;
376 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ;
377 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
378 class CResult_NoneNoneZ;
379 class CResult_RouteParametersDecodeErrorZ;
380 class COption_ClosureReasonZ;
381 class CResult_NodeAliasDecodeErrorZ;
382 class CVec_APIErrorZ;
383 class CResult_PrivateRouteCreationErrorZ;
384 class CResult_boolPeerHandleErrorZ;
385 class CVec_UpdateFulfillHTLCZ;
386 class CResult_AnnouncementSignaturesDecodeErrorZ;
387 class CResult_UpdateFulfillHTLCDecodeErrorZ;
388 class CResult_ChannelUpdateDecodeErrorZ;
389 class CResult_NodeFeaturesDecodeErrorZ;
390 class CVec_u5Z;
391 class CResult_InMemorySignerDecodeErrorZ;
392 class CResult_PaymentSecretAPIErrorZ;
393 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
394 class CResult_SignedRawInvoiceParseErrorZ;
395 class C2Tuple_u32ScriptZ;
396 class CResult_RouteDecodeErrorZ;
397 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
398 class COption_NoneZ;
399 class CResult_ChannelUpdateInfoDecodeErrorZ;
400 class CVec_TxOutZ;
401 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
402 class CVec_UpdateFailHTLCZ;
403 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
404
405 class Str {
406 private:
407         LDKStr self;
408 public:
409         Str(const Str&) = delete;
410         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
411         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
412         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
413         ~Str() { Str_free(self); }
414         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
415         LDKStr* operator &() { return &self; }
416         LDKStr* operator ->() { return &self; }
417         const LDKStr* operator &() const { return &self; }
418         const LDKStr* operator ->() const { return &self; }
419 };
420 class CounterpartyCommitmentSecrets {
421 private:
422         LDKCounterpartyCommitmentSecrets self;
423 public:
424         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
425         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
426         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
427         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
428         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
429         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
430         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
431         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
432         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
433         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
434 };
435 class TxCreationKeys {
436 private:
437         LDKTxCreationKeys self;
438 public:
439         TxCreationKeys(const TxCreationKeys&) = delete;
440         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
441         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
442         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
443         ~TxCreationKeys() { TxCreationKeys_free(self); }
444         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
445         LDKTxCreationKeys* operator &() { return &self; }
446         LDKTxCreationKeys* operator ->() { return &self; }
447         const LDKTxCreationKeys* operator &() const { return &self; }
448         const LDKTxCreationKeys* operator ->() const { return &self; }
449 };
450 class ChannelPublicKeys {
451 private:
452         LDKChannelPublicKeys self;
453 public:
454         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
455         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
456         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
457         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
458         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
459         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
460         LDKChannelPublicKeys* operator &() { return &self; }
461         LDKChannelPublicKeys* operator ->() { return &self; }
462         const LDKChannelPublicKeys* operator &() const { return &self; }
463         const LDKChannelPublicKeys* operator ->() const { return &self; }
464 };
465 class HTLCOutputInCommitment {
466 private:
467         LDKHTLCOutputInCommitment self;
468 public:
469         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
470         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
471         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
472         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
473         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
474         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
475         LDKHTLCOutputInCommitment* operator &() { return &self; }
476         LDKHTLCOutputInCommitment* operator ->() { return &self; }
477         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
478         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
479 };
480 class ChannelTransactionParameters {
481 private:
482         LDKChannelTransactionParameters self;
483 public:
484         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
485         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
486         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
487         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
488         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
489         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
490         LDKChannelTransactionParameters* operator &() { return &self; }
491         LDKChannelTransactionParameters* operator ->() { return &self; }
492         const LDKChannelTransactionParameters* operator &() const { return &self; }
493         const LDKChannelTransactionParameters* operator ->() const { return &self; }
494 };
495 class CounterpartyChannelTransactionParameters {
496 private:
497         LDKCounterpartyChannelTransactionParameters self;
498 public:
499         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
500         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
501         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
502         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
503         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
504         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
505         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
506         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
507         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
508         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
509 };
510 class DirectedChannelTransactionParameters {
511 private:
512         LDKDirectedChannelTransactionParameters self;
513 public:
514         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
515         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
516         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
517         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
518         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
519         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
520         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
521         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
522         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
523         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
524 };
525 class HolderCommitmentTransaction {
526 private:
527         LDKHolderCommitmentTransaction self;
528 public:
529         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
530         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
531         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
532         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
533         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
534         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
535         LDKHolderCommitmentTransaction* operator &() { return &self; }
536         LDKHolderCommitmentTransaction* operator ->() { return &self; }
537         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
538         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
539 };
540 class BuiltCommitmentTransaction {
541 private:
542         LDKBuiltCommitmentTransaction self;
543 public:
544         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
545         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
546         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
547         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
548         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
549         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
550         LDKBuiltCommitmentTransaction* operator &() { return &self; }
551         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
552         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
553         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
554 };
555 class ClosingTransaction {
556 private:
557         LDKClosingTransaction self;
558 public:
559         ClosingTransaction(const ClosingTransaction&) = delete;
560         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
561         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
562         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
563         ~ClosingTransaction() { ClosingTransaction_free(self); }
564         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
565         LDKClosingTransaction* operator &() { return &self; }
566         LDKClosingTransaction* operator ->() { return &self; }
567         const LDKClosingTransaction* operator &() const { return &self; }
568         const LDKClosingTransaction* operator ->() const { return &self; }
569 };
570 class TrustedClosingTransaction {
571 private:
572         LDKTrustedClosingTransaction self;
573 public:
574         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
575         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
576         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
577         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
578         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
579         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
580         LDKTrustedClosingTransaction* operator &() { return &self; }
581         LDKTrustedClosingTransaction* operator ->() { return &self; }
582         const LDKTrustedClosingTransaction* operator &() const { return &self; }
583         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
584 };
585 class CommitmentTransaction {
586 private:
587         LDKCommitmentTransaction self;
588 public:
589         CommitmentTransaction(const CommitmentTransaction&) = delete;
590         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
591         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
592         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
593         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
594         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
595         LDKCommitmentTransaction* operator &() { return &self; }
596         LDKCommitmentTransaction* operator ->() { return &self; }
597         const LDKCommitmentTransaction* operator &() const { return &self; }
598         const LDKCommitmentTransaction* operator ->() const { return &self; }
599 };
600 class TrustedCommitmentTransaction {
601 private:
602         LDKTrustedCommitmentTransaction self;
603 public:
604         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
605         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
606         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
607         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
608         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
609         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
610         LDKTrustedCommitmentTransaction* operator &() { return &self; }
611         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
612         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
613         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
614 };
615 class ShutdownScript {
616 private:
617         LDKShutdownScript self;
618 public:
619         ShutdownScript(const ShutdownScript&) = delete;
620         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
621         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
622         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
623         ~ShutdownScript() { ShutdownScript_free(self); }
624         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
625         LDKShutdownScript* operator &() { return &self; }
626         LDKShutdownScript* operator ->() { return &self; }
627         const LDKShutdownScript* operator &() const { return &self; }
628         const LDKShutdownScript* operator ->() const { return &self; }
629 };
630 class InvalidShutdownScript {
631 private:
632         LDKInvalidShutdownScript self;
633 public:
634         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
635         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
636         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
637         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
638         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
639         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
640         LDKInvalidShutdownScript* operator &() { return &self; }
641         LDKInvalidShutdownScript* operator ->() { return &self; }
642         const LDKInvalidShutdownScript* operator &() const { return &self; }
643         const LDKInvalidShutdownScript* operator ->() const { return &self; }
644 };
645 class BackgroundProcessor {
646 private:
647         LDKBackgroundProcessor self;
648 public:
649         BackgroundProcessor(const BackgroundProcessor&) = delete;
650         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
651         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
652         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
653         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
654         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
655         LDKBackgroundProcessor* operator &() { return &self; }
656         LDKBackgroundProcessor* operator ->() { return &self; }
657         const LDKBackgroundProcessor* operator &() const { return &self; }
658         const LDKBackgroundProcessor* operator ->() const { return &self; }
659 };
660 class GossipSync {
661 private:
662         LDKGossipSync self;
663 public:
664         GossipSync(const GossipSync&) = delete;
665         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
666         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
667         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
668         ~GossipSync() { GossipSync_free(self); }
669         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
670         LDKGossipSync* operator &() { return &self; }
671         LDKGossipSync* operator ->() { return &self; }
672         const LDKGossipSync* operator &() const { return &self; }
673         const LDKGossipSync* operator ->() const { return &self; }
674 };
675 class RouteHop {
676 private:
677         LDKRouteHop self;
678 public:
679         RouteHop(const RouteHop&) = delete;
680         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
681         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
682         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
683         ~RouteHop() { RouteHop_free(self); }
684         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
685         LDKRouteHop* operator &() { return &self; }
686         LDKRouteHop* operator ->() { return &self; }
687         const LDKRouteHop* operator &() const { return &self; }
688         const LDKRouteHop* operator ->() const { return &self; }
689 };
690 class Route {
691 private:
692         LDKRoute self;
693 public:
694         Route(const Route&) = delete;
695         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
696         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
697         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
698         ~Route() { Route_free(self); }
699         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
700         LDKRoute* operator &() { return &self; }
701         LDKRoute* operator ->() { return &self; }
702         const LDKRoute* operator &() const { return &self; }
703         const LDKRoute* operator ->() const { return &self; }
704 };
705 class RouteParameters {
706 private:
707         LDKRouteParameters self;
708 public:
709         RouteParameters(const RouteParameters&) = delete;
710         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
711         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
712         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
713         ~RouteParameters() { RouteParameters_free(self); }
714         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
715         LDKRouteParameters* operator &() { return &self; }
716         LDKRouteParameters* operator ->() { return &self; }
717         const LDKRouteParameters* operator &() const { return &self; }
718         const LDKRouteParameters* operator ->() const { return &self; }
719 };
720 class PaymentParameters {
721 private:
722         LDKPaymentParameters self;
723 public:
724         PaymentParameters(const PaymentParameters&) = delete;
725         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
726         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
727         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
728         ~PaymentParameters() { PaymentParameters_free(self); }
729         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
730         LDKPaymentParameters* operator &() { return &self; }
731         LDKPaymentParameters* operator ->() { return &self; }
732         const LDKPaymentParameters* operator &() const { return &self; }
733         const LDKPaymentParameters* operator ->() const { return &self; }
734 };
735 class RouteHint {
736 private:
737         LDKRouteHint self;
738 public:
739         RouteHint(const RouteHint&) = delete;
740         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
741         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
742         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
743         ~RouteHint() { RouteHint_free(self); }
744         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
745         LDKRouteHint* operator &() { return &self; }
746         LDKRouteHint* operator ->() { return &self; }
747         const LDKRouteHint* operator &() const { return &self; }
748         const LDKRouteHint* operator ->() const { return &self; }
749 };
750 class RouteHintHop {
751 private:
752         LDKRouteHintHop self;
753 public:
754         RouteHintHop(const RouteHintHop&) = delete;
755         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
756         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
757         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
758         ~RouteHintHop() { RouteHintHop_free(self); }
759         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
760         LDKRouteHintHop* operator &() { return &self; }
761         LDKRouteHintHop* operator ->() { return &self; }
762         const LDKRouteHintHop* operator &() const { return &self; }
763         const LDKRouteHintHop* operator ->() const { return &self; }
764 };
765 class BroadcasterInterface {
766 private:
767         LDKBroadcasterInterface self;
768 public:
769         BroadcasterInterface(const BroadcasterInterface&) = delete;
770         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
771         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
772         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
773         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
774         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
775         LDKBroadcasterInterface* operator &() { return &self; }
776         LDKBroadcasterInterface* operator ->() { return &self; }
777         const LDKBroadcasterInterface* operator &() const { return &self; }
778         const LDKBroadcasterInterface* operator ->() const { return &self; }
779         /**
780          *  Sends a transaction out to (hopefully) be mined.
781          */
782         inline void broadcast_transaction(struct LDKTransaction tx);
783 };
784 class ConfirmationTarget {
785 private:
786         LDKConfirmationTarget self;
787 public:
788         ConfirmationTarget(const ConfirmationTarget&) = delete;
789         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
790         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
791         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
792         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
793         LDKConfirmationTarget* operator &() { return &self; }
794         LDKConfirmationTarget* operator ->() { return &self; }
795         const LDKConfirmationTarget* operator &() const { return &self; }
796         const LDKConfirmationTarget* operator ->() const { return &self; }
797 };
798 class FeeEstimator {
799 private:
800         LDKFeeEstimator self;
801 public:
802         FeeEstimator(const FeeEstimator&) = delete;
803         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
804         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
805         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
806         ~FeeEstimator() { FeeEstimator_free(self); }
807         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
808         LDKFeeEstimator* operator &() { return &self; }
809         LDKFeeEstimator* operator ->() { return &self; }
810         const LDKFeeEstimator* operator &() const { return &self; }
811         const LDKFeeEstimator* operator ->() const { return &self; }
812         /**
813          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
814          * 
815          *  LDK will wrap this method and ensure that the value returned is no smaller than 253
816          *  (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
817          * 
818          *  The following unit conversions can be used to convert to sats/KW:
819          *   * satoshis-per-byte * 250
820          *   * satoshis-per-kbyte / 4
821          */
822         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
823 };
824 class PaymentPurpose {
825 private:
826         LDKPaymentPurpose self;
827 public:
828         PaymentPurpose(const PaymentPurpose&) = delete;
829         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
830         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
831         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
832         ~PaymentPurpose() { PaymentPurpose_free(self); }
833         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
834         LDKPaymentPurpose* operator &() { return &self; }
835         LDKPaymentPurpose* operator ->() { return &self; }
836         const LDKPaymentPurpose* operator &() const { return &self; }
837         const LDKPaymentPurpose* operator ->() const { return &self; }
838 };
839 class ClosureReason {
840 private:
841         LDKClosureReason self;
842 public:
843         ClosureReason(const ClosureReason&) = delete;
844         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
845         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
846         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
847         ~ClosureReason() { ClosureReason_free(self); }
848         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
849         LDKClosureReason* operator &() { return &self; }
850         LDKClosureReason* operator ->() { return &self; }
851         const LDKClosureReason* operator &() const { return &self; }
852         const LDKClosureReason* operator ->() const { return &self; }
853 };
854 class HTLCDestination {
855 private:
856         LDKHTLCDestination self;
857 public:
858         HTLCDestination(const HTLCDestination&) = delete;
859         HTLCDestination(HTLCDestination&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCDestination)); }
860         HTLCDestination(LDKHTLCDestination&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCDestination)); }
861         operator LDKHTLCDestination() && { LDKHTLCDestination res = self; memset(&self, 0, sizeof(LDKHTLCDestination)); return res; }
862         ~HTLCDestination() { HTLCDestination_free(self); }
863         HTLCDestination& operator=(HTLCDestination&& o) { HTLCDestination_free(self); self = o.self; memset(&o, 0, sizeof(HTLCDestination)); return *this; }
864         LDKHTLCDestination* operator &() { return &self; }
865         LDKHTLCDestination* operator ->() { return &self; }
866         const LDKHTLCDestination* operator &() const { return &self; }
867         const LDKHTLCDestination* operator ->() const { return &self; }
868 };
869 class Event {
870 private:
871         LDKEvent self;
872 public:
873         Event(const Event&) = delete;
874         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
875         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
876         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
877         ~Event() { Event_free(self); }
878         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
879         LDKEvent* operator &() { return &self; }
880         LDKEvent* operator ->() { return &self; }
881         const LDKEvent* operator &() const { return &self; }
882         const LDKEvent* operator ->() const { return &self; }
883 };
884 class MessageSendEvent {
885 private:
886         LDKMessageSendEvent self;
887 public:
888         MessageSendEvent(const MessageSendEvent&) = delete;
889         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
890         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
891         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
892         ~MessageSendEvent() { MessageSendEvent_free(self); }
893         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
894         LDKMessageSendEvent* operator &() { return &self; }
895         LDKMessageSendEvent* operator ->() { return &self; }
896         const LDKMessageSendEvent* operator &() const { return &self; }
897         const LDKMessageSendEvent* operator ->() const { return &self; }
898 };
899 class MessageSendEventsProvider {
900 private:
901         LDKMessageSendEventsProvider self;
902 public:
903         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
904         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
905         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
906         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
907         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
908         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
909         LDKMessageSendEventsProvider* operator &() { return &self; }
910         LDKMessageSendEventsProvider* operator ->() { return &self; }
911         const LDKMessageSendEventsProvider* operator &() const { return &self; }
912         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
913         /**
914          *  Gets the list of pending events which were generated by previous actions, clearing the list
915          *  in the process.
916          */
917         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
918 };
919 class EventsProvider {
920 private:
921         LDKEventsProvider self;
922 public:
923         EventsProvider(const EventsProvider&) = delete;
924         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
925         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
926         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
927         ~EventsProvider() { EventsProvider_free(self); }
928         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
929         LDKEventsProvider* operator &() { return &self; }
930         LDKEventsProvider* operator ->() { return &self; }
931         const LDKEventsProvider* operator &() const { return &self; }
932         const LDKEventsProvider* operator ->() const { return &self; }
933         /**
934          *  Processes any events generated since the last call using the given event handler.
935          * 
936          *  Subsequent calls must only process new events. However, handlers must be capable of handling
937          *  duplicate events across process restarts. This may occur if the provider was recovered from
938          *  an old state (i.e., it hadn't been successfully persisted after processing pending events).
939          */
940         inline void process_pending_events(struct LDKEventHandler handler);
941 };
942 class EventHandler {
943 private:
944         LDKEventHandler self;
945 public:
946         EventHandler(const EventHandler&) = delete;
947         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
948         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
949         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
950         ~EventHandler() { EventHandler_free(self); }
951         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
952         LDKEventHandler* operator &() { return &self; }
953         LDKEventHandler* operator ->() { return &self; }
954         const LDKEventHandler* operator &() const { return &self; }
955         const LDKEventHandler* operator ->() const { return &self; }
956         /**
957          *  Handles the given [`Event`].
958          * 
959          *  See [`EventsProvider`] for details that must be considered when implementing this method.
960          */
961         inline void handle_event(const struct LDKEvent *NONNULL_PTR event);
962 };
963 class BestBlock {
964 private:
965         LDKBestBlock self;
966 public:
967         BestBlock(const BestBlock&) = delete;
968         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
969         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
970         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
971         ~BestBlock() { BestBlock_free(self); }
972         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
973         LDKBestBlock* operator &() { return &self; }
974         LDKBestBlock* operator ->() { return &self; }
975         const LDKBestBlock* operator &() const { return &self; }
976         const LDKBestBlock* operator ->() const { return &self; }
977 };
978 class AccessError {
979 private:
980         LDKAccessError self;
981 public:
982         AccessError(const AccessError&) = delete;
983         AccessError(AccessError&& o) : self(o.self) { memset(&o, 0, sizeof(AccessError)); }
984         AccessError(LDKAccessError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccessError)); }
985         operator LDKAccessError() && { LDKAccessError res = self; memset(&self, 0, sizeof(LDKAccessError)); return res; }
986         AccessError& operator=(AccessError&& o) { self = o.self; memset(&o, 0, sizeof(AccessError)); return *this; }
987         LDKAccessError* operator &() { return &self; }
988         LDKAccessError* operator ->() { return &self; }
989         const LDKAccessError* operator &() const { return &self; }
990         const LDKAccessError* operator ->() const { return &self; }
991 };
992 class Access {
993 private:
994         LDKAccess self;
995 public:
996         Access(const Access&) = delete;
997         Access(Access&& o) : self(o.self) { memset(&o, 0, sizeof(Access)); }
998         Access(LDKAccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccess)); }
999         operator LDKAccess() && { LDKAccess res = self; memset(&self, 0, sizeof(LDKAccess)); return res; }
1000         ~Access() { Access_free(self); }
1001         Access& operator=(Access&& o) { Access_free(self); self = o.self; memset(&o, 0, sizeof(Access)); return *this; }
1002         LDKAccess* operator &() { return &self; }
1003         LDKAccess* operator ->() { return &self; }
1004         const LDKAccess* operator &() const { return &self; }
1005         const LDKAccess* operator ->() const { return &self; }
1006         /**
1007          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
1008          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
1009          *  is unknown.
1010          * 
1011          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
1012          */
1013         inline LDK::CResult_TxOutAccessErrorZ get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
1014 };
1015 class Listen {
1016 private:
1017         LDKListen self;
1018 public:
1019         Listen(const Listen&) = delete;
1020         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
1021         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
1022         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1023         ~Listen() { Listen_free(self); }
1024         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
1025         LDKListen* operator &() { return &self; }
1026         LDKListen* operator ->() { return &self; }
1027         const LDKListen* operator &() const { return &self; }
1028         const LDKListen* operator ->() const { return &self; }
1029         /**
1030          *  Notifies the listener that a block was added at the given height, with the transaction data
1031          *  possibly filtered.
1032          */
1033         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1034         /**
1035          *  Notifies the listener that a block was added at the given height.
1036          */
1037         inline void block_connected(struct LDKu8slice block, uint32_t height);
1038         /**
1039          *  Notifies the listener that a block was removed at the given height.
1040          */
1041         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
1042 };
1043 class Confirm {
1044 private:
1045         LDKConfirm self;
1046 public:
1047         Confirm(const Confirm&) = delete;
1048         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
1049         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
1050         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
1051         ~Confirm() { Confirm_free(self); }
1052         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
1053         LDKConfirm* operator &() { return &self; }
1054         LDKConfirm* operator ->() { return &self; }
1055         const LDKConfirm* operator &() const { return &self; }
1056         const LDKConfirm* operator ->() const { return &self; }
1057         /**
1058          *  Processes transactions confirmed in a block with a given header and height.
1059          * 
1060          *  Should be called for any transactions registered by [`Filter::register_tx`] or any
1061          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
1062          *  appearing in the same block do not need to be included in the same call; instead, multiple
1063          *  calls with additional transactions may be made so long as they are made in [chain order].
1064          * 
1065          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
1066          *  in the event of a chain reorganization, it must not be called with a `header` that is no
1067          *  longer in the chain as of the last call to [`best_block_updated`].
1068          * 
1069          *  [chain order]: Confirm#Order
1070          *  [`best_block_updated`]: Self::best_block_updated
1071          */
1072         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1073         /**
1074          *  Processes a transaction that is no longer confirmed as result of a chain reorganization.
1075          * 
1076          *  Should be called for any transaction returned by [`get_relevant_txids`] if it has been
1077          *  reorganized out of the best chain. Once called, the given transaction should not be returned
1078          *  by [`get_relevant_txids`] unless it has been reconfirmed via [`transactions_confirmed`].
1079          * 
1080          *  [`get_relevant_txids`]: Self::get_relevant_txids
1081          *  [`transactions_confirmed`]: Self::transactions_confirmed
1082          */
1083         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
1084         /**
1085          *  Processes an update to the best header connected at the given height.
1086          * 
1087          *  Should be called when a new header is available but may be skipped for intermediary blocks
1088          *  if they become available at the same time.
1089          */
1090         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
1091         /**
1092          *  Returns transactions that should be monitored for reorganization out of the chain.
1093          * 
1094          *  Should include any transactions passed to [`transactions_confirmed`] that have insufficient
1095          *  confirmations to be safe from a chain reorganization. Should not include any transactions
1096          *  passed to [`transaction_unconfirmed`] unless later reconfirmed.
1097          * 
1098          *  May be called to determine the subset of transactions that must still be monitored for
1099          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
1100          *  other interface methods. Thus, this is useful to determine which transactions may need to be
1101          *  given to [`transaction_unconfirmed`].
1102          * 
1103          *  [`transactions_confirmed`]: Self::transactions_confirmed
1104          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
1105          */
1106         inline LDK::CVec_TxidZ get_relevant_txids();
1107 };
1108 class ChannelMonitorUpdateErr {
1109 private:
1110         LDKChannelMonitorUpdateErr self;
1111 public:
1112         ChannelMonitorUpdateErr(const ChannelMonitorUpdateErr&) = delete;
1113         ChannelMonitorUpdateErr(ChannelMonitorUpdateErr&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); }
1114         ChannelMonitorUpdateErr(LDKChannelMonitorUpdateErr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateErr)); }
1115         operator LDKChannelMonitorUpdateErr() && { LDKChannelMonitorUpdateErr res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateErr)); return res; }
1116         ChannelMonitorUpdateErr& operator=(ChannelMonitorUpdateErr&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); return *this; }
1117         LDKChannelMonitorUpdateErr* operator &() { return &self; }
1118         LDKChannelMonitorUpdateErr* operator ->() { return &self; }
1119         const LDKChannelMonitorUpdateErr* operator &() const { return &self; }
1120         const LDKChannelMonitorUpdateErr* operator ->() const { return &self; }
1121 };
1122 class Watch {
1123 private:
1124         LDKWatch self;
1125 public:
1126         Watch(const Watch&) = delete;
1127         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
1128         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
1129         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
1130         ~Watch() { Watch_free(self); }
1131         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
1132         LDKWatch* operator &() { return &self; }
1133         LDKWatch* operator ->() { return &self; }
1134         const LDKWatch* operator &() const { return &self; }
1135         const LDKWatch* operator ->() const { return &self; }
1136         /**
1137          *  Watches a channel identified by `funding_txo` using `monitor`.
1138          * 
1139          *  Implementations are responsible for watching the chain for the funding transaction along
1140          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
1141          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
1142          * 
1143          *  Note: this interface MUST error with `ChannelMonitorUpdateErr::PermanentFailure` if
1144          *  the given `funding_txo` has previously been registered via `watch_channel`.
1145          * 
1146          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
1147          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
1148          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
1149          */
1150         inline LDK::CResult_NoneChannelMonitorUpdateErrZ watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
1151         /**
1152          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
1153          * 
1154          *  Implementations must call [`update_monitor`] with the given update. See
1155          *  [`ChannelMonitorUpdateErr`] for invariants around returning an error.
1156          * 
1157          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1158          */
1159         inline LDK::CResult_NoneChannelMonitorUpdateErrZ update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
1160         /**
1161          *  Returns any monitor events since the last call. Subsequent calls must only return new
1162          *  events.
1163          * 
1164          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1165          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1166          *  to disk.
1167          * 
1168          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1169          *  [`MonitorEvent::UpdateCompleted`] here, see [`ChannelMonitorUpdateErr::TemporaryFailure`].
1170          */
1171         inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ release_pending_monitor_events();
1172 };
1173 class Filter {
1174 private:
1175         LDKFilter self;
1176 public:
1177         Filter(const Filter&) = delete;
1178         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1179         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1180         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1181         ~Filter() { Filter_free(self); }
1182         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1183         LDKFilter* operator &() { return &self; }
1184         LDKFilter* operator ->() { return &self; }
1185         const LDKFilter* operator &() const { return &self; }
1186         const LDKFilter* operator ->() const { return &self; }
1187         /**
1188          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1189          *  a spending condition.
1190          */
1191         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1192         /**
1193          *  Registers interest in spends of a transaction output.
1194          * 
1195          *  Optionally, when `output.block_hash` is set, should return any transaction spending the
1196          *  output that is found in the corresponding block along with its index.
1197          * 
1198          *  This return value is useful for Electrum clients in order to supply in-block descendant
1199          *  transactions which otherwise were not included. This is not necessary for other clients if
1200          *  such descendant transactions were already included (e.g., when a BIP 157 client provides the
1201          *  full block).
1202          */
1203         inline LDK::COption_C2Tuple_usizeTransactionZZ register_output(struct LDKWatchedOutput output);
1204 };
1205 class WatchedOutput {
1206 private:
1207         LDKWatchedOutput self;
1208 public:
1209         WatchedOutput(const WatchedOutput&) = delete;
1210         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1211         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1212         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1213         ~WatchedOutput() { WatchedOutput_free(self); }
1214         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1215         LDKWatchedOutput* operator &() { return &self; }
1216         LDKWatchedOutput* operator ->() { return &self; }
1217         const LDKWatchedOutput* operator &() const { return &self; }
1218         const LDKWatchedOutput* operator ->() const { return &self; }
1219 };
1220 class Score {
1221 private:
1222         LDKScore self;
1223 public:
1224         Score(const Score&) = delete;
1225         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1226         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1227         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1228         ~Score() { Score_free(self); }
1229         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1230         LDKScore* operator &() { return &self; }
1231         LDKScore* operator ->() { return &self; }
1232         const LDKScore* operator &() const { return &self; }
1233         const LDKScore* operator ->() const { return &self; }
1234         /**
1235          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1236          *  given channel in the direction from `source` to `target`.
1237          * 
1238          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1239          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1240          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1241          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1242          *  Thus, implementations should be overflow-safe.
1243          */
1244         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);
1245         /**
1246          *  Handles updating channel penalties after failing to route through a channel.
1247          */
1248         inline void payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1249         /**
1250          *  Handles updating channel penalties after successfully routing along a path.
1251          */
1252         inline void payment_path_successful(struct LDKCVec_RouteHopZ path);
1253         /**
1254          *  Handles updating channel penalties after a probe over the given path failed.
1255          */
1256         inline void probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1257         /**
1258          *  Handles updating channel penalties after a probe over the given path succeeded.
1259          */
1260         inline void probe_successful(struct LDKCVec_RouteHopZ path);
1261 };
1262 class LockableScore {
1263 private:
1264         LDKLockableScore self;
1265 public:
1266         LockableScore(const LockableScore&) = delete;
1267         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1268         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1269         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1270         ~LockableScore() { LockableScore_free(self); }
1271         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1272         LDKLockableScore* operator &() { return &self; }
1273         LDKLockableScore* operator ->() { return &self; }
1274         const LDKLockableScore* operator &() const { return &self; }
1275         const LDKLockableScore* operator ->() const { return &self; }
1276         /**
1277          *  Returns the locked scorer.
1278          */
1279         inline LDK::Score lock();
1280 };
1281 class MultiThreadedLockableScore {
1282 private:
1283         LDKMultiThreadedLockableScore self;
1284 public:
1285         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1286         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1287         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1288         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1289         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1290         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1291         LDKMultiThreadedLockableScore* operator &() { return &self; }
1292         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1293         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1294         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1295 };
1296 class ChannelUsage {
1297 private:
1298         LDKChannelUsage self;
1299 public:
1300         ChannelUsage(const ChannelUsage&) = delete;
1301         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1302         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1303         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1304         ~ChannelUsage() { ChannelUsage_free(self); }
1305         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1306         LDKChannelUsage* operator &() { return &self; }
1307         LDKChannelUsage* operator ->() { return &self; }
1308         const LDKChannelUsage* operator &() const { return &self; }
1309         const LDKChannelUsage* operator ->() const { return &self; }
1310 };
1311 class FixedPenaltyScorer {
1312 private:
1313         LDKFixedPenaltyScorer self;
1314 public:
1315         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1316         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1317         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1318         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1319         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1320         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1321         LDKFixedPenaltyScorer* operator &() { return &self; }
1322         LDKFixedPenaltyScorer* operator ->() { return &self; }
1323         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1324         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1325 };
1326 class ProbabilisticScorer {
1327 private:
1328         LDKProbabilisticScorer self;
1329 public:
1330         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1331         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1332         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1333         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1334         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1335         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1336         LDKProbabilisticScorer* operator &() { return &self; }
1337         LDKProbabilisticScorer* operator ->() { return &self; }
1338         const LDKProbabilisticScorer* operator &() const { return &self; }
1339         const LDKProbabilisticScorer* operator ->() const { return &self; }
1340 };
1341 class ProbabilisticScoringParameters {
1342 private:
1343         LDKProbabilisticScoringParameters self;
1344 public:
1345         ProbabilisticScoringParameters(const ProbabilisticScoringParameters&) = delete;
1346         ProbabilisticScoringParameters(ProbabilisticScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringParameters)); }
1347         ProbabilisticScoringParameters(LDKProbabilisticScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringParameters)); }
1348         operator LDKProbabilisticScoringParameters() && { LDKProbabilisticScoringParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringParameters)); return res; }
1349         ~ProbabilisticScoringParameters() { ProbabilisticScoringParameters_free(self); }
1350         ProbabilisticScoringParameters& operator=(ProbabilisticScoringParameters&& o) { ProbabilisticScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringParameters)); return *this; }
1351         LDKProbabilisticScoringParameters* operator &() { return &self; }
1352         LDKProbabilisticScoringParameters* operator ->() { return &self; }
1353         const LDKProbabilisticScoringParameters* operator &() const { return &self; }
1354         const LDKProbabilisticScoringParameters* operator ->() const { return &self; }
1355 };
1356 class InitFeatures {
1357 private:
1358         LDKInitFeatures self;
1359 public:
1360         InitFeatures(const InitFeatures&) = delete;
1361         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1362         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1363         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1364         ~InitFeatures() { InitFeatures_free(self); }
1365         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1366         LDKInitFeatures* operator &() { return &self; }
1367         LDKInitFeatures* operator ->() { return &self; }
1368         const LDKInitFeatures* operator &() const { return &self; }
1369         const LDKInitFeatures* operator ->() const { return &self; }
1370 };
1371 class NodeFeatures {
1372 private:
1373         LDKNodeFeatures self;
1374 public:
1375         NodeFeatures(const NodeFeatures&) = delete;
1376         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1377         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1378         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1379         ~NodeFeatures() { NodeFeatures_free(self); }
1380         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1381         LDKNodeFeatures* operator &() { return &self; }
1382         LDKNodeFeatures* operator ->() { return &self; }
1383         const LDKNodeFeatures* operator &() const { return &self; }
1384         const LDKNodeFeatures* operator ->() const { return &self; }
1385 };
1386 class ChannelFeatures {
1387 private:
1388         LDKChannelFeatures self;
1389 public:
1390         ChannelFeatures(const ChannelFeatures&) = delete;
1391         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1392         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1393         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1394         ~ChannelFeatures() { ChannelFeatures_free(self); }
1395         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1396         LDKChannelFeatures* operator &() { return &self; }
1397         LDKChannelFeatures* operator ->() { return &self; }
1398         const LDKChannelFeatures* operator &() const { return &self; }
1399         const LDKChannelFeatures* operator ->() const { return &self; }
1400 };
1401 class InvoiceFeatures {
1402 private:
1403         LDKInvoiceFeatures self;
1404 public:
1405         InvoiceFeatures(const InvoiceFeatures&) = delete;
1406         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1407         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1408         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1409         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1410         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1411         LDKInvoiceFeatures* operator &() { return &self; }
1412         LDKInvoiceFeatures* operator ->() { return &self; }
1413         const LDKInvoiceFeatures* operator &() const { return &self; }
1414         const LDKInvoiceFeatures* operator ->() const { return &self; }
1415 };
1416 class ChannelTypeFeatures {
1417 private:
1418         LDKChannelTypeFeatures self;
1419 public:
1420         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1421         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1422         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1423         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1424         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1425         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1426         LDKChannelTypeFeatures* operator &() { return &self; }
1427         LDKChannelTypeFeatures* operator ->() { return &self; }
1428         const LDKChannelTypeFeatures* operator &() const { return &self; }
1429         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1430 };
1431 class NodeId {
1432 private:
1433         LDKNodeId self;
1434 public:
1435         NodeId(const NodeId&) = delete;
1436         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
1437         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
1438         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
1439         ~NodeId() { NodeId_free(self); }
1440         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
1441         LDKNodeId* operator &() { return &self; }
1442         LDKNodeId* operator ->() { return &self; }
1443         const LDKNodeId* operator &() const { return &self; }
1444         const LDKNodeId* operator ->() const { return &self; }
1445 };
1446 class NetworkGraph {
1447 private:
1448         LDKNetworkGraph self;
1449 public:
1450         NetworkGraph(const NetworkGraph&) = delete;
1451         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
1452         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
1453         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
1454         ~NetworkGraph() { NetworkGraph_free(self); }
1455         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
1456         LDKNetworkGraph* operator &() { return &self; }
1457         LDKNetworkGraph* operator ->() { return &self; }
1458         const LDKNetworkGraph* operator &() const { return &self; }
1459         const LDKNetworkGraph* operator ->() const { return &self; }
1460 };
1461 class ReadOnlyNetworkGraph {
1462 private:
1463         LDKReadOnlyNetworkGraph self;
1464 public:
1465         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
1466         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
1467         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
1468         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
1469         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
1470         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
1471         LDKReadOnlyNetworkGraph* operator &() { return &self; }
1472         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
1473         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
1474         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
1475 };
1476 class NetworkUpdate {
1477 private:
1478         LDKNetworkUpdate self;
1479 public:
1480         NetworkUpdate(const NetworkUpdate&) = delete;
1481         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
1482         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
1483         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
1484         ~NetworkUpdate() { NetworkUpdate_free(self); }
1485         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
1486         LDKNetworkUpdate* operator &() { return &self; }
1487         LDKNetworkUpdate* operator ->() { return &self; }
1488         const LDKNetworkUpdate* operator &() const { return &self; }
1489         const LDKNetworkUpdate* operator ->() const { return &self; }
1490 };
1491 class P2PGossipSync {
1492 private:
1493         LDKP2PGossipSync self;
1494 public:
1495         P2PGossipSync(const P2PGossipSync&) = delete;
1496         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
1497         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
1498         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
1499         ~P2PGossipSync() { P2PGossipSync_free(self); }
1500         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
1501         LDKP2PGossipSync* operator &() { return &self; }
1502         LDKP2PGossipSync* operator ->() { return &self; }
1503         const LDKP2PGossipSync* operator &() const { return &self; }
1504         const LDKP2PGossipSync* operator ->() const { return &self; }
1505 };
1506 class ChannelUpdateInfo {
1507 private:
1508         LDKChannelUpdateInfo self;
1509 public:
1510         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
1511         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
1512         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
1513         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
1514         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
1515         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
1516         LDKChannelUpdateInfo* operator &() { return &self; }
1517         LDKChannelUpdateInfo* operator ->() { return &self; }
1518         const LDKChannelUpdateInfo* operator &() const { return &self; }
1519         const LDKChannelUpdateInfo* operator ->() const { return &self; }
1520 };
1521 class ChannelInfo {
1522 private:
1523         LDKChannelInfo self;
1524 public:
1525         ChannelInfo(const ChannelInfo&) = delete;
1526         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
1527         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
1528         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
1529         ~ChannelInfo() { ChannelInfo_free(self); }
1530         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
1531         LDKChannelInfo* operator &() { return &self; }
1532         LDKChannelInfo* operator ->() { return &self; }
1533         const LDKChannelInfo* operator &() const { return &self; }
1534         const LDKChannelInfo* operator ->() const { return &self; }
1535 };
1536 class DirectedChannelInfo {
1537 private:
1538         LDKDirectedChannelInfo self;
1539 public:
1540         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
1541         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
1542         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
1543         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
1544         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
1545         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
1546         LDKDirectedChannelInfo* operator &() { return &self; }
1547         LDKDirectedChannelInfo* operator ->() { return &self; }
1548         const LDKDirectedChannelInfo* operator &() const { return &self; }
1549         const LDKDirectedChannelInfo* operator ->() const { return &self; }
1550 };
1551 class EffectiveCapacity {
1552 private:
1553         LDKEffectiveCapacity self;
1554 public:
1555         EffectiveCapacity(const EffectiveCapacity&) = delete;
1556         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
1557         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
1558         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
1559         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
1560         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
1561         LDKEffectiveCapacity* operator &() { return &self; }
1562         LDKEffectiveCapacity* operator ->() { return &self; }
1563         const LDKEffectiveCapacity* operator &() const { return &self; }
1564         const LDKEffectiveCapacity* operator ->() const { return &self; }
1565 };
1566 class RoutingFees {
1567 private:
1568         LDKRoutingFees self;
1569 public:
1570         RoutingFees(const RoutingFees&) = delete;
1571         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
1572         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
1573         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
1574         ~RoutingFees() { RoutingFees_free(self); }
1575         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
1576         LDKRoutingFees* operator &() { return &self; }
1577         LDKRoutingFees* operator ->() { return &self; }
1578         const LDKRoutingFees* operator &() const { return &self; }
1579         const LDKRoutingFees* operator ->() const { return &self; }
1580 };
1581 class NodeAnnouncementInfo {
1582 private:
1583         LDKNodeAnnouncementInfo self;
1584 public:
1585         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
1586         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
1587         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
1588         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
1589         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
1590         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
1591         LDKNodeAnnouncementInfo* operator &() { return &self; }
1592         LDKNodeAnnouncementInfo* operator ->() { return &self; }
1593         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
1594         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
1595 };
1596 class NodeAlias {
1597 private:
1598         LDKNodeAlias self;
1599 public:
1600         NodeAlias(const NodeAlias&) = delete;
1601         NodeAlias(NodeAlias&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAlias)); }
1602         NodeAlias(LDKNodeAlias&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAlias)); }
1603         operator LDKNodeAlias() && { LDKNodeAlias res = self; memset(&self, 0, sizeof(LDKNodeAlias)); return res; }
1604         ~NodeAlias() { NodeAlias_free(self); }
1605         NodeAlias& operator=(NodeAlias&& o) { NodeAlias_free(self); self = o.self; memset(&o, 0, sizeof(NodeAlias)); return *this; }
1606         LDKNodeAlias* operator &() { return &self; }
1607         LDKNodeAlias* operator ->() { return &self; }
1608         const LDKNodeAlias* operator &() const { return &self; }
1609         const LDKNodeAlias* operator ->() const { return &self; }
1610 };
1611 class NodeInfo {
1612 private:
1613         LDKNodeInfo self;
1614 public:
1615         NodeInfo(const NodeInfo&) = delete;
1616         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
1617         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
1618         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
1619         ~NodeInfo() { NodeInfo_free(self); }
1620         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
1621         LDKNodeInfo* operator &() { return &self; }
1622         LDKNodeInfo* operator ->() { return &self; }
1623         const LDKNodeInfo* operator &() const { return &self; }
1624         const LDKNodeInfo* operator ->() const { return &self; }
1625 };
1626 class DelayedPaymentOutputDescriptor {
1627 private:
1628         LDKDelayedPaymentOutputDescriptor self;
1629 public:
1630         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
1631         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
1632         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
1633         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
1634         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
1635         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
1636         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
1637         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
1638         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
1639         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
1640 };
1641 class StaticPaymentOutputDescriptor {
1642 private:
1643         LDKStaticPaymentOutputDescriptor self;
1644 public:
1645         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
1646         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
1647         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
1648         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
1649         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
1650         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
1651         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
1652         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
1653         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
1654         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
1655 };
1656 class SpendableOutputDescriptor {
1657 private:
1658         LDKSpendableOutputDescriptor self;
1659 public:
1660         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
1661         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
1662         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
1663         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
1664         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
1665         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
1666         LDKSpendableOutputDescriptor* operator &() { return &self; }
1667         LDKSpendableOutputDescriptor* operator ->() { return &self; }
1668         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
1669         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
1670 };
1671 class BaseSign {
1672 private:
1673         LDKBaseSign self;
1674 public:
1675         BaseSign(const BaseSign&) = delete;
1676         BaseSign(BaseSign&& o) : self(o.self) { memset(&o, 0, sizeof(BaseSign)); }
1677         BaseSign(LDKBaseSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBaseSign)); }
1678         operator LDKBaseSign() && { LDKBaseSign res = self; memset(&self, 0, sizeof(LDKBaseSign)); return res; }
1679         ~BaseSign() { BaseSign_free(self); }
1680         BaseSign& operator=(BaseSign&& o) { BaseSign_free(self); self = o.self; memset(&o, 0, sizeof(BaseSign)); return *this; }
1681         LDKBaseSign* operator &() { return &self; }
1682         LDKBaseSign* operator ->() { return &self; }
1683         const LDKBaseSign* operator &() const { return &self; }
1684         const LDKBaseSign* operator ->() const { return &self; }
1685         /**
1686          *  Gets the per-commitment point for a specific commitment number
1687          * 
1688          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1689          */
1690         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1691         /**
1692          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1693          * 
1694          *  An external signer implementation should error here if the commitment was already signed
1695          *  and should refuse to sign it in the future.
1696          * 
1697          *  May be called more than once for the same index.
1698          * 
1699          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1700          */
1701         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1702         /**
1703          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1704          * 
1705          *  This is required in order for the signer to make sure that releasing a commitment
1706          *  secret won't leave us without a broadcastable holder transaction.
1707          *  Policy checks should be implemented in this function, including checking the amount
1708          *  sent to us and checking the HTLCs.
1709          * 
1710          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1711          *  A validating signer should ensure that an HTLC output is removed only when the matching
1712          *  preimage is provided, or when the value to holder is restored.
1713          * 
1714          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1715          *  irrelevant or duplicate preimages.
1716          */
1717         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
1718         /**
1719          *  Gets an arbitrary identifier describing the set of keys which are provided back to you in
1720          *  some SpendableOutputDescriptor types. This should be sufficient to identify this
1721          *  Sign object uniquely and lookup or re-derive its keys.
1722          */
1723         inline LDKThirtyTwoBytes channel_keys_id();
1724         /**
1725          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
1726          * 
1727          *  Note that if signing fails or is rejected, the channel will be force-closed.
1728          * 
1729          *  Policy checks should be implemented in this function, including checking the amount
1730          *  sent to us and checking the HTLCs.
1731          * 
1732          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1733          *  A validating signer should ensure that an HTLC output is removed only when the matching
1734          *  preimage is provided, or when the value to holder is restored.
1735          * 
1736          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1737          *  irrelevant or duplicate preimages.
1738          */
1739         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
1740         /**
1741          *  Validate the counterparty's revocation.
1742          * 
1743          *  This is required in order for the signer to make sure that the state has moved
1744          *  forward and it is safe to sign the next counterparty commitment.
1745          */
1746         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
1747         /**
1748          *  Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
1749          *  This will only ever be called with a non-revoked commitment_tx.  This will be called with the
1750          *  latest commitment_tx when we initiate a force-close.
1751          *  This will be called with the previous latest, just to get claiming HTLC signatures, if we are
1752          *  reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
1753          *  the latest.
1754          *  This may be called multiple times for the same transaction.
1755          * 
1756          *  An external signer implementation should check that the commitment has not been revoked.
1757          * 
1758          *  May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
1759          */
1760         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
1761         /**
1762          *  Create a signature for the given input in a transaction spending an HTLC transaction output
1763          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
1764          * 
1765          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1766          *  similar, but only a signature for the input at index `input` should be signed for here.
1767          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1768          *  to an upcoming timelock expiration.
1769          * 
1770          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1771          * 
1772          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1773          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1774          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1775          *  so).
1776          */
1777         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]);
1778         /**
1779          *  Create a signature for the given input in a transaction spending a commitment transaction
1780          *  HTLC output when our counterparty broadcasts an old state.
1781          * 
1782          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1783          *  similar, but only a signature for the input at index `input` should be signed for here.
1784          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1785          *  to an upcoming timelock expiration.
1786          * 
1787          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1788          * 
1789          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1790          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1791          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1792          *  so).
1793          * 
1794          *  htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
1795          *  (which is committed to in the BIP 143 signatures).
1796          */
1797         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);
1798         /**
1799          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
1800          *  transaction, either offered or received.
1801          * 
1802          *  Such a transaction may claim multiples offered outputs at same time if we know the
1803          *  preimage for each when we create it, but only the input at index `input` should be
1804          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
1805          *  needed with regards to an upcoming timelock expiration.
1806          * 
1807          *  Witness_script is either a offered or received script as defined in BOLT3 for HTLC
1808          *  outputs.
1809          * 
1810          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1811          * 
1812          *  Per_commitment_point is the dynamic point corresponding to the channel state
1813          *  detected onchain. It has been generated by our counterparty and is used to derive
1814          *  channel state keys, which are then included in the witness script and committed to in the
1815          *  BIP 143 signature.
1816          */
1817         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);
1818         /**
1819          *  Create a signature for a (proposed) closing transaction.
1820          * 
1821          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
1822          *  chosen to forgo their output as dust.
1823          */
1824         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
1825         /**
1826          *  Signs a channel announcement message with our funding key and our node secret key (aka
1827          *  node_id or network_key), proving it comes from one of the channel participants.
1828          * 
1829          *  The first returned signature should be from our node secret key, the second from our
1830          *  funding key.
1831          * 
1832          *  Note that if this fails or is rejected, the channel will not be publicly announced and
1833          *  our counterparty may (though likely will not) close the channel on us for violating the
1834          *  protocol.
1835          */
1836         inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
1837         /**
1838          *  Set the counterparty static channel data, including basepoints,
1839          *  counterparty_selected/holder_selected_contest_delay and funding outpoint.
1840          *  This is done as soon as the funding outpoint is known.  Since these are static channel data,
1841          *  they MUST NOT be allowed to change to different values once set.
1842          * 
1843          *  channel_parameters.is_populated() MUST be true.
1844          * 
1845          *  We bind holder_selected_contest_delay late here for API convenience.
1846          * 
1847          *  Will be called before any signatures are applied.
1848          */
1849         inline void ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
1850 };
1851 class Sign {
1852 private:
1853         LDKSign self;
1854 public:
1855         Sign(const Sign&) = delete;
1856         Sign(Sign&& o) : self(o.self) { memset(&o, 0, sizeof(Sign)); }
1857         Sign(LDKSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSign)); }
1858         operator LDKSign() && { LDKSign res = self; memset(&self, 0, sizeof(LDKSign)); return res; }
1859         ~Sign() { Sign_free(self); }
1860         Sign& operator=(Sign&& o) { Sign_free(self); self = o.self; memset(&o, 0, sizeof(Sign)); return *this; }
1861         LDKSign* operator &() { return &self; }
1862         LDKSign* operator ->() { return &self; }
1863         const LDKSign* operator &() const { return &self; }
1864         const LDKSign* operator ->() const { return &self; }
1865 };
1866 class Recipient {
1867 private:
1868         LDKRecipient self;
1869 public:
1870         Recipient(const Recipient&) = delete;
1871         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
1872         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
1873         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
1874         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
1875         LDKRecipient* operator &() { return &self; }
1876         LDKRecipient* operator ->() { return &self; }
1877         const LDKRecipient* operator &() const { return &self; }
1878         const LDKRecipient* operator ->() const { return &self; }
1879 };
1880 class KeysInterface {
1881 private:
1882         LDKKeysInterface self;
1883 public:
1884         KeysInterface(const KeysInterface&) = delete;
1885         KeysInterface(KeysInterface&& o) : self(o.self) { memset(&o, 0, sizeof(KeysInterface)); }
1886         KeysInterface(LDKKeysInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysInterface)); }
1887         operator LDKKeysInterface() && { LDKKeysInterface res = self; memset(&self, 0, sizeof(LDKKeysInterface)); return res; }
1888         ~KeysInterface() { KeysInterface_free(self); }
1889         KeysInterface& operator=(KeysInterface&& o) { KeysInterface_free(self); self = o.self; memset(&o, 0, sizeof(KeysInterface)); return *this; }
1890         LDKKeysInterface* operator &() { return &self; }
1891         LDKKeysInterface* operator ->() { return &self; }
1892         const LDKKeysInterface* operator &() const { return &self; }
1893         const LDKKeysInterface* operator ->() const { return &self; }
1894         /**
1895          *  Get node secret key based on the provided [`Recipient`].
1896          * 
1897          *  The node_id/network_key is the public key that corresponds to this secret key.
1898          * 
1899          *  This method must return the same value each time it is called with a given `Recipient`
1900          *  parameter.
1901          */
1902         inline LDK::CResult_SecretKeyNoneZ get_node_secret(enum LDKRecipient recipient);
1903         /**
1904          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
1905          * 
1906          *  This method should return a different value each time it is called, to avoid linking
1907          *  on-chain funds across channels as controlled to the same user.
1908          */
1909         inline LDK::CVec_u8Z get_destination_script();
1910         /**
1911          *  Get a script pubkey which we will send funds to when closing a channel.
1912          * 
1913          *  This method should return a different value each time it is called, to avoid linking
1914          *  on-chain funds across channels as controlled to the same user.
1915          */
1916         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
1917         /**
1918          *  Get a new set of Sign for per-channel secrets. These MUST be unique even if you
1919          *  restarted with some stale data!
1920          * 
1921          *  This method must return a different value each time it is called.
1922          */
1923         inline LDK::Sign get_channel_signer(bool inbound, uint64_t channel_value_satoshis);
1924         /**
1925          *  Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
1926          *  onion packets and for temporary channel IDs. There is no requirement that these be
1927          *  persisted anywhere, though they must be unique across restarts.
1928          * 
1929          *  This method must return a different value each time it is called.
1930          */
1931         inline LDKThirtyTwoBytes get_secure_random_bytes();
1932         /**
1933          *  Reads a `Signer` for this `KeysInterface` from the given input stream.
1934          *  This is only called during deserialization of other objects which contain
1935          *  `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
1936          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
1937          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
1938          *  you've read all of the provided bytes to ensure no corruption occurred.
1939          */
1940         inline LDK::CResult_SignDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
1941         /**
1942          *  Sign an invoice.
1943          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
1944          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
1945          *  blindly signing the hash.
1946          *  The hrp is ascii bytes, while the invoice data is base32.
1947          * 
1948          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
1949          */
1950         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient);
1951         /**
1952          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
1953          * 
1954          *  If the implementor of this trait supports [phantom node payments], then every node that is
1955          *  intended to be included in the phantom invoice route hints must return the same value from
1956          *  this method.
1957          * 
1958          *  This method must return the same value each time it is called.
1959          * 
1960          *  [phantom node payments]: PhantomKeysManager
1961          */
1962         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
1963 };
1964 class InMemorySigner {
1965 private:
1966         LDKInMemorySigner self;
1967 public:
1968         InMemorySigner(const InMemorySigner&) = delete;
1969         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
1970         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
1971         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
1972         ~InMemorySigner() { InMemorySigner_free(self); }
1973         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
1974         LDKInMemorySigner* operator &() { return &self; }
1975         LDKInMemorySigner* operator ->() { return &self; }
1976         const LDKInMemorySigner* operator &() const { return &self; }
1977         const LDKInMemorySigner* operator ->() const { return &self; }
1978 };
1979 class KeysManager {
1980 private:
1981         LDKKeysManager self;
1982 public:
1983         KeysManager(const KeysManager&) = delete;
1984         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
1985         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
1986         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
1987         ~KeysManager() { KeysManager_free(self); }
1988         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
1989         LDKKeysManager* operator &() { return &self; }
1990         LDKKeysManager* operator ->() { return &self; }
1991         const LDKKeysManager* operator &() const { return &self; }
1992         const LDKKeysManager* operator ->() const { return &self; }
1993 };
1994 class PhantomKeysManager {
1995 private:
1996         LDKPhantomKeysManager self;
1997 public:
1998         PhantomKeysManager(const PhantomKeysManager&) = delete;
1999         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
2000         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
2001         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
2002         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
2003         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
2004         LDKPhantomKeysManager* operator &() { return &self; }
2005         LDKPhantomKeysManager* operator ->() { return &self; }
2006         const LDKPhantomKeysManager* operator &() const { return &self; }
2007         const LDKPhantomKeysManager* operator ->() const { return &self; }
2008 };
2009 class FilesystemPersister {
2010 private:
2011         LDKFilesystemPersister self;
2012 public:
2013         FilesystemPersister(const FilesystemPersister&) = delete;
2014         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
2015         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
2016         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
2017         ~FilesystemPersister() { FilesystemPersister_free(self); }
2018         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
2019         LDKFilesystemPersister* operator &() { return &self; }
2020         LDKFilesystemPersister* operator ->() { return &self; }
2021         const LDKFilesystemPersister* operator &() const { return &self; }
2022         const LDKFilesystemPersister* operator ->() const { return &self; }
2023 };
2024 class ChannelManager {
2025 private:
2026         LDKChannelManager self;
2027 public:
2028         ChannelManager(const ChannelManager&) = delete;
2029         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
2030         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
2031         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
2032         ~ChannelManager() { ChannelManager_free(self); }
2033         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2034         LDKChannelManager* operator &() { return &self; }
2035         LDKChannelManager* operator ->() { return &self; }
2036         const LDKChannelManager* operator &() const { return &self; }
2037         const LDKChannelManager* operator ->() const { return &self; }
2038 };
2039 class ChainParameters {
2040 private:
2041         LDKChainParameters self;
2042 public:
2043         ChainParameters(const ChainParameters&) = delete;
2044         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2045         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2046         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2047         ~ChainParameters() { ChainParameters_free(self); }
2048         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2049         LDKChainParameters* operator &() { return &self; }
2050         LDKChainParameters* operator ->() { return &self; }
2051         const LDKChainParameters* operator &() const { return &self; }
2052         const LDKChainParameters* operator ->() const { return &self; }
2053 };
2054 class CounterpartyForwardingInfo {
2055 private:
2056         LDKCounterpartyForwardingInfo self;
2057 public:
2058         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2059         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2060         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2061         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2062         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2063         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2064         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2065         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2066         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2067         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2068 };
2069 class ChannelCounterparty {
2070 private:
2071         LDKChannelCounterparty self;
2072 public:
2073         ChannelCounterparty(const ChannelCounterparty&) = delete;
2074         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2075         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2076         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2077         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2078         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2079         LDKChannelCounterparty* operator &() { return &self; }
2080         LDKChannelCounterparty* operator ->() { return &self; }
2081         const LDKChannelCounterparty* operator &() const { return &self; }
2082         const LDKChannelCounterparty* operator ->() const { return &self; }
2083 };
2084 class ChannelDetails {
2085 private:
2086         LDKChannelDetails self;
2087 public:
2088         ChannelDetails(const ChannelDetails&) = delete;
2089         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2090         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2091         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2092         ~ChannelDetails() { ChannelDetails_free(self); }
2093         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2094         LDKChannelDetails* operator &() { return &self; }
2095         LDKChannelDetails* operator ->() { return &self; }
2096         const LDKChannelDetails* operator &() const { return &self; }
2097         const LDKChannelDetails* operator ->() const { return &self; }
2098 };
2099 class PaymentSendFailure {
2100 private:
2101         LDKPaymentSendFailure self;
2102 public:
2103         PaymentSendFailure(const PaymentSendFailure&) = delete;
2104         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
2105         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
2106         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
2107         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
2108         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
2109         LDKPaymentSendFailure* operator &() { return &self; }
2110         LDKPaymentSendFailure* operator ->() { return &self; }
2111         const LDKPaymentSendFailure* operator &() const { return &self; }
2112         const LDKPaymentSendFailure* operator ->() const { return &self; }
2113 };
2114 class PhantomRouteHints {
2115 private:
2116         LDKPhantomRouteHints self;
2117 public:
2118         PhantomRouteHints(const PhantomRouteHints&) = delete;
2119         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2120         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
2121         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
2122         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
2123         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
2124         LDKPhantomRouteHints* operator &() { return &self; }
2125         LDKPhantomRouteHints* operator ->() { return &self; }
2126         const LDKPhantomRouteHints* operator &() const { return &self; }
2127         const LDKPhantomRouteHints* operator ->() const { return &self; }
2128 };
2129 class ChannelManagerReadArgs {
2130 private:
2131         LDKChannelManagerReadArgs self;
2132 public:
2133         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
2134         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
2135         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
2136         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
2137         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
2138         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
2139         LDKChannelManagerReadArgs* operator &() { return &self; }
2140         LDKChannelManagerReadArgs* operator ->() { return &self; }
2141         const LDKChannelManagerReadArgs* operator &() const { return &self; }
2142         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
2143 };
2144 class ChannelHandshakeConfig {
2145 private:
2146         LDKChannelHandshakeConfig self;
2147 public:
2148         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
2149         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
2150         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
2151         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
2152         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
2153         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
2154         LDKChannelHandshakeConfig* operator &() { return &self; }
2155         LDKChannelHandshakeConfig* operator ->() { return &self; }
2156         const LDKChannelHandshakeConfig* operator &() const { return &self; }
2157         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
2158 };
2159 class ChannelHandshakeLimits {
2160 private:
2161         LDKChannelHandshakeLimits self;
2162 public:
2163         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
2164         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
2165         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
2166         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
2167         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
2168         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
2169         LDKChannelHandshakeLimits* operator &() { return &self; }
2170         LDKChannelHandshakeLimits* operator ->() { return &self; }
2171         const LDKChannelHandshakeLimits* operator &() const { return &self; }
2172         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
2173 };
2174 class ChannelConfig {
2175 private:
2176         LDKChannelConfig self;
2177 public:
2178         ChannelConfig(const ChannelConfig&) = delete;
2179         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
2180         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
2181         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
2182         ~ChannelConfig() { ChannelConfig_free(self); }
2183         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
2184         LDKChannelConfig* operator &() { return &self; }
2185         LDKChannelConfig* operator ->() { return &self; }
2186         const LDKChannelConfig* operator &() const { return &self; }
2187         const LDKChannelConfig* operator ->() const { return &self; }
2188 };
2189 class UserConfig {
2190 private:
2191         LDKUserConfig self;
2192 public:
2193         UserConfig(const UserConfig&) = delete;
2194         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
2195         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
2196         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
2197         ~UserConfig() { UserConfig_free(self); }
2198         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
2199         LDKUserConfig* operator &() { return &self; }
2200         LDKUserConfig* operator ->() { return &self; }
2201         const LDKUserConfig* operator &() const { return &self; }
2202         const LDKUserConfig* operator ->() const { return &self; }
2203 };
2204 class APIError {
2205 private:
2206         LDKAPIError self;
2207 public:
2208         APIError(const APIError&) = delete;
2209         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
2210         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
2211         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
2212         ~APIError() { APIError_free(self); }
2213         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
2214         LDKAPIError* operator &() { return &self; }
2215         LDKAPIError* operator ->() { return &self; }
2216         const LDKAPIError* operator &() const { return &self; }
2217         const LDKAPIError* operator ->() const { return &self; }
2218 };
2219 class BigSize {
2220 private:
2221         LDKBigSize self;
2222 public:
2223         BigSize(const BigSize&) = delete;
2224         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
2225         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
2226         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
2227         ~BigSize() { BigSize_free(self); }
2228         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
2229         LDKBigSize* operator &() { return &self; }
2230         LDKBigSize* operator ->() { return &self; }
2231         const LDKBigSize* operator &() const { return &self; }
2232         const LDKBigSize* operator ->() const { return &self; }
2233 };
2234 class Hostname {
2235 private:
2236         LDKHostname self;
2237 public:
2238         Hostname(const Hostname&) = delete;
2239         Hostname(Hostname&& o) : self(o.self) { memset(&o, 0, sizeof(Hostname)); }
2240         Hostname(LDKHostname&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHostname)); }
2241         operator LDKHostname() && { LDKHostname res = self; memset(&self, 0, sizeof(LDKHostname)); return res; }
2242         ~Hostname() { Hostname_free(self); }
2243         Hostname& operator=(Hostname&& o) { Hostname_free(self); self = o.self; memset(&o, 0, sizeof(Hostname)); return *this; }
2244         LDKHostname* operator &() { return &self; }
2245         LDKHostname* operator ->() { return &self; }
2246         const LDKHostname* operator &() const { return &self; }
2247         const LDKHostname* operator ->() const { return &self; }
2248 };
2249 class OutPoint {
2250 private:
2251         LDKOutPoint self;
2252 public:
2253         OutPoint(const OutPoint&) = delete;
2254         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
2255         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
2256         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
2257         ~OutPoint() { OutPoint_free(self); }
2258         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
2259         LDKOutPoint* operator &() { return &self; }
2260         LDKOutPoint* operator ->() { return &self; }
2261         const LDKOutPoint* operator &() const { return &self; }
2262         const LDKOutPoint* operator ->() const { return &self; }
2263 };
2264 class CustomMessageReader {
2265 private:
2266         LDKCustomMessageReader self;
2267 public:
2268         CustomMessageReader(const CustomMessageReader&) = delete;
2269         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
2270         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
2271         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
2272         ~CustomMessageReader() { CustomMessageReader_free(self); }
2273         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
2274         LDKCustomMessageReader* operator &() { return &self; }
2275         LDKCustomMessageReader* operator ->() { return &self; }
2276         const LDKCustomMessageReader* operator &() const { return &self; }
2277         const LDKCustomMessageReader* operator ->() const { return &self; }
2278         /**
2279          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
2280          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
2281          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
2282          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
2283          */
2284         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
2285 };
2286 class Type {
2287 private:
2288         LDKType self;
2289 public:
2290         Type(const Type&) = delete;
2291         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
2292         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
2293         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
2294         ~Type() { Type_free(self); }
2295         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
2296         LDKType* operator &() { return &self; }
2297         LDKType* operator ->() { return &self; }
2298         const LDKType* operator &() const { return &self; }
2299         const LDKType* operator ->() const { return &self; }
2300         /**
2301          *  Returns the type identifying the message payload.
2302          */
2303         inline uint16_t type_id();
2304         /**
2305          * Return a human-readable "debug" string describing this object
2306          */
2307         inline LDK::Str debug_str();
2308 };
2309 class InvoicePayer {
2310 private:
2311         LDKInvoicePayer self;
2312 public:
2313         InvoicePayer(const InvoicePayer&) = delete;
2314         InvoicePayer(InvoicePayer&& o) : self(o.self) { memset(&o, 0, sizeof(InvoicePayer)); }
2315         InvoicePayer(LDKInvoicePayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoicePayer)); }
2316         operator LDKInvoicePayer() && { LDKInvoicePayer res = self; memset(&self, 0, sizeof(LDKInvoicePayer)); return res; }
2317         ~InvoicePayer() { InvoicePayer_free(self); }
2318         InvoicePayer& operator=(InvoicePayer&& o) { InvoicePayer_free(self); self = o.self; memset(&o, 0, sizeof(InvoicePayer)); return *this; }
2319         LDKInvoicePayer* operator &() { return &self; }
2320         LDKInvoicePayer* operator ->() { return &self; }
2321         const LDKInvoicePayer* operator &() const { return &self; }
2322         const LDKInvoicePayer* operator ->() const { return &self; }
2323 };
2324 class Payer {
2325 private:
2326         LDKPayer self;
2327 public:
2328         Payer(const Payer&) = delete;
2329         Payer(Payer&& o) : self(o.self) { memset(&o, 0, sizeof(Payer)); }
2330         Payer(LDKPayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayer)); }
2331         operator LDKPayer() && { LDKPayer res = self; memset(&self, 0, sizeof(LDKPayer)); return res; }
2332         ~Payer() { Payer_free(self); }
2333         Payer& operator=(Payer&& o) { Payer_free(self); self = o.self; memset(&o, 0, sizeof(Payer)); return *this; }
2334         LDKPayer* operator &() { return &self; }
2335         LDKPayer* operator ->() { return &self; }
2336         const LDKPayer* operator &() const { return &self; }
2337         const LDKPayer* operator ->() const { return &self; }
2338         /**
2339          *  Returns the payer's node id.
2340          */
2341         inline LDKPublicKey node_id();
2342         /**
2343          *  Returns the payer's channels.
2344          */
2345         inline LDK::CVec_ChannelDetailsZ first_hops();
2346         /**
2347          *  Sends a payment over the Lightning Network using the given [`Route`].
2348          * 
2349          *  Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
2350          */
2351         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
2352         /**
2353          *  Sends a spontaneous payment over the Lightning Network using the given [`Route`].
2354          */
2355         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
2356         /**
2357          *  Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
2358          */
2359         inline LDK::CResult_NonePaymentSendFailureZ retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
2360         /**
2361          *  Signals that no further retries for the given payment will occur.
2362          */
2363         inline void abandon_payment(struct LDKThirtyTwoBytes payment_id);
2364 };
2365 class Router {
2366 private:
2367         LDKRouter self;
2368 public:
2369         Router(const Router&) = delete;
2370         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
2371         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
2372         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
2373         ~Router() { Router_free(self); }
2374         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
2375         LDKRouter* operator &() { return &self; }
2376         LDKRouter* operator ->() { return &self; }
2377         const LDKRouter* operator &() const { return &self; }
2378         const LDKRouter* operator ->() const { return &self; }
2379         /**
2380          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
2381          * 
2382          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
2383          */
2384         inline LDK::CResult_RouteLightningErrorZ find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, const uint8_t (*payment_hash)[32], struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKScore *NONNULL_PTR scorer);
2385 };
2386 class Retry {
2387 private:
2388         LDKRetry self;
2389 public:
2390         Retry(const Retry&) = delete;
2391         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
2392         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
2393         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
2394         ~Retry() { Retry_free(self); }
2395         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
2396         LDKRetry* operator &() { return &self; }
2397         LDKRetry* operator ->() { return &self; }
2398         const LDKRetry* operator &() const { return &self; }
2399         const LDKRetry* operator ->() const { return &self; }
2400 };
2401 class PaymentError {
2402 private:
2403         LDKPaymentError self;
2404 public:
2405         PaymentError(const PaymentError&) = delete;
2406         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
2407         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
2408         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
2409         ~PaymentError() { PaymentError_free(self); }
2410         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
2411         LDKPaymentError* operator &() { return &self; }
2412         LDKPaymentError* operator ->() { return &self; }
2413         const LDKPaymentError* operator &() const { return &self; }
2414         const LDKPaymentError* operator ->() const { return &self; }
2415 };
2416 class ParseError {
2417 private:
2418         LDKParseError self;
2419 public:
2420         ParseError(const ParseError&) = delete;
2421         ParseError(ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseError)); }
2422         ParseError(LDKParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseError)); }
2423         operator LDKParseError() && { LDKParseError res = self; memset(&self, 0, sizeof(LDKParseError)); return res; }
2424         ~ParseError() { ParseError_free(self); }
2425         ParseError& operator=(ParseError&& o) { ParseError_free(self); self = o.self; memset(&o, 0, sizeof(ParseError)); return *this; }
2426         LDKParseError* operator &() { return &self; }
2427         LDKParseError* operator ->() { return &self; }
2428         const LDKParseError* operator &() const { return &self; }
2429         const LDKParseError* operator ->() const { return &self; }
2430 };
2431 class ParseOrSemanticError {
2432 private:
2433         LDKParseOrSemanticError self;
2434 public:
2435         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
2436         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
2437         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
2438         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
2439         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
2440         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
2441         LDKParseOrSemanticError* operator &() { return &self; }
2442         LDKParseOrSemanticError* operator ->() { return &self; }
2443         const LDKParseOrSemanticError* operator &() const { return &self; }
2444         const LDKParseOrSemanticError* operator ->() const { return &self; }
2445 };
2446 class Invoice {
2447 private:
2448         LDKInvoice self;
2449 public:
2450         Invoice(const Invoice&) = delete;
2451         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
2452         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
2453         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
2454         ~Invoice() { Invoice_free(self); }
2455         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
2456         LDKInvoice* operator &() { return &self; }
2457         LDKInvoice* operator ->() { return &self; }
2458         const LDKInvoice* operator &() const { return &self; }
2459         const LDKInvoice* operator ->() const { return &self; }
2460 };
2461 class SignedRawInvoice {
2462 private:
2463         LDKSignedRawInvoice self;
2464 public:
2465         SignedRawInvoice(const SignedRawInvoice&) = delete;
2466         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
2467         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
2468         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
2469         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
2470         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
2471         LDKSignedRawInvoice* operator &() { return &self; }
2472         LDKSignedRawInvoice* operator ->() { return &self; }
2473         const LDKSignedRawInvoice* operator &() const { return &self; }
2474         const LDKSignedRawInvoice* operator ->() const { return &self; }
2475 };
2476 class RawInvoice {
2477 private:
2478         LDKRawInvoice self;
2479 public:
2480         RawInvoice(const RawInvoice&) = delete;
2481         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
2482         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
2483         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
2484         ~RawInvoice() { RawInvoice_free(self); }
2485         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
2486         LDKRawInvoice* operator &() { return &self; }
2487         LDKRawInvoice* operator ->() { return &self; }
2488         const LDKRawInvoice* operator &() const { return &self; }
2489         const LDKRawInvoice* operator ->() const { return &self; }
2490 };
2491 class RawDataPart {
2492 private:
2493         LDKRawDataPart self;
2494 public:
2495         RawDataPart(const RawDataPart&) = delete;
2496         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
2497         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
2498         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
2499         ~RawDataPart() { RawDataPart_free(self); }
2500         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
2501         LDKRawDataPart* operator &() { return &self; }
2502         LDKRawDataPart* operator ->() { return &self; }
2503         const LDKRawDataPart* operator &() const { return &self; }
2504         const LDKRawDataPart* operator ->() const { return &self; }
2505 };
2506 class PositiveTimestamp {
2507 private:
2508         LDKPositiveTimestamp self;
2509 public:
2510         PositiveTimestamp(const PositiveTimestamp&) = delete;
2511         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
2512         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
2513         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
2514         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
2515         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
2516         LDKPositiveTimestamp* operator &() { return &self; }
2517         LDKPositiveTimestamp* operator ->() { return &self; }
2518         const LDKPositiveTimestamp* operator &() const { return &self; }
2519         const LDKPositiveTimestamp* operator ->() const { return &self; }
2520 };
2521 class SiPrefix {
2522 private:
2523         LDKSiPrefix self;
2524 public:
2525         SiPrefix(const SiPrefix&) = delete;
2526         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
2527         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
2528         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
2529         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
2530         LDKSiPrefix* operator &() { return &self; }
2531         LDKSiPrefix* operator ->() { return &self; }
2532         const LDKSiPrefix* operator &() const { return &self; }
2533         const LDKSiPrefix* operator ->() const { return &self; }
2534 };
2535 class Currency {
2536 private:
2537         LDKCurrency self;
2538 public:
2539         Currency(const Currency&) = delete;
2540         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
2541         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
2542         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
2543         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
2544         LDKCurrency* operator &() { return &self; }
2545         LDKCurrency* operator ->() { return &self; }
2546         const LDKCurrency* operator &() const { return &self; }
2547         const LDKCurrency* operator ->() const { return &self; }
2548 };
2549 class Sha256 {
2550 private:
2551         LDKSha256 self;
2552 public:
2553         Sha256(const Sha256&) = delete;
2554         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
2555         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
2556         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
2557         ~Sha256() { Sha256_free(self); }
2558         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
2559         LDKSha256* operator &() { return &self; }
2560         LDKSha256* operator ->() { return &self; }
2561         const LDKSha256* operator &() const { return &self; }
2562         const LDKSha256* operator ->() const { return &self; }
2563 };
2564 class Description {
2565 private:
2566         LDKDescription self;
2567 public:
2568         Description(const Description&) = delete;
2569         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
2570         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
2571         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
2572         ~Description() { Description_free(self); }
2573         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
2574         LDKDescription* operator &() { return &self; }
2575         LDKDescription* operator ->() { return &self; }
2576         const LDKDescription* operator &() const { return &self; }
2577         const LDKDescription* operator ->() const { return &self; }
2578 };
2579 class PayeePubKey {
2580 private:
2581         LDKPayeePubKey self;
2582 public:
2583         PayeePubKey(const PayeePubKey&) = delete;
2584         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
2585         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
2586         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
2587         ~PayeePubKey() { PayeePubKey_free(self); }
2588         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
2589         LDKPayeePubKey* operator &() { return &self; }
2590         LDKPayeePubKey* operator ->() { return &self; }
2591         const LDKPayeePubKey* operator &() const { return &self; }
2592         const LDKPayeePubKey* operator ->() const { return &self; }
2593 };
2594 class ExpiryTime {
2595 private:
2596         LDKExpiryTime self;
2597 public:
2598         ExpiryTime(const ExpiryTime&) = delete;
2599         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
2600         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
2601         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
2602         ~ExpiryTime() { ExpiryTime_free(self); }
2603         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
2604         LDKExpiryTime* operator &() { return &self; }
2605         LDKExpiryTime* operator ->() { return &self; }
2606         const LDKExpiryTime* operator &() const { return &self; }
2607         const LDKExpiryTime* operator ->() const { return &self; }
2608 };
2609 class MinFinalCltvExpiry {
2610 private:
2611         LDKMinFinalCltvExpiry self;
2612 public:
2613         MinFinalCltvExpiry(const MinFinalCltvExpiry&) = delete;
2614         MinFinalCltvExpiry(MinFinalCltvExpiry&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiry)); }
2615         MinFinalCltvExpiry(LDKMinFinalCltvExpiry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiry)); }
2616         operator LDKMinFinalCltvExpiry() && { LDKMinFinalCltvExpiry res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiry)); return res; }
2617         ~MinFinalCltvExpiry() { MinFinalCltvExpiry_free(self); }
2618         MinFinalCltvExpiry& operator=(MinFinalCltvExpiry&& o) { MinFinalCltvExpiry_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiry)); return *this; }
2619         LDKMinFinalCltvExpiry* operator &() { return &self; }
2620         LDKMinFinalCltvExpiry* operator ->() { return &self; }
2621         const LDKMinFinalCltvExpiry* operator &() const { return &self; }
2622         const LDKMinFinalCltvExpiry* operator ->() const { return &self; }
2623 };
2624 class Fallback {
2625 private:
2626         LDKFallback self;
2627 public:
2628         Fallback(const Fallback&) = delete;
2629         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
2630         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
2631         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
2632         ~Fallback() { Fallback_free(self); }
2633         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
2634         LDKFallback* operator &() { return &self; }
2635         LDKFallback* operator ->() { return &self; }
2636         const LDKFallback* operator &() const { return &self; }
2637         const LDKFallback* operator ->() const { return &self; }
2638 };
2639 class InvoiceSignature {
2640 private:
2641         LDKInvoiceSignature self;
2642 public:
2643         InvoiceSignature(const InvoiceSignature&) = delete;
2644         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
2645         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
2646         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
2647         ~InvoiceSignature() { InvoiceSignature_free(self); }
2648         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
2649         LDKInvoiceSignature* operator &() { return &self; }
2650         LDKInvoiceSignature* operator ->() { return &self; }
2651         const LDKInvoiceSignature* operator &() const { return &self; }
2652         const LDKInvoiceSignature* operator ->() const { return &self; }
2653 };
2654 class PrivateRoute {
2655 private:
2656         LDKPrivateRoute self;
2657 public:
2658         PrivateRoute(const PrivateRoute&) = delete;
2659         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
2660         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
2661         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
2662         ~PrivateRoute() { PrivateRoute_free(self); }
2663         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
2664         LDKPrivateRoute* operator &() { return &self; }
2665         LDKPrivateRoute* operator ->() { return &self; }
2666         const LDKPrivateRoute* operator &() const { return &self; }
2667         const LDKPrivateRoute* operator ->() const { return &self; }
2668 };
2669 class CreationError {
2670 private:
2671         LDKCreationError self;
2672 public:
2673         CreationError(const CreationError&) = delete;
2674         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
2675         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
2676         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
2677         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
2678         LDKCreationError* operator &() { return &self; }
2679         LDKCreationError* operator ->() { return &self; }
2680         const LDKCreationError* operator &() const { return &self; }
2681         const LDKCreationError* operator ->() const { return &self; }
2682 };
2683 class SemanticError {
2684 private:
2685         LDKSemanticError self;
2686 public:
2687         SemanticError(const SemanticError&) = delete;
2688         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
2689         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
2690         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
2691         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
2692         LDKSemanticError* operator &() { return &self; }
2693         LDKSemanticError* operator ->() { return &self; }
2694         const LDKSemanticError* operator &() const { return &self; }
2695         const LDKSemanticError* operator ->() const { return &self; }
2696 };
2697 class SignOrCreationError {
2698 private:
2699         LDKSignOrCreationError self;
2700 public:
2701         SignOrCreationError(const SignOrCreationError&) = delete;
2702         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
2703         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
2704         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
2705         ~SignOrCreationError() { SignOrCreationError_free(self); }
2706         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
2707         LDKSignOrCreationError* operator &() { return &self; }
2708         LDKSignOrCreationError* operator ->() { return &self; }
2709         const LDKSignOrCreationError* operator &() const { return &self; }
2710         const LDKSignOrCreationError* operator ->() const { return &self; }
2711 };
2712 class ChannelMonitorUpdate {
2713 private:
2714         LDKChannelMonitorUpdate self;
2715 public:
2716         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2717         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2718         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2719         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2720         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2721         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2722         LDKChannelMonitorUpdate* operator &() { return &self; }
2723         LDKChannelMonitorUpdate* operator ->() { return &self; }
2724         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2725         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2726 };
2727 class MonitorEvent {
2728 private:
2729         LDKMonitorEvent self;
2730 public:
2731         MonitorEvent(const MonitorEvent&) = delete;
2732         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2733         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2734         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2735         ~MonitorEvent() { MonitorEvent_free(self); }
2736         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2737         LDKMonitorEvent* operator &() { return &self; }
2738         LDKMonitorEvent* operator ->() { return &self; }
2739         const LDKMonitorEvent* operator &() const { return &self; }
2740         const LDKMonitorEvent* operator ->() const { return &self; }
2741 };
2742 class HTLCUpdate {
2743 private:
2744         LDKHTLCUpdate self;
2745 public:
2746         HTLCUpdate(const HTLCUpdate&) = delete;
2747         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2748         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2749         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2750         ~HTLCUpdate() { HTLCUpdate_free(self); }
2751         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2752         LDKHTLCUpdate* operator &() { return &self; }
2753         LDKHTLCUpdate* operator ->() { return &self; }
2754         const LDKHTLCUpdate* operator &() const { return &self; }
2755         const LDKHTLCUpdate* operator ->() const { return &self; }
2756 };
2757 class Balance {
2758 private:
2759         LDKBalance self;
2760 public:
2761         Balance(const Balance&) = delete;
2762         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2763         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2764         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2765         ~Balance() { Balance_free(self); }
2766         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2767         LDKBalance* operator &() { return &self; }
2768         LDKBalance* operator ->() { return &self; }
2769         const LDKBalance* operator &() const { return &self; }
2770         const LDKBalance* operator ->() const { return &self; }
2771 };
2772 class ChannelMonitor {
2773 private:
2774         LDKChannelMonitor self;
2775 public:
2776         ChannelMonitor(const ChannelMonitor&) = delete;
2777         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2778         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2779         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2780         ~ChannelMonitor() { ChannelMonitor_free(self); }
2781         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2782         LDKChannelMonitor* operator &() { return &self; }
2783         LDKChannelMonitor* operator ->() { return &self; }
2784         const LDKChannelMonitor* operator &() const { return &self; }
2785         const LDKChannelMonitor* operator ->() const { return &self; }
2786 };
2787 class ExpandedKey {
2788 private:
2789         LDKExpandedKey self;
2790 public:
2791         ExpandedKey(const ExpandedKey&) = delete;
2792         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
2793         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
2794         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
2795         ~ExpandedKey() { ExpandedKey_free(self); }
2796         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
2797         LDKExpandedKey* operator &() { return &self; }
2798         LDKExpandedKey* operator ->() { return &self; }
2799         const LDKExpandedKey* operator &() const { return &self; }
2800         const LDKExpandedKey* operator ->() const { return &self; }
2801 };
2802 class CustomMessageHandler {
2803 private:
2804         LDKCustomMessageHandler self;
2805 public:
2806         CustomMessageHandler(const CustomMessageHandler&) = delete;
2807         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2808         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2809         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2810         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2811         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2812         LDKCustomMessageHandler* operator &() { return &self; }
2813         LDKCustomMessageHandler* operator ->() { return &self; }
2814         const LDKCustomMessageHandler* operator &() const { return &self; }
2815         const LDKCustomMessageHandler* operator ->() const { return &self; }
2816         /**
2817          *  Called with the message type that was received and the buffer to be read.
2818          *  Can return a `MessageHandlingError` if the message could not be handled.
2819          */
2820         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
2821         /**
2822          *  Gets the list of pending messages which were generated by the custom message
2823          *  handler, clearing the list in the process. The first tuple element must
2824          *  correspond to the intended recipients node ids. If no connection to one of the
2825          *  specified node does not exist, the message is simply not sent to it.
2826          */
2827         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
2828 };
2829 class IgnoringMessageHandler {
2830 private:
2831         LDKIgnoringMessageHandler self;
2832 public:
2833         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
2834         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
2835         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
2836         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
2837         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
2838         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
2839         LDKIgnoringMessageHandler* operator &() { return &self; }
2840         LDKIgnoringMessageHandler* operator ->() { return &self; }
2841         const LDKIgnoringMessageHandler* operator &() const { return &self; }
2842         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
2843 };
2844 class ErroringMessageHandler {
2845 private:
2846         LDKErroringMessageHandler self;
2847 public:
2848         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
2849         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
2850         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
2851         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
2852         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
2853         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
2854         LDKErroringMessageHandler* operator &() { return &self; }
2855         LDKErroringMessageHandler* operator ->() { return &self; }
2856         const LDKErroringMessageHandler* operator &() const { return &self; }
2857         const LDKErroringMessageHandler* operator ->() const { return &self; }
2858 };
2859 class MessageHandler {
2860 private:
2861         LDKMessageHandler self;
2862 public:
2863         MessageHandler(const MessageHandler&) = delete;
2864         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
2865         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
2866         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
2867         ~MessageHandler() { MessageHandler_free(self); }
2868         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
2869         LDKMessageHandler* operator &() { return &self; }
2870         LDKMessageHandler* operator ->() { return &self; }
2871         const LDKMessageHandler* operator &() const { return &self; }
2872         const LDKMessageHandler* operator ->() const { return &self; }
2873 };
2874 class SocketDescriptor {
2875 private:
2876         LDKSocketDescriptor self;
2877 public:
2878         SocketDescriptor(const SocketDescriptor&) = delete;
2879         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
2880         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
2881         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
2882         ~SocketDescriptor() { SocketDescriptor_free(self); }
2883         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
2884         LDKSocketDescriptor* operator &() { return &self; }
2885         LDKSocketDescriptor* operator ->() { return &self; }
2886         const LDKSocketDescriptor* operator &() const { return &self; }
2887         const LDKSocketDescriptor* operator ->() const { return &self; }
2888         /**
2889          *  Attempts to send some data from the given slice to the peer.
2890          * 
2891          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
2892          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
2893          *  called and further write attempts may occur until that time.
2894          * 
2895          *  If the returned size is smaller than `data.len()`, a
2896          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
2897          *  written. Additionally, until a `send_data` event completes fully, no further
2898          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
2899          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
2900          *  until then.
2901          * 
2902          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
2903          *  (indicating that read events should be paused to prevent DoS in the send buffer),
2904          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
2905          *  `resume_read` of false carries no meaning, and should not cause any action.
2906          */
2907         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
2908         /**
2909          *  Disconnect the socket pointed to by this SocketDescriptor.
2910          * 
2911          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
2912          *  call (doing so is a noop).
2913          */
2914         inline void disconnect_socket();
2915         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
2916         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
2917         /**
2918          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
2919          * This is used, for example, for inclusion of this object in a hash map.
2920          */
2921         inline uint64_t hash();
2922 };
2923 class PeerHandleError {
2924 private:
2925         LDKPeerHandleError self;
2926 public:
2927         PeerHandleError(const PeerHandleError&) = delete;
2928         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
2929         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
2930         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
2931         ~PeerHandleError() { PeerHandleError_free(self); }
2932         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
2933         LDKPeerHandleError* operator &() { return &self; }
2934         LDKPeerHandleError* operator ->() { return &self; }
2935         const LDKPeerHandleError* operator &() const { return &self; }
2936         const LDKPeerHandleError* operator ->() const { return &self; }
2937 };
2938 class PeerManager {
2939 private:
2940         LDKPeerManager self;
2941 public:
2942         PeerManager(const PeerManager&) = delete;
2943         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
2944         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
2945         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
2946         ~PeerManager() { PeerManager_free(self); }
2947         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
2948         LDKPeerManager* operator &() { return &self; }
2949         LDKPeerManager* operator ->() { return &self; }
2950         const LDKPeerManager* operator &() const { return &self; }
2951         const LDKPeerManager* operator ->() const { return &self; }
2952 };
2953 class RapidGossipSync {
2954 private:
2955         LDKRapidGossipSync self;
2956 public:
2957         RapidGossipSync(const RapidGossipSync&) = delete;
2958         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
2959         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
2960         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
2961         ~RapidGossipSync() { RapidGossipSync_free(self); }
2962         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
2963         LDKRapidGossipSync* operator &() { return &self; }
2964         LDKRapidGossipSync* operator ->() { return &self; }
2965         const LDKRapidGossipSync* operator &() const { return &self; }
2966         const LDKRapidGossipSync* operator ->() const { return &self; }
2967 };
2968 class Persister {
2969 private:
2970         LDKPersister self;
2971 public:
2972         Persister(const Persister&) = delete;
2973         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
2974         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
2975         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
2976         ~Persister() { Persister_free(self); }
2977         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
2978         LDKPersister* operator &() { return &self; }
2979         LDKPersister* operator ->() { return &self; }
2980         const LDKPersister* operator &() const { return &self; }
2981         const LDKPersister* operator ->() const { return &self; }
2982         /**
2983          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
2984          */
2985         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
2986         /**
2987          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
2988          */
2989         inline LDK::CResult_NoneErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
2990         /**
2991          *  Persist the given [`MultiThreadedLockableScore`] to disk, returning an error if persistence failed.
2992          */
2993         inline LDK::CResult_NoneErrorZ persist_scorer(const struct LDKMultiThreadedLockableScore *NONNULL_PTR scorer);
2994 };
2995 class DecodeError {
2996 private:
2997         LDKDecodeError self;
2998 public:
2999         DecodeError(const DecodeError&) = delete;
3000         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
3001         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
3002         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
3003         ~DecodeError() { DecodeError_free(self); }
3004         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
3005         LDKDecodeError* operator &() { return &self; }
3006         LDKDecodeError* operator ->() { return &self; }
3007         const LDKDecodeError* operator &() const { return &self; }
3008         const LDKDecodeError* operator ->() const { return &self; }
3009 };
3010 class Init {
3011 private:
3012         LDKInit self;
3013 public:
3014         Init(const Init&) = delete;
3015         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
3016         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
3017         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
3018         ~Init() { Init_free(self); }
3019         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
3020         LDKInit* operator &() { return &self; }
3021         LDKInit* operator ->() { return &self; }
3022         const LDKInit* operator &() const { return &self; }
3023         const LDKInit* operator ->() const { return &self; }
3024 };
3025 class ErrorMessage {
3026 private:
3027         LDKErrorMessage self;
3028 public:
3029         ErrorMessage(const ErrorMessage&) = delete;
3030         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
3031         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
3032         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
3033         ~ErrorMessage() { ErrorMessage_free(self); }
3034         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
3035         LDKErrorMessage* operator &() { return &self; }
3036         LDKErrorMessage* operator ->() { return &self; }
3037         const LDKErrorMessage* operator &() const { return &self; }
3038         const LDKErrorMessage* operator ->() const { return &self; }
3039 };
3040 class WarningMessage {
3041 private:
3042         LDKWarningMessage self;
3043 public:
3044         WarningMessage(const WarningMessage&) = delete;
3045         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
3046         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
3047         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3048         ~WarningMessage() { WarningMessage_free(self); }
3049         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3050         LDKWarningMessage* operator &() { return &self; }
3051         LDKWarningMessage* operator ->() { return &self; }
3052         const LDKWarningMessage* operator &() const { return &self; }
3053         const LDKWarningMessage* operator ->() const { return &self; }
3054 };
3055 class Ping {
3056 private:
3057         LDKPing self;
3058 public:
3059         Ping(const Ping&) = delete;
3060         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3061         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3062         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3063         ~Ping() { Ping_free(self); }
3064         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3065         LDKPing* operator &() { return &self; }
3066         LDKPing* operator ->() { return &self; }
3067         const LDKPing* operator &() const { return &self; }
3068         const LDKPing* operator ->() const { return &self; }
3069 };
3070 class Pong {
3071 private:
3072         LDKPong self;
3073 public:
3074         Pong(const Pong&) = delete;
3075         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3076         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3077         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3078         ~Pong() { Pong_free(self); }
3079         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3080         LDKPong* operator &() { return &self; }
3081         LDKPong* operator ->() { return &self; }
3082         const LDKPong* operator &() const { return &self; }
3083         const LDKPong* operator ->() const { return &self; }
3084 };
3085 class OpenChannel {
3086 private:
3087         LDKOpenChannel self;
3088 public:
3089         OpenChannel(const OpenChannel&) = delete;
3090         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3091         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3092         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3093         ~OpenChannel() { OpenChannel_free(self); }
3094         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3095         LDKOpenChannel* operator &() { return &self; }
3096         LDKOpenChannel* operator ->() { return &self; }
3097         const LDKOpenChannel* operator &() const { return &self; }
3098         const LDKOpenChannel* operator ->() const { return &self; }
3099 };
3100 class AcceptChannel {
3101 private:
3102         LDKAcceptChannel self;
3103 public:
3104         AcceptChannel(const AcceptChannel&) = delete;
3105         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
3106         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
3107         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
3108         ~AcceptChannel() { AcceptChannel_free(self); }
3109         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
3110         LDKAcceptChannel* operator &() { return &self; }
3111         LDKAcceptChannel* operator ->() { return &self; }
3112         const LDKAcceptChannel* operator &() const { return &self; }
3113         const LDKAcceptChannel* operator ->() const { return &self; }
3114 };
3115 class FundingCreated {
3116 private:
3117         LDKFundingCreated self;
3118 public:
3119         FundingCreated(const FundingCreated&) = delete;
3120         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
3121         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
3122         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
3123         ~FundingCreated() { FundingCreated_free(self); }
3124         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
3125         LDKFundingCreated* operator &() { return &self; }
3126         LDKFundingCreated* operator ->() { return &self; }
3127         const LDKFundingCreated* operator &() const { return &self; }
3128         const LDKFundingCreated* operator ->() const { return &self; }
3129 };
3130 class FundingSigned {
3131 private:
3132         LDKFundingSigned self;
3133 public:
3134         FundingSigned(const FundingSigned&) = delete;
3135         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
3136         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
3137         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
3138         ~FundingSigned() { FundingSigned_free(self); }
3139         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
3140         LDKFundingSigned* operator &() { return &self; }
3141         LDKFundingSigned* operator ->() { return &self; }
3142         const LDKFundingSigned* operator &() const { return &self; }
3143         const LDKFundingSigned* operator ->() const { return &self; }
3144 };
3145 class ChannelReady {
3146 private:
3147         LDKChannelReady self;
3148 public:
3149         ChannelReady(const ChannelReady&) = delete;
3150         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
3151         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
3152         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
3153         ~ChannelReady() { ChannelReady_free(self); }
3154         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
3155         LDKChannelReady* operator &() { return &self; }
3156         LDKChannelReady* operator ->() { return &self; }
3157         const LDKChannelReady* operator &() const { return &self; }
3158         const LDKChannelReady* operator ->() const { return &self; }
3159 };
3160 class Shutdown {
3161 private:
3162         LDKShutdown self;
3163 public:
3164         Shutdown(const Shutdown&) = delete;
3165         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
3166         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
3167         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
3168         ~Shutdown() { Shutdown_free(self); }
3169         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
3170         LDKShutdown* operator &() { return &self; }
3171         LDKShutdown* operator ->() { return &self; }
3172         const LDKShutdown* operator &() const { return &self; }
3173         const LDKShutdown* operator ->() const { return &self; }
3174 };
3175 class ClosingSignedFeeRange {
3176 private:
3177         LDKClosingSignedFeeRange self;
3178 public:
3179         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3180         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3181         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3182         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3183         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3184         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3185         LDKClosingSignedFeeRange* operator &() { return &self; }
3186         LDKClosingSignedFeeRange* operator ->() { return &self; }
3187         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3188         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3189 };
3190 class ClosingSigned {
3191 private:
3192         LDKClosingSigned self;
3193 public:
3194         ClosingSigned(const ClosingSigned&) = delete;
3195         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3196         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3197         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3198         ~ClosingSigned() { ClosingSigned_free(self); }
3199         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3200         LDKClosingSigned* operator &() { return &self; }
3201         LDKClosingSigned* operator ->() { return &self; }
3202         const LDKClosingSigned* operator &() const { return &self; }
3203         const LDKClosingSigned* operator ->() const { return &self; }
3204 };
3205 class UpdateAddHTLC {
3206 private:
3207         LDKUpdateAddHTLC self;
3208 public:
3209         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3210         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3211         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3212         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3213         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3214         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3215         LDKUpdateAddHTLC* operator &() { return &self; }
3216         LDKUpdateAddHTLC* operator ->() { return &self; }
3217         const LDKUpdateAddHTLC* operator &() const { return &self; }
3218         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3219 };
3220 class UpdateFulfillHTLC {
3221 private:
3222         LDKUpdateFulfillHTLC self;
3223 public:
3224         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3225         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3226         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3227         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3228         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3229         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3230         LDKUpdateFulfillHTLC* operator &() { return &self; }
3231         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3232         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3233         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3234 };
3235 class UpdateFailHTLC {
3236 private:
3237         LDKUpdateFailHTLC self;
3238 public:
3239         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3240         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3241         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3242         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3243         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3244         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3245         LDKUpdateFailHTLC* operator &() { return &self; }
3246         LDKUpdateFailHTLC* operator ->() { return &self; }
3247         const LDKUpdateFailHTLC* operator &() const { return &self; }
3248         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3249 };
3250 class UpdateFailMalformedHTLC {
3251 private:
3252         LDKUpdateFailMalformedHTLC self;
3253 public:
3254         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3255         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3256         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3257         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3258         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3259         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3260         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3261         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3262         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3263         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3264 };
3265 class CommitmentSigned {
3266 private:
3267         LDKCommitmentSigned self;
3268 public:
3269         CommitmentSigned(const CommitmentSigned&) = delete;
3270         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3271         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3272         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3273         ~CommitmentSigned() { CommitmentSigned_free(self); }
3274         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3275         LDKCommitmentSigned* operator &() { return &self; }
3276         LDKCommitmentSigned* operator ->() { return &self; }
3277         const LDKCommitmentSigned* operator &() const { return &self; }
3278         const LDKCommitmentSigned* operator ->() const { return &self; }
3279 };
3280 class RevokeAndACK {
3281 private:
3282         LDKRevokeAndACK self;
3283 public:
3284         RevokeAndACK(const RevokeAndACK&) = delete;
3285         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
3286         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
3287         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
3288         ~RevokeAndACK() { RevokeAndACK_free(self); }
3289         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
3290         LDKRevokeAndACK* operator &() { return &self; }
3291         LDKRevokeAndACK* operator ->() { return &self; }
3292         const LDKRevokeAndACK* operator &() const { return &self; }
3293         const LDKRevokeAndACK* operator ->() const { return &self; }
3294 };
3295 class UpdateFee {
3296 private:
3297         LDKUpdateFee self;
3298 public:
3299         UpdateFee(const UpdateFee&) = delete;
3300         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
3301         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
3302         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
3303         ~UpdateFee() { UpdateFee_free(self); }
3304         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
3305         LDKUpdateFee* operator &() { return &self; }
3306         LDKUpdateFee* operator ->() { return &self; }
3307         const LDKUpdateFee* operator &() const { return &self; }
3308         const LDKUpdateFee* operator ->() const { return &self; }
3309 };
3310 class DataLossProtect {
3311 private:
3312         LDKDataLossProtect self;
3313 public:
3314         DataLossProtect(const DataLossProtect&) = delete;
3315         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
3316         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
3317         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
3318         ~DataLossProtect() { DataLossProtect_free(self); }
3319         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
3320         LDKDataLossProtect* operator &() { return &self; }
3321         LDKDataLossProtect* operator ->() { return &self; }
3322         const LDKDataLossProtect* operator &() const { return &self; }
3323         const LDKDataLossProtect* operator ->() const { return &self; }
3324 };
3325 class ChannelReestablish {
3326 private:
3327         LDKChannelReestablish self;
3328 public:
3329         ChannelReestablish(const ChannelReestablish&) = delete;
3330         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
3331         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
3332         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
3333         ~ChannelReestablish() { ChannelReestablish_free(self); }
3334         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
3335         LDKChannelReestablish* operator &() { return &self; }
3336         LDKChannelReestablish* operator ->() { return &self; }
3337         const LDKChannelReestablish* operator &() const { return &self; }
3338         const LDKChannelReestablish* operator ->() const { return &self; }
3339 };
3340 class AnnouncementSignatures {
3341 private:
3342         LDKAnnouncementSignatures self;
3343 public:
3344         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
3345         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
3346         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
3347         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
3348         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
3349         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
3350         LDKAnnouncementSignatures* operator &() { return &self; }
3351         LDKAnnouncementSignatures* operator ->() { return &self; }
3352         const LDKAnnouncementSignatures* operator &() const { return &self; }
3353         const LDKAnnouncementSignatures* operator ->() const { return &self; }
3354 };
3355 class NetAddress {
3356 private:
3357         LDKNetAddress self;
3358 public:
3359         NetAddress(const NetAddress&) = delete;
3360         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
3361         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
3362         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
3363         ~NetAddress() { NetAddress_free(self); }
3364         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
3365         LDKNetAddress* operator &() { return &self; }
3366         LDKNetAddress* operator ->() { return &self; }
3367         const LDKNetAddress* operator &() const { return &self; }
3368         const LDKNetAddress* operator ->() const { return &self; }
3369 };
3370 class UnsignedNodeAnnouncement {
3371 private:
3372         LDKUnsignedNodeAnnouncement self;
3373 public:
3374         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
3375         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
3376         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
3377         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
3378         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
3379         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
3380         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
3381         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
3382         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
3383         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
3384 };
3385 class NodeAnnouncement {
3386 private:
3387         LDKNodeAnnouncement self;
3388 public:
3389         NodeAnnouncement(const NodeAnnouncement&) = delete;
3390         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
3391         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
3392         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
3393         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
3394         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
3395         LDKNodeAnnouncement* operator &() { return &self; }
3396         LDKNodeAnnouncement* operator ->() { return &self; }
3397         const LDKNodeAnnouncement* operator &() const { return &self; }
3398         const LDKNodeAnnouncement* operator ->() const { return &self; }
3399 };
3400 class UnsignedChannelAnnouncement {
3401 private:
3402         LDKUnsignedChannelAnnouncement self;
3403 public:
3404         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
3405         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
3406         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
3407         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
3408         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
3409         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
3410         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
3411         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
3412         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
3413         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
3414 };
3415 class ChannelAnnouncement {
3416 private:
3417         LDKChannelAnnouncement self;
3418 public:
3419         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
3420         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
3421         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
3422         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
3423         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
3424         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
3425         LDKChannelAnnouncement* operator &() { return &self; }
3426         LDKChannelAnnouncement* operator ->() { return &self; }
3427         const LDKChannelAnnouncement* operator &() const { return &self; }
3428         const LDKChannelAnnouncement* operator ->() const { return &self; }
3429 };
3430 class UnsignedChannelUpdate {
3431 private:
3432         LDKUnsignedChannelUpdate self;
3433 public:
3434         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
3435         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
3436         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
3437         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
3438         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
3439         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
3440         LDKUnsignedChannelUpdate* operator &() { return &self; }
3441         LDKUnsignedChannelUpdate* operator ->() { return &self; }
3442         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
3443         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
3444 };
3445 class ChannelUpdate {
3446 private:
3447         LDKChannelUpdate self;
3448 public:
3449         ChannelUpdate(const ChannelUpdate&) = delete;
3450         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
3451         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
3452         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
3453         ~ChannelUpdate() { ChannelUpdate_free(self); }
3454         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
3455         LDKChannelUpdate* operator &() { return &self; }
3456         LDKChannelUpdate* operator ->() { return &self; }
3457         const LDKChannelUpdate* operator &() const { return &self; }
3458         const LDKChannelUpdate* operator ->() const { return &self; }
3459 };
3460 class QueryChannelRange {
3461 private:
3462         LDKQueryChannelRange self;
3463 public:
3464         QueryChannelRange(const QueryChannelRange&) = delete;
3465         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
3466         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
3467         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
3468         ~QueryChannelRange() { QueryChannelRange_free(self); }
3469         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
3470         LDKQueryChannelRange* operator &() { return &self; }
3471         LDKQueryChannelRange* operator ->() { return &self; }
3472         const LDKQueryChannelRange* operator &() const { return &self; }
3473         const LDKQueryChannelRange* operator ->() const { return &self; }
3474 };
3475 class ReplyChannelRange {
3476 private:
3477         LDKReplyChannelRange self;
3478 public:
3479         ReplyChannelRange(const ReplyChannelRange&) = delete;
3480         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
3481         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
3482         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
3483         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
3484         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
3485         LDKReplyChannelRange* operator &() { return &self; }
3486         LDKReplyChannelRange* operator ->() { return &self; }
3487         const LDKReplyChannelRange* operator &() const { return &self; }
3488         const LDKReplyChannelRange* operator ->() const { return &self; }
3489 };
3490 class QueryShortChannelIds {
3491 private:
3492         LDKQueryShortChannelIds self;
3493 public:
3494         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
3495         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
3496         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
3497         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
3498         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
3499         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
3500         LDKQueryShortChannelIds* operator &() { return &self; }
3501         LDKQueryShortChannelIds* operator ->() { return &self; }
3502         const LDKQueryShortChannelIds* operator &() const { return &self; }
3503         const LDKQueryShortChannelIds* operator ->() const { return &self; }
3504 };
3505 class ReplyShortChannelIdsEnd {
3506 private:
3507         LDKReplyShortChannelIdsEnd self;
3508 public:
3509         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
3510         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
3511         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
3512         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
3513         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
3514         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
3515         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
3516         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
3517         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
3518         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
3519 };
3520 class GossipTimestampFilter {
3521 private:
3522         LDKGossipTimestampFilter self;
3523 public:
3524         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
3525         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
3526         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
3527         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
3528         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
3529         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
3530         LDKGossipTimestampFilter* operator &() { return &self; }
3531         LDKGossipTimestampFilter* operator ->() { return &self; }
3532         const LDKGossipTimestampFilter* operator &() const { return &self; }
3533         const LDKGossipTimestampFilter* operator ->() const { return &self; }
3534 };
3535 class ErrorAction {
3536 private:
3537         LDKErrorAction self;
3538 public:
3539         ErrorAction(const ErrorAction&) = delete;
3540         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
3541         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
3542         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
3543         ~ErrorAction() { ErrorAction_free(self); }
3544         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
3545         LDKErrorAction* operator &() { return &self; }
3546         LDKErrorAction* operator ->() { return &self; }
3547         const LDKErrorAction* operator &() const { return &self; }
3548         const LDKErrorAction* operator ->() const { return &self; }
3549 };
3550 class LightningError {
3551 private:
3552         LDKLightningError self;
3553 public:
3554         LightningError(const LightningError&) = delete;
3555         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
3556         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
3557         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
3558         ~LightningError() { LightningError_free(self); }
3559         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
3560         LDKLightningError* operator &() { return &self; }
3561         LDKLightningError* operator ->() { return &self; }
3562         const LDKLightningError* operator &() const { return &self; }
3563         const LDKLightningError* operator ->() const { return &self; }
3564 };
3565 class CommitmentUpdate {
3566 private:
3567         LDKCommitmentUpdate self;
3568 public:
3569         CommitmentUpdate(const CommitmentUpdate&) = delete;
3570         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
3571         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
3572         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
3573         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
3574         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
3575         LDKCommitmentUpdate* operator &() { return &self; }
3576         LDKCommitmentUpdate* operator ->() { return &self; }
3577         const LDKCommitmentUpdate* operator &() const { return &self; }
3578         const LDKCommitmentUpdate* operator ->() const { return &self; }
3579 };
3580 class ChannelMessageHandler {
3581 private:
3582         LDKChannelMessageHandler self;
3583 public:
3584         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
3585         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
3586         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
3587         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
3588         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
3589         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
3590         LDKChannelMessageHandler* operator &() { return &self; }
3591         LDKChannelMessageHandler* operator ->() { return &self; }
3592         const LDKChannelMessageHandler* operator &() const { return &self; }
3593         const LDKChannelMessageHandler* operator ->() const { return &self; }
3594         /**
3595          *  Handle an incoming open_channel message from the given peer.
3596          */
3597         inline void handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
3598         /**
3599          *  Handle an incoming accept_channel message from the given peer.
3600          */
3601         inline void handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
3602         /**
3603          *  Handle an incoming funding_created message from the given peer.
3604          */
3605         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
3606         /**
3607          *  Handle an incoming funding_signed message from the given peer.
3608          */
3609         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
3610         /**
3611          *  Handle an incoming channel_ready message from the given peer.
3612          */
3613         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
3614         /**
3615          *  Handle an incoming shutdown message from the given peer.
3616          */
3617         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg);
3618         /**
3619          *  Handle an incoming closing_signed message from the given peer.
3620          */
3621         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
3622         /**
3623          *  Handle an incoming update_add_htlc message from the given peer.
3624          */
3625         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
3626         /**
3627          *  Handle an incoming update_fulfill_htlc message from the given peer.
3628          */
3629         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
3630         /**
3631          *  Handle an incoming update_fail_htlc message from the given peer.
3632          */
3633         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
3634         /**
3635          *  Handle an incoming update_fail_malformed_htlc message from the given peer.
3636          */
3637         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
3638         /**
3639          *  Handle an incoming commitment_signed message from the given peer.
3640          */
3641         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
3642         /**
3643          *  Handle an incoming revoke_and_ack message from the given peer.
3644          */
3645         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
3646         /**
3647          *  Handle an incoming update_fee message from the given peer.
3648          */
3649         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
3650         /**
3651          *  Handle an incoming announcement_signatures message from the given peer.
3652          */
3653         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
3654         /**
3655          *  Indicates a connection to the peer failed/an existing connection was lost. If no connection
3656          *  is believed to be possible in the future (eg they're sending us messages we don't
3657          *  understand or indicate they require unknown feature bits), no_connection_possible is set
3658          *  and any outstanding channels should be failed.
3659          */
3660         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
3661         /**
3662          *  Handle a peer reconnecting, possibly generating channel_reestablish message(s).
3663          */
3664         inline void peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
3665         /**
3666          *  Handle an incoming channel_reestablish message from the given peer.
3667          */
3668         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
3669         /**
3670          *  Handle an incoming channel update from the given peer.
3671          */
3672         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
3673         /**
3674          *  Handle an incoming error message from the given peer.
3675          */
3676         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
3677 };
3678 class RoutingMessageHandler {
3679 private:
3680         LDKRoutingMessageHandler self;
3681 public:
3682         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
3683         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
3684         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
3685         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
3686         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
3687         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
3688         LDKRoutingMessageHandler* operator &() { return &self; }
3689         LDKRoutingMessageHandler* operator ->() { return &self; }
3690         const LDKRoutingMessageHandler* operator &() const { return &self; }
3691         const LDKRoutingMessageHandler* operator ->() const { return &self; }
3692         /**
3693          *  Handle an incoming node_announcement message, returning true if it should be forwarded on,
3694          *  false or returning an Err otherwise.
3695          */
3696         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
3697         /**
3698          *  Handle a channel_announcement message, returning true if it should be forwarded on, false
3699          *  or returning an Err otherwise.
3700          */
3701         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
3702         /**
3703          *  Handle an incoming channel_update message, returning true if it should be forwarded on,
3704          *  false or returning an Err otherwise.
3705          */
3706         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
3707         /**
3708          *  Gets a subset of the channel announcements and updates required to dump our routing table
3709          *  to a remote node, starting at the short_channel_id indicated by starting_point and
3710          *  including the batch_amount entries immediately higher in numerical value than starting_point.
3711          */
3712         inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount);
3713         /**
3714          *  Gets a subset of the node announcements required to dump our routing table to a remote node,
3715          *  starting at the node *after* the provided publickey and including batch_amount entries
3716          *  immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
3717          *  If None is provided for starting_point, we start at the first node.
3718          * 
3719          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
3720          */
3721         inline LDK::CVec_NodeAnnouncementZ get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount);
3722         /**
3723          *  Called when a connection is established with a peer. This can be used to
3724          *  perform routing table synchronization using a strategy defined by the
3725          *  implementor.
3726          */
3727         inline void peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
3728         /**
3729          *  Handles the reply of a query we initiated to learn about channels
3730          *  for a given range of blocks. We can expect to receive one or more
3731          *  replies to a single query.
3732          */
3733         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
3734         /**
3735          *  Handles the reply of a query we initiated asking for routing gossip
3736          *  messages for a list of channels. We should receive this message when
3737          *  a node has completed its best effort to send us the pertaining routing
3738          *  gossip messages.
3739          */
3740         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
3741         /**
3742          *  Handles when a peer asks us to send a list of short_channel_ids
3743          *  for the requested range of blocks.
3744          */
3745         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
3746         /**
3747          *  Handles when a peer asks us to send routing gossip messages for a
3748          *  list of short_channel_ids.
3749          */
3750         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
3751 };
3752 class GraphSyncError {
3753 private:
3754         LDKGraphSyncError self;
3755 public:
3756         GraphSyncError(const GraphSyncError&) = delete;
3757         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
3758         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
3759         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
3760         ~GraphSyncError() { GraphSyncError_free(self); }
3761         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
3762         LDKGraphSyncError* operator &() { return &self; }
3763         LDKGraphSyncError* operator ->() { return &self; }
3764         const LDKGraphSyncError* operator &() const { return &self; }
3765         const LDKGraphSyncError* operator ->() const { return &self; }
3766 };
3767 class DefaultRouter {
3768 private:
3769         LDKDefaultRouter self;
3770 public:
3771         DefaultRouter(const DefaultRouter&) = delete;
3772         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
3773         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
3774         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
3775         ~DefaultRouter() { DefaultRouter_free(self); }
3776         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
3777         LDKDefaultRouter* operator &() { return &self; }
3778         LDKDefaultRouter* operator ->() { return &self; }
3779         const LDKDefaultRouter* operator &() const { return &self; }
3780         const LDKDefaultRouter* operator ->() const { return &self; }
3781 };
3782 class Level {
3783 private:
3784         LDKLevel self;
3785 public:
3786         Level(const Level&) = delete;
3787         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
3788         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
3789         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
3790         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
3791         LDKLevel* operator &() { return &self; }
3792         LDKLevel* operator ->() { return &self; }
3793         const LDKLevel* operator &() const { return &self; }
3794         const LDKLevel* operator ->() const { return &self; }
3795 };
3796 class Record {
3797 private:
3798         LDKRecord self;
3799 public:
3800         Record(const Record&) = delete;
3801         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
3802         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
3803         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
3804         ~Record() { Record_free(self); }
3805         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
3806         LDKRecord* operator &() { return &self; }
3807         LDKRecord* operator ->() { return &self; }
3808         const LDKRecord* operator &() const { return &self; }
3809         const LDKRecord* operator ->() const { return &self; }
3810 };
3811 class Logger {
3812 private:
3813         LDKLogger self;
3814 public:
3815         Logger(const Logger&) = delete;
3816         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
3817         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
3818         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
3819         ~Logger() { Logger_free(self); }
3820         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
3821         LDKLogger* operator &() { return &self; }
3822         LDKLogger* operator ->() { return &self; }
3823         const LDKLogger* operator &() const { return &self; }
3824         const LDKLogger* operator ->() const { return &self; }
3825         /**
3826          *  Logs the `Record`
3827          */
3828         inline void log(const struct LDKRecord *NONNULL_PTR record);
3829 };
3830 class MonitorUpdateId {
3831 private:
3832         LDKMonitorUpdateId self;
3833 public:
3834         MonitorUpdateId(const MonitorUpdateId&) = delete;
3835         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
3836         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
3837         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
3838         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
3839         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
3840         LDKMonitorUpdateId* operator &() { return &self; }
3841         LDKMonitorUpdateId* operator ->() { return &self; }
3842         const LDKMonitorUpdateId* operator &() const { return &self; }
3843         const LDKMonitorUpdateId* operator ->() const { return &self; }
3844 };
3845 class Persist {
3846 private:
3847         LDKPersist self;
3848 public:
3849         Persist(const Persist&) = delete;
3850         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
3851         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
3852         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
3853         ~Persist() { Persist_free(self); }
3854         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
3855         LDKPersist* operator &() { return &self; }
3856         LDKPersist* operator ->() { return &self; }
3857         const LDKPersist* operator &() const { return &self; }
3858         const LDKPersist* operator ->() const { return &self; }
3859         /**
3860          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
3861          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
3862          * 
3863          *  The data can be stored any way you want, but the identifier provided by LDK is the
3864          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
3865          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
3866          * 
3867          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
3868          *  if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
3869          * 
3870          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
3871          *  and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
3872          * 
3873          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3874          *  [`Writeable::write`]: crate::util::ser::Writeable::write
3875          */
3876         inline LDK::CResult_NoneChannelMonitorUpdateErrZ persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
3877         /**
3878          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
3879          *  update.
3880          * 
3881          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
3882          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
3883          *  details.
3884          * 
3885          *  During blockchain synchronization operations, this may be called with no
3886          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
3887          *  Note that after the full [`ChannelMonitor`] is persisted any previous
3888          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
3889          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
3890          * 
3891          *  If an implementer chooses to persist the updates only, they need to make
3892          *  sure that all the updates are applied to the `ChannelMonitors` *before*
3893          *  the set of channel monitors is given to the `ChannelManager`
3894          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
3895          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
3896          *  persisted, then there is no need to persist individual updates.
3897          * 
3898          *  Note that there could be a performance tradeoff between persisting complete
3899          *  channel monitors on every update vs. persisting only updates and applying
3900          *  them in batches. The size of each monitor grows `O(number of state updates)`
3901          *  whereas updates are small and `O(1)`.
3902          * 
3903          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
3904          *  if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
3905          * 
3906          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
3907          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
3908          *  [`ChannelMonitorUpdateErr`] for requirements when returning errors.
3909          * 
3910          *  [`Writeable::write`]: crate::util::ser::Writeable::write
3911          * 
3912          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
3913          */
3914         inline LDK::CResult_NoneChannelMonitorUpdateErrZ update_persisted_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
3915 };
3916 class LockedChannelMonitor {
3917 private:
3918         LDKLockedChannelMonitor self;
3919 public:
3920         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
3921         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
3922         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
3923         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
3924         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
3925         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
3926         LDKLockedChannelMonitor* operator &() { return &self; }
3927         LDKLockedChannelMonitor* operator ->() { return &self; }
3928         const LDKLockedChannelMonitor* operator &() const { return &self; }
3929         const LDKLockedChannelMonitor* operator ->() const { return &self; }
3930 };
3931 class ChainMonitor {
3932 private:
3933         LDKChainMonitor self;
3934 public:
3935         ChainMonitor(const ChainMonitor&) = delete;
3936         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
3937         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
3938         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
3939         ~ChainMonitor() { ChainMonitor_free(self); }
3940         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
3941         LDKChainMonitor* operator &() { return &self; }
3942         LDKChainMonitor* operator ->() { return &self; }
3943         const LDKChainMonitor* operator &() const { return &self; }
3944         const LDKChainMonitor* operator ->() const { return &self; }
3945 };
3946 class CVec_SpendableOutputDescriptorZ {
3947 private:
3948         LDKCVec_SpendableOutputDescriptorZ self;
3949 public:
3950         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
3951         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
3952         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
3953         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
3954         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
3955         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
3956         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
3957         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
3958         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
3959         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
3960 };
3961 class CResult_LockedChannelMonitorNoneZ {
3962 private:
3963         LDKCResult_LockedChannelMonitorNoneZ self;
3964 public:
3965         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
3966         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
3967         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
3968         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
3969         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
3970         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
3971         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
3972         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
3973         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
3974         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
3975 };
3976 class CResult_PhantomRouteHintsDecodeErrorZ {
3977 private:
3978         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
3979 public:
3980         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
3981         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
3982         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
3983         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
3984         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
3985         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
3986         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
3987         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
3988         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
3989         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
3990 };
3991 class COption_C2Tuple_u64u64ZZ {
3992 private:
3993         LDKCOption_C2Tuple_u64u64ZZ self;
3994 public:
3995         COption_C2Tuple_u64u64ZZ(const COption_C2Tuple_u64u64ZZ&) = delete;
3996         COption_C2Tuple_u64u64ZZ(COption_C2Tuple_u64u64ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_u64u64ZZ)); }
3997         COption_C2Tuple_u64u64ZZ(LDKCOption_C2Tuple_u64u64ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); }
3998         operator LDKCOption_C2Tuple_u64u64ZZ() && { LDKCOption_C2Tuple_u64u64ZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_u64u64ZZ)); return res; }
3999         ~COption_C2Tuple_u64u64ZZ() { COption_C2Tuple_u64u64ZZ_free(self); }
4000         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; }
4001         LDKCOption_C2Tuple_u64u64ZZ* operator &() { return &self; }
4002         LDKCOption_C2Tuple_u64u64ZZ* operator ->() { return &self; }
4003         const LDKCOption_C2Tuple_u64u64ZZ* operator &() const { return &self; }
4004         const LDKCOption_C2Tuple_u64u64ZZ* operator ->() const { return &self; }
4005 };
4006 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
4007 private:
4008         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
4009 public:
4010         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
4011         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4012         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
4013         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
4014         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
4015         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; }
4016         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
4017         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
4018         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
4019         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
4020 };
4021 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
4022 private:
4023         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
4024 public:
4025         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
4026         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
4027         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)); }
4028         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
4029         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
4030         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; }
4031         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
4032         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
4033         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
4034         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
4035 };
4036 class CResult_HTLCUpdateDecodeErrorZ {
4037 private:
4038         LDKCResult_HTLCUpdateDecodeErrorZ self;
4039 public:
4040         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
4041         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
4042         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
4043         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
4044         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
4045         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
4046         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
4047         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
4048         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
4049         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
4050 };
4051 class C2Tuple_SignatureCVec_SignatureZZ {
4052 private:
4053         LDKC2Tuple_SignatureCVec_SignatureZZ self;
4054 public:
4055         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
4056         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
4057         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
4058         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
4059         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
4060         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; }
4061         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
4062         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
4063         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
4064         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
4065 };
4066 class CVec_C2Tuple_u32TxOutZZ {
4067 private:
4068         LDKCVec_C2Tuple_u32TxOutZZ self;
4069 public:
4070         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
4071         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
4072         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
4073         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
4074         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
4075         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; }
4076         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
4077         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
4078         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
4079         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
4080 };
4081 class CResult_ChannelInfoDecodeErrorZ {
4082 private:
4083         LDKCResult_ChannelInfoDecodeErrorZ self;
4084 public:
4085         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
4086         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
4087         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
4088         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
4089         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
4090         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
4091         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
4092         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
4093         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
4094         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
4095 };
4096 class CResult_FundingCreatedDecodeErrorZ {
4097 private:
4098         LDKCResult_FundingCreatedDecodeErrorZ self;
4099 public:
4100         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
4101         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
4102         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
4103         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
4104         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
4105         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
4106         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
4107         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
4108         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
4109         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
4110 };
4111 class CResult_ChannelAnnouncementDecodeErrorZ {
4112 private:
4113         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
4114 public:
4115         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
4116         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
4117         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
4118         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
4119         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
4120         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
4121         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
4122         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
4123         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
4124         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4125 };
4126 class CVec_OutPointZ {
4127 private:
4128         LDKCVec_OutPointZ self;
4129 public:
4130         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
4131         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
4132         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
4133         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
4134         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
4135         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
4136         LDKCVec_OutPointZ* operator &() { return &self; }
4137         LDKCVec_OutPointZ* operator ->() { return &self; }
4138         const LDKCVec_OutPointZ* operator &() const { return &self; }
4139         const LDKCVec_OutPointZ* operator ->() const { return &self; }
4140 };
4141 class CResult_PositiveTimestampCreationErrorZ {
4142 private:
4143         LDKCResult_PositiveTimestampCreationErrorZ self;
4144 public:
4145         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
4146         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
4147         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
4148         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
4149         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
4150         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
4151         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
4152         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
4153         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
4154         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
4155 };
4156 class CResult_CVec_u8ZPeerHandleErrorZ {
4157 private:
4158         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
4159 public:
4160         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
4161         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
4162         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
4163         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
4164         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
4165         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; }
4166         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
4167         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
4168         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
4169         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
4170 };
4171 class CResult_InvoiceFeaturesDecodeErrorZ {
4172 private:
4173         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
4174 public:
4175         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
4176         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
4177         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
4178         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
4179         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
4180         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
4181         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
4182         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
4183         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
4184         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
4185 };
4186 class COption_NetworkUpdateZ {
4187 private:
4188         LDKCOption_NetworkUpdateZ self;
4189 public:
4190         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
4191         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
4192         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
4193         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
4194         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
4195         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
4196         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
4197         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
4198         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
4199         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
4200 };
4201 class COption_u64Z {
4202 private:
4203         LDKCOption_u64Z self;
4204 public:
4205         COption_u64Z(const COption_u64Z&) = delete;
4206         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
4207         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
4208         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
4209         ~COption_u64Z() { COption_u64Z_free(self); }
4210         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
4211         LDKCOption_u64Z* operator &() { return &self; }
4212         LDKCOption_u64Z* operator ->() { return &self; }
4213         const LDKCOption_u64Z* operator &() const { return &self; }
4214         const LDKCOption_u64Z* operator ->() const { return &self; }
4215 };
4216 class CResult_TxOutAccessErrorZ {
4217 private:
4218         LDKCResult_TxOutAccessErrorZ self;
4219 public:
4220         CResult_TxOutAccessErrorZ(const CResult_TxOutAccessErrorZ&) = delete;
4221         CResult_TxOutAccessErrorZ(CResult_TxOutAccessErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); }
4222         CResult_TxOutAccessErrorZ(LDKCResult_TxOutAccessErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); }
4223         operator LDKCResult_TxOutAccessErrorZ() && { LDKCResult_TxOutAccessErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); return res; }
4224         ~CResult_TxOutAccessErrorZ() { CResult_TxOutAccessErrorZ_free(self); }
4225         CResult_TxOutAccessErrorZ& operator=(CResult_TxOutAccessErrorZ&& o) { CResult_TxOutAccessErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); return *this; }
4226         LDKCResult_TxOutAccessErrorZ* operator &() { return &self; }
4227         LDKCResult_TxOutAccessErrorZ* operator ->() { return &self; }
4228         const LDKCResult_TxOutAccessErrorZ* operator &() const { return &self; }
4229         const LDKCResult_TxOutAccessErrorZ* operator ->() const { return &self; }
4230 };
4231 class CResult_TrustedClosingTransactionNoneZ {
4232 private:
4233         LDKCResult_TrustedClosingTransactionNoneZ self;
4234 public:
4235         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
4236         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
4237         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
4238         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
4239         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
4240         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
4241         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
4242         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
4243         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
4244         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
4245 };
4246 class CResult_PaymentPreimageAPIErrorZ {
4247 private:
4248         LDKCResult_PaymentPreimageAPIErrorZ self;
4249 public:
4250         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
4251         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
4252         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
4253         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
4254         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
4255         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
4256         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
4257         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
4258         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
4259         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
4260 };
4261 class CResult_ChannelMonitorUpdateDecodeErrorZ {
4262 private:
4263         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
4264 public:
4265         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
4266         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
4267         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
4268         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
4269         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
4270         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
4271         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
4272         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
4273         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
4274         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
4275 };
4276 class CResult_RouteHintDecodeErrorZ {
4277 private:
4278         LDKCResult_RouteHintDecodeErrorZ self;
4279 public:
4280         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
4281         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
4282         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
4283         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
4284         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
4285         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
4286         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
4287         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
4288         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
4289         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
4290 };
4291 class C2Tuple_PublicKeyTypeZ {
4292 private:
4293         LDKC2Tuple_PublicKeyTypeZ self;
4294 public:
4295         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
4296         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
4297         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
4298         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
4299         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
4300         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
4301         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
4302         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
4303         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
4304         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
4305 };
4306 class CResult_NetAddressDecodeErrorZ {
4307 private:
4308         LDKCResult_NetAddressDecodeErrorZ self;
4309 public:
4310         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
4311         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
4312         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
4313         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
4314         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
4315         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
4316         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
4317         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
4318         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
4319         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
4320 };
4321 class CResult_ChannelReestablishDecodeErrorZ {
4322 private:
4323         LDKCResult_ChannelReestablishDecodeErrorZ self;
4324 public:
4325         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
4326         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
4327         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
4328         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
4329         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
4330         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
4331         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
4332         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
4333         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
4334         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
4335 };
4336 class CResult_CommitmentSignedDecodeErrorZ {
4337 private:
4338         LDKCResult_CommitmentSignedDecodeErrorZ self;
4339 public:
4340         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
4341         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
4342         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
4343         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
4344         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
4345         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
4346         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
4347         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
4348         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
4349         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
4350 };
4351 class CVec_UpdateAddHTLCZ {
4352 private:
4353         LDKCVec_UpdateAddHTLCZ self;
4354 public:
4355         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
4356         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
4357         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
4358         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
4359         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
4360         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
4361         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
4362         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
4363         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
4364         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
4365 };
4366 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
4367 private:
4368         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
4369 public:
4370         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
4371         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4372         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4373         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
4374         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
4375         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
4376         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4377         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4378         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4379         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4380 };
4381 class COption_u32Z {
4382 private:
4383         LDKCOption_u32Z self;
4384 public:
4385         COption_u32Z(const COption_u32Z&) = delete;
4386         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
4387         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
4388         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
4389         ~COption_u32Z() { COption_u32Z_free(self); }
4390         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
4391         LDKCOption_u32Z* operator &() { return &self; }
4392         LDKCOption_u32Z* operator ->() { return &self; }
4393         const LDKCOption_u32Z* operator &() const { return &self; }
4394         const LDKCOption_u32Z* operator ->() const { return &self; }
4395 };
4396 class CResult_InitFeaturesDecodeErrorZ {
4397 private:
4398         LDKCResult_InitFeaturesDecodeErrorZ self;
4399 public:
4400         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
4401         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
4402         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
4403         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
4404         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
4405         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
4406         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
4407         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
4408         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
4409         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
4410 };
4411 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4412 private:
4413         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
4414 public:
4415         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
4416         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4417         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4418         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
4419         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
4420         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
4421         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
4422         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
4423         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
4424         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
4425 };
4426 class CResult_PaymentIdPaymentSendFailureZ {
4427 private:
4428         LDKCResult_PaymentIdPaymentSendFailureZ self;
4429 public:
4430         CResult_PaymentIdPaymentSendFailureZ(const CResult_PaymentIdPaymentSendFailureZ&) = delete;
4431         CResult_PaymentIdPaymentSendFailureZ(CResult_PaymentIdPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); }
4432         CResult_PaymentIdPaymentSendFailureZ(LDKCResult_PaymentIdPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); }
4433         operator LDKCResult_PaymentIdPaymentSendFailureZ() && { LDKCResult_PaymentIdPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); return res; }
4434         ~CResult_PaymentIdPaymentSendFailureZ() { CResult_PaymentIdPaymentSendFailureZ_free(self); }
4435         CResult_PaymentIdPaymentSendFailureZ& operator=(CResult_PaymentIdPaymentSendFailureZ&& o) { CResult_PaymentIdPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); return *this; }
4436         LDKCResult_PaymentIdPaymentSendFailureZ* operator &() { return &self; }
4437         LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() { return &self; }
4438         const LDKCResult_PaymentIdPaymentSendFailureZ* operator &() const { return &self; }
4439         const LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() const { return &self; }
4440 };
4441 class CResult_ReplyChannelRangeDecodeErrorZ {
4442 private:
4443         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
4444 public:
4445         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
4446         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
4447         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
4448         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
4449         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
4450         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
4451         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
4452         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
4453         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
4454         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4455 };
4456 class CResult_CommitmentTransactionDecodeErrorZ {
4457 private:
4458         LDKCResult_CommitmentTransactionDecodeErrorZ self;
4459 public:
4460         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
4461         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
4462         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
4463         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
4464         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
4465         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
4466         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4467         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4468         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4469         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4470 };
4471 class COption_C2Tuple_usizeTransactionZZ {
4472 private:
4473         LDKCOption_C2Tuple_usizeTransactionZZ self;
4474 public:
4475         COption_C2Tuple_usizeTransactionZZ(const COption_C2Tuple_usizeTransactionZZ&) = delete;
4476         COption_C2Tuple_usizeTransactionZZ(COption_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_usizeTransactionZZ)); }
4477         COption_C2Tuple_usizeTransactionZZ(LDKCOption_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); }
4478         operator LDKCOption_C2Tuple_usizeTransactionZZ() && { LDKCOption_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); return res; }
4479         ~COption_C2Tuple_usizeTransactionZZ() { COption_C2Tuple_usizeTransactionZZ_free(self); }
4480         COption_C2Tuple_usizeTransactionZZ& operator=(COption_C2Tuple_usizeTransactionZZ&& o) { COption_C2Tuple_usizeTransactionZZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_C2Tuple_usizeTransactionZZ)); return *this; }
4481         LDKCOption_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
4482         LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
4483         const LDKCOption_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
4484         const LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
4485 };
4486 class CResult_TransactionNoneZ {
4487 private:
4488         LDKCResult_TransactionNoneZ self;
4489 public:
4490         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
4491         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
4492         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
4493         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
4494         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
4495         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
4496         LDKCResult_TransactionNoneZ* operator &() { return &self; }
4497         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
4498         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
4499         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
4500 };
4501 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
4502 private:
4503         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
4504 public:
4505         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
4506         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4507         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4508         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
4509         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
4510         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
4511         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
4512         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
4513         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
4514         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
4515 };
4516 class CResult_PingDecodeErrorZ {
4517 private:
4518         LDKCResult_PingDecodeErrorZ self;
4519 public:
4520         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
4521         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
4522         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
4523         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
4524         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
4525         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
4526         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
4527         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
4528         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
4529         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
4530 };
4531 class CResult_GossipTimestampFilterDecodeErrorZ {
4532 private:
4533         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
4534 public:
4535         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
4536         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
4537         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
4538         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
4539         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
4540         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
4541         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
4542         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
4543         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
4544         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
4545 };
4546 class CResult_InvoiceSignOrCreationErrorZ {
4547 private:
4548         LDKCResult_InvoiceSignOrCreationErrorZ self;
4549 public:
4550         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
4551         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
4552         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
4553         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
4554         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
4555         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
4556         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
4557         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
4558         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
4559         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
4560 };
4561 class COption_FilterZ {
4562 private:
4563         LDKCOption_FilterZ self;
4564 public:
4565         COption_FilterZ(const COption_FilterZ&) = delete;
4566         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
4567         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
4568         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
4569         ~COption_FilterZ() { COption_FilterZ_free(self); }
4570         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
4571         LDKCOption_FilterZ* operator &() { return &self; }
4572         LDKCOption_FilterZ* operator ->() { return &self; }
4573         const LDKCOption_FilterZ* operator &() const { return &self; }
4574         const LDKCOption_FilterZ* operator ->() const { return &self; }
4575 };
4576 class CVec_TransactionOutputsZ {
4577 private:
4578         LDKCVec_TransactionOutputsZ self;
4579 public:
4580         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
4581         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
4582         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
4583         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
4584         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
4585         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
4586         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
4587         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
4588         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
4589         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
4590 };
4591 class CResult_ErrorMessageDecodeErrorZ {
4592 private:
4593         LDKCResult_ErrorMessageDecodeErrorZ self;
4594 public:
4595         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
4596         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
4597         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
4598         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
4599         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
4600         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
4601         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
4602         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
4603         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
4604         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
4605 };
4606 class CResult_OpenChannelDecodeErrorZ {
4607 private:
4608         LDKCResult_OpenChannelDecodeErrorZ self;
4609 public:
4610         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
4611         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
4612         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
4613         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
4614         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
4615         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
4616         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
4617         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
4618         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
4619         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
4620 };
4621 class CVec_CVec_u8ZZ {
4622 private:
4623         LDKCVec_CVec_u8ZZ self;
4624 public:
4625         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
4626         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
4627         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
4628         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
4629         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
4630         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; }
4631         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
4632         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
4633         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
4634         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
4635 };
4636 class CResult_SecretKeyErrorZ {
4637 private:
4638         LDKCResult_SecretKeyErrorZ self;
4639 public:
4640         CResult_SecretKeyErrorZ(const CResult_SecretKeyErrorZ&) = delete;
4641         CResult_SecretKeyErrorZ(CResult_SecretKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); }
4642         CResult_SecretKeyErrorZ(LDKCResult_SecretKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); }
4643         operator LDKCResult_SecretKeyErrorZ() && { LDKCResult_SecretKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); return res; }
4644         ~CResult_SecretKeyErrorZ() { CResult_SecretKeyErrorZ_free(self); }
4645         CResult_SecretKeyErrorZ& operator=(CResult_SecretKeyErrorZ&& o) { CResult_SecretKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); return *this; }
4646         LDKCResult_SecretKeyErrorZ* operator &() { return &self; }
4647         LDKCResult_SecretKeyErrorZ* operator ->() { return &self; }
4648         const LDKCResult_SecretKeyErrorZ* operator &() const { return &self; }
4649         const LDKCResult_SecretKeyErrorZ* operator ->() const { return &self; }
4650 };
4651 class CResult_ShutdownScriptDecodeErrorZ {
4652 private:
4653         LDKCResult_ShutdownScriptDecodeErrorZ self;
4654 public:
4655         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
4656         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
4657         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
4658         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
4659         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
4660         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
4661         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
4662         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
4663         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
4664         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
4665 };
4666 class CResult_ProbabilisticScorerDecodeErrorZ {
4667 private:
4668         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
4669 public:
4670         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
4671         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
4672         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
4673         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
4674         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
4675         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
4676         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
4677         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
4678         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
4679         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
4680 };
4681 class CResult_QueryChannelRangeDecodeErrorZ {
4682 private:
4683         LDKCResult_QueryChannelRangeDecodeErrorZ self;
4684 public:
4685         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
4686         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
4687         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
4688         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
4689         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
4690         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
4691         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
4692         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
4693         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
4694         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4695 };
4696 class CResult_TxCreationKeysDecodeErrorZ {
4697 private:
4698         LDKCResult_TxCreationKeysDecodeErrorZ self;
4699 public:
4700         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
4701         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
4702         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
4703         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
4704         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
4705         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
4706         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
4707         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
4708         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
4709         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
4710 };
4711 class C2Tuple_usizeTransactionZ {
4712 private:
4713         LDKC2Tuple_usizeTransactionZ self;
4714 public:
4715         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
4716         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
4717         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
4718         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
4719         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
4720         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
4721         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
4722         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
4723         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
4724         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
4725 };
4726 class CResult_ChannelFeaturesDecodeErrorZ {
4727 private:
4728         LDKCResult_ChannelFeaturesDecodeErrorZ self;
4729 public:
4730         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
4731         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
4732         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
4733         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
4734         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
4735         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
4736         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
4737         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
4738         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
4739         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
4740 };
4741 class CVec_ChannelMonitorZ {
4742 private:
4743         LDKCVec_ChannelMonitorZ self;
4744 public:
4745         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
4746         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
4747         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
4748         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
4749         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
4750         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
4751         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
4752         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
4753         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
4754         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
4755 };
4756 class CVec_TransactionZ {
4757 private:
4758         LDKCVec_TransactionZ self;
4759 public:
4760         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
4761         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
4762         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
4763         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
4764         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
4765         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
4766         LDKCVec_TransactionZ* operator &() { return &self; }
4767         LDKCVec_TransactionZ* operator ->() { return &self; }
4768         const LDKCVec_TransactionZ* operator &() const { return &self; }
4769         const LDKCVec_TransactionZ* operator ->() const { return &self; }
4770 };
4771 class CResult_ChannelReadyDecodeErrorZ {
4772 private:
4773         LDKCResult_ChannelReadyDecodeErrorZ self;
4774 public:
4775         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
4776         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
4777         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
4778         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
4779         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
4780         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
4781         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
4782         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
4783         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
4784         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
4785 };
4786 class CResult_RouteHopDecodeErrorZ {
4787 private:
4788         LDKCResult_RouteHopDecodeErrorZ self;
4789 public:
4790         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
4791         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
4792         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
4793         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
4794         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
4795         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
4796         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
4797         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
4798         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
4799         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
4800 };
4801 class CResult_UpdateFeeDecodeErrorZ {
4802 private:
4803         LDKCResult_UpdateFeeDecodeErrorZ self;
4804 public:
4805         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
4806         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
4807         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
4808         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
4809         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
4810         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
4811         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
4812         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
4813         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
4814         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
4815 };
4816 class CResult_NodeAnnouncementDecodeErrorZ {
4817 private:
4818         LDKCResult_NodeAnnouncementDecodeErrorZ self;
4819 public:
4820         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
4821         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
4822         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
4823         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
4824         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
4825         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
4826         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4827         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4828         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4829         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4830 };
4831 class CVec_BalanceZ {
4832 private:
4833         LDKCVec_BalanceZ self;
4834 public:
4835         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
4836         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
4837         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
4838         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
4839         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
4840         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
4841         LDKCVec_BalanceZ* operator &() { return &self; }
4842         LDKCVec_BalanceZ* operator ->() { return &self; }
4843         const LDKCVec_BalanceZ* operator &() const { return &self; }
4844         const LDKCVec_BalanceZ* operator ->() const { return &self; }
4845 };
4846 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
4847 private:
4848         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
4849 public:
4850         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
4851         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4852         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4853         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
4854         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
4855         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
4856         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
4857         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
4858         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
4859         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
4860 };
4861 class CResult_boolLightningErrorZ {
4862 private:
4863         LDKCResult_boolLightningErrorZ self;
4864 public:
4865         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
4866         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
4867         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
4868         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
4869         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
4870         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
4871         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
4872         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
4873         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
4874         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
4875 };
4876 class CResult_TxCreationKeysErrorZ {
4877 private:
4878         LDKCResult_TxCreationKeysErrorZ self;
4879 public:
4880         CResult_TxCreationKeysErrorZ(const CResult_TxCreationKeysErrorZ&) = delete;
4881         CResult_TxCreationKeysErrorZ(CResult_TxCreationKeysErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); }
4882         CResult_TxCreationKeysErrorZ(LDKCResult_TxCreationKeysErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); }
4883         operator LDKCResult_TxCreationKeysErrorZ() && { LDKCResult_TxCreationKeysErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); return res; }
4884         ~CResult_TxCreationKeysErrorZ() { CResult_TxCreationKeysErrorZ_free(self); }
4885         CResult_TxCreationKeysErrorZ& operator=(CResult_TxCreationKeysErrorZ&& o) { CResult_TxCreationKeysErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); return *this; }
4886         LDKCResult_TxCreationKeysErrorZ* operator &() { return &self; }
4887         LDKCResult_TxCreationKeysErrorZ* operator ->() { return &self; }
4888         const LDKCResult_TxCreationKeysErrorZ* operator &() const { return &self; }
4889         const LDKCResult_TxCreationKeysErrorZ* operator ->() const { return &self; }
4890 };
4891 class COption_HTLCDestinationZ {
4892 private:
4893         LDKCOption_HTLCDestinationZ self;
4894 public:
4895         COption_HTLCDestinationZ(const COption_HTLCDestinationZ&) = delete;
4896         COption_HTLCDestinationZ(COption_HTLCDestinationZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_HTLCDestinationZ)); }
4897         COption_HTLCDestinationZ(LDKCOption_HTLCDestinationZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_HTLCDestinationZ)); }
4898         operator LDKCOption_HTLCDestinationZ() && { LDKCOption_HTLCDestinationZ res = self; memset(&self, 0, sizeof(LDKCOption_HTLCDestinationZ)); return res; }
4899         ~COption_HTLCDestinationZ() { COption_HTLCDestinationZ_free(self); }
4900         COption_HTLCDestinationZ& operator=(COption_HTLCDestinationZ&& o) { COption_HTLCDestinationZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_HTLCDestinationZ)); return *this; }
4901         LDKCOption_HTLCDestinationZ* operator &() { return &self; }
4902         LDKCOption_HTLCDestinationZ* operator ->() { return &self; }
4903         const LDKCOption_HTLCDestinationZ* operator &() const { return &self; }
4904         const LDKCOption_HTLCDestinationZ* operator ->() const { return &self; }
4905 };
4906 class CResult_NodeIdDecodeErrorZ {
4907 private:
4908         LDKCResult_NodeIdDecodeErrorZ self;
4909 public:
4910         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
4911         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
4912         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
4913         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
4914         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
4915         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
4916         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
4917         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
4918         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
4919         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
4920 };
4921 class CResult_ShutdownScriptInvalidShutdownScriptZ {
4922 private:
4923         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
4924 public:
4925         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
4926         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
4927         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
4928         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
4929         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
4930         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
4931         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
4932         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
4933         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
4934         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
4935 };
4936 class CResult_NodeAnnouncementInfoDecodeErrorZ {
4937 private:
4938         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
4939 public:
4940         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
4941         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
4942         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
4943         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
4944         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
4945         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
4946         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
4947         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
4948         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
4949         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
4950 };
4951 class CResult_COption_NetworkUpdateZDecodeErrorZ {
4952 private:
4953         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
4954 public:
4955         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
4956         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
4957         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
4958         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
4959         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
4960         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; }
4961         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
4962         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
4963         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
4964         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
4965 };
4966 class CResult_RecoverableSignatureNoneZ {
4967 private:
4968         LDKCResult_RecoverableSignatureNoneZ self;
4969 public:
4970         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
4971         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
4972         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
4973         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
4974         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
4975         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
4976         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
4977         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
4978         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
4979         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
4980 };
4981 class C2Tuple_BlockHashChannelMonitorZ {
4982 private:
4983         LDKC2Tuple_BlockHashChannelMonitorZ self;
4984 public:
4985         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
4986         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
4987         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
4988         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
4989         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
4990         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
4991         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
4992         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
4993         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
4994         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
4995 };
4996 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
4997 private:
4998         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
4999 public:
5000         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
5001         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
5002         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
5003         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
5004         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
5005         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; }
5006         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
5007         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
5008         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
5009         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
5010 };
5011 class CVec_UpdateFailMalformedHTLCZ {
5012 private:
5013         LDKCVec_UpdateFailMalformedHTLCZ self;
5014 public:
5015         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
5016         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
5017         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
5018         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
5019         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
5020         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
5021         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
5022         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
5023         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
5024         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
5025 };
5026 class CResult_FundingSignedDecodeErrorZ {
5027 private:
5028         LDKCResult_FundingSignedDecodeErrorZ self;
5029 public:
5030         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
5031         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
5032         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
5033         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
5034         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
5035         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
5036         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
5037         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
5038         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
5039         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
5040 };
5041 class CResult_NetworkGraphDecodeErrorZ {
5042 private:
5043         LDKCResult_NetworkGraphDecodeErrorZ self;
5044 public:
5045         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
5046         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
5047         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
5048         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
5049         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
5050         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
5051         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
5052         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
5053         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
5054         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
5055 };
5056 class CVec_RouteHopZ {
5057 private:
5058         LDKCVec_RouteHopZ self;
5059 public:
5060         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
5061         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
5062         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
5063         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
5064         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
5065         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
5066         LDKCVec_RouteHopZ* operator &() { return &self; }
5067         LDKCVec_RouteHopZ* operator ->() { return &self; }
5068         const LDKCVec_RouteHopZ* operator &() const { return &self; }
5069         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
5070 };
5071 class CResult_NonePaymentSendFailureZ {
5072 private:
5073         LDKCResult_NonePaymentSendFailureZ self;
5074 public:
5075         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
5076         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
5077         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
5078         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
5079         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
5080         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
5081         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
5082         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
5083         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
5084         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
5085 };
5086 class CResult_NodeInfoDecodeErrorZ {
5087 private:
5088         LDKCResult_NodeInfoDecodeErrorZ self;
5089 public:
5090         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
5091         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
5092         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
5093         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
5094         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
5095         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
5096         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
5097         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
5098         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
5099         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
5100 };
5101 class CResult_RouteLightningErrorZ {
5102 private:
5103         LDKCResult_RouteLightningErrorZ self;
5104 public:
5105         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
5106         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
5107         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
5108         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
5109         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
5110         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
5111         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
5112         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
5113         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
5114         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
5115 };
5116 class CResult_ChannelPublicKeysDecodeErrorZ {
5117 private:
5118         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
5119 public:
5120         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
5121         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
5122         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
5123         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
5124         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
5125         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
5126         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
5127         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
5128         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
5129         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
5130 };
5131 class CVec_NodeIdZ {
5132 private:
5133         LDKCVec_NodeIdZ self;
5134 public:
5135         CVec_NodeIdZ(const CVec_NodeIdZ&) = delete;
5136         CVec_NodeIdZ(CVec_NodeIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeIdZ)); }
5137         CVec_NodeIdZ(LDKCVec_NodeIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeIdZ)); }
5138         operator LDKCVec_NodeIdZ() && { LDKCVec_NodeIdZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeIdZ)); return res; }
5139         ~CVec_NodeIdZ() { CVec_NodeIdZ_free(self); }
5140         CVec_NodeIdZ& operator=(CVec_NodeIdZ&& o) { CVec_NodeIdZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeIdZ)); return *this; }
5141         LDKCVec_NodeIdZ* operator &() { return &self; }
5142         LDKCVec_NodeIdZ* operator ->() { return &self; }
5143         const LDKCVec_NodeIdZ* operator &() const { return &self; }
5144         const LDKCVec_NodeIdZ* operator ->() const { return &self; }
5145 };
5146 class CVec_u8Z {
5147 private:
5148         LDKCVec_u8Z self;
5149 public:
5150         CVec_u8Z(const CVec_u8Z&) = delete;
5151         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
5152         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
5153         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
5154         ~CVec_u8Z() { CVec_u8Z_free(self); }
5155         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
5156         LDKCVec_u8Z* operator &() { return &self; }
5157         LDKCVec_u8Z* operator ->() { return &self; }
5158         const LDKCVec_u8Z* operator &() const { return &self; }
5159         const LDKCVec_u8Z* operator ->() const { return &self; }
5160 };
5161 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
5162 private:
5163         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
5164 public:
5165         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
5166         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5167         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5168         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
5169         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
5170         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; }
5171         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
5172         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
5173         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
5174         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
5175 };
5176 class CVec_ThirtyTwoBytesZ {
5177 private:
5178         LDKCVec_ThirtyTwoBytesZ self;
5179 public:
5180         CVec_ThirtyTwoBytesZ(const CVec_ThirtyTwoBytesZ&) = delete;
5181         CVec_ThirtyTwoBytesZ(CVec_ThirtyTwoBytesZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); }
5182         CVec_ThirtyTwoBytesZ(LDKCVec_ThirtyTwoBytesZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); }
5183         operator LDKCVec_ThirtyTwoBytesZ() && { LDKCVec_ThirtyTwoBytesZ res = self; memset(&self, 0, sizeof(LDKCVec_ThirtyTwoBytesZ)); return res; }
5184         ~CVec_ThirtyTwoBytesZ() { CVec_ThirtyTwoBytesZ_free(self); }
5185         CVec_ThirtyTwoBytesZ& operator=(CVec_ThirtyTwoBytesZ&& o) { CVec_ThirtyTwoBytesZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ThirtyTwoBytesZ)); return *this; }
5186         LDKCVec_ThirtyTwoBytesZ* operator &() { return &self; }
5187         LDKCVec_ThirtyTwoBytesZ* operator ->() { return &self; }
5188         const LDKCVec_ThirtyTwoBytesZ* operator &() const { return &self; }
5189         const LDKCVec_ThirtyTwoBytesZ* operator ->() const { return &self; }
5190 };
5191 class CResult_ClosingSignedDecodeErrorZ {
5192 private:
5193         LDKCResult_ClosingSignedDecodeErrorZ self;
5194 public:
5195         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
5196         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
5197         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
5198         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
5199         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
5200         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
5201         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
5202         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
5203         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
5204         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
5205 };
5206 class CResult_HolderCommitmentTransactionDecodeErrorZ {
5207 private:
5208         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
5209 public:
5210         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
5211         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
5212         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
5213         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
5214         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
5215         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
5216         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
5217         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
5218         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
5219         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
5220 };
5221 class CVec_CResult_NoneAPIErrorZZ {
5222 private:
5223         LDKCVec_CResult_NoneAPIErrorZZ self;
5224 public:
5225         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
5226         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
5227         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
5228         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
5229         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
5230         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; }
5231         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
5232         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
5233         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
5234         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
5235 };
5236 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
5237 private:
5238         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
5239 public:
5240         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
5241         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5242         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5243         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
5244         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
5245         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
5246         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
5247         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
5248         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
5249         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
5250 };
5251 class CResult_ChannelCounterpartyDecodeErrorZ {
5252 private:
5253         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
5254 public:
5255         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
5256         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
5257         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
5258         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
5259         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
5260         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
5261         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
5262         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
5263         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
5264         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
5265 };
5266 class CResult_WarningMessageDecodeErrorZ {
5267 private:
5268         LDKCResult_WarningMessageDecodeErrorZ self;
5269 public:
5270         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
5271         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
5272         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
5273         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
5274         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
5275         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
5276         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
5277         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
5278         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
5279         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
5280 };
5281 class CResult_SignatureNoneZ {
5282 private:
5283         LDKCResult_SignatureNoneZ self;
5284 public:
5285         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
5286         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
5287         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
5288         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
5289         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
5290         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
5291         LDKCResult_SignatureNoneZ* operator &() { return &self; }
5292         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
5293         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
5294         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
5295 };
5296 class CVec_RouteHintHopZ {
5297 private:
5298         LDKCVec_RouteHintHopZ self;
5299 public:
5300         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
5301         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
5302         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
5303         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
5304         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
5305         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
5306         LDKCVec_RouteHintHopZ* operator &() { return &self; }
5307         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
5308         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
5309         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
5310 };
5311 class CResult_SecretKeyNoneZ {
5312 private:
5313         LDKCResult_SecretKeyNoneZ self;
5314 public:
5315         CResult_SecretKeyNoneZ(const CResult_SecretKeyNoneZ&) = delete;
5316         CResult_SecretKeyNoneZ(CResult_SecretKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); }
5317         CResult_SecretKeyNoneZ(LDKCResult_SecretKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); }
5318         operator LDKCResult_SecretKeyNoneZ() && { LDKCResult_SecretKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); return res; }
5319         ~CResult_SecretKeyNoneZ() { CResult_SecretKeyNoneZ_free(self); }
5320         CResult_SecretKeyNoneZ& operator=(CResult_SecretKeyNoneZ&& o) { CResult_SecretKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); return *this; }
5321         LDKCResult_SecretKeyNoneZ* operator &() { return &self; }
5322         LDKCResult_SecretKeyNoneZ* operator ->() { return &self; }
5323         const LDKCResult_SecretKeyNoneZ* operator &() const { return &self; }
5324         const LDKCResult_SecretKeyNoneZ* operator ->() const { return &self; }
5325 };
5326 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
5327 private:
5328         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
5329 public:
5330         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
5331         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5332         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5333         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
5334         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
5335         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; }
5336         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
5337         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
5338         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
5339         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
5340 };
5341 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
5342 private:
5343         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
5344 public:
5345         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
5346         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5347         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5348         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
5349         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
5350         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; }
5351         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
5352         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
5353         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
5354         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
5355 };
5356 class CResult_PaymentParametersDecodeErrorZ {
5357 private:
5358         LDKCResult_PaymentParametersDecodeErrorZ self;
5359 public:
5360         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
5361         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
5362         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
5363         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
5364         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
5365         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
5366         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
5367         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
5368         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
5369         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
5370 };
5371 class CResult_PaymentPurposeDecodeErrorZ {
5372 private:
5373         LDKCResult_PaymentPurposeDecodeErrorZ self;
5374 public:
5375         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
5376         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
5377         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
5378         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
5379         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
5380         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
5381         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
5382         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
5383         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
5384         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
5385 };
5386 class CResult_InitDecodeErrorZ {
5387 private:
5388         LDKCResult_InitDecodeErrorZ self;
5389 public:
5390         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
5391         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
5392         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
5393         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
5394         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
5395         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
5396         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
5397         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
5398         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
5399         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
5400 };
5401 class CResult_OutPointDecodeErrorZ {
5402 private:
5403         LDKCResult_OutPointDecodeErrorZ self;
5404 public:
5405         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
5406         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
5407         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
5408         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
5409         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
5410         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
5411         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
5412         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
5413         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
5414         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
5415 };
5416 class CVec_ChannelDetailsZ {
5417 private:
5418         LDKCVec_ChannelDetailsZ self;
5419 public:
5420         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
5421         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
5422         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
5423         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
5424         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
5425         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
5426         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
5427         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
5428         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
5429         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
5430 };
5431 class CResult_SignDecodeErrorZ {
5432 private:
5433         LDKCResult_SignDecodeErrorZ self;
5434 public:
5435         CResult_SignDecodeErrorZ(const CResult_SignDecodeErrorZ&) = delete;
5436         CResult_SignDecodeErrorZ(CResult_SignDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); }
5437         CResult_SignDecodeErrorZ(LDKCResult_SignDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); }
5438         operator LDKCResult_SignDecodeErrorZ() && { LDKCResult_SignDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); return res; }
5439         ~CResult_SignDecodeErrorZ() { CResult_SignDecodeErrorZ_free(self); }
5440         CResult_SignDecodeErrorZ& operator=(CResult_SignDecodeErrorZ&& o) { CResult_SignDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); return *this; }
5441         LDKCResult_SignDecodeErrorZ* operator &() { return &self; }
5442         LDKCResult_SignDecodeErrorZ* operator ->() { return &self; }
5443         const LDKCResult_SignDecodeErrorZ* operator &() const { return &self; }
5444         const LDKCResult_SignDecodeErrorZ* operator ->() const { return &self; }
5445 };
5446 class CVec_MessageSendEventZ {
5447 private:
5448         LDKCVec_MessageSendEventZ self;
5449 public:
5450         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
5451         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
5452         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
5453         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
5454         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
5455         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
5456         LDKCVec_MessageSendEventZ* operator &() { return &self; }
5457         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
5458         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
5459         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
5460 };
5461 class COption_NetAddressZ {
5462 private:
5463         LDKCOption_NetAddressZ self;
5464 public:
5465         COption_NetAddressZ(const COption_NetAddressZ&) = delete;
5466         COption_NetAddressZ(COption_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetAddressZ)); }
5467         COption_NetAddressZ(LDKCOption_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetAddressZ)); }
5468         operator LDKCOption_NetAddressZ() && { LDKCOption_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_NetAddressZ)); return res; }
5469         ~COption_NetAddressZ() { COption_NetAddressZ_free(self); }
5470         COption_NetAddressZ& operator=(COption_NetAddressZ&& o) { COption_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetAddressZ)); return *this; }
5471         LDKCOption_NetAddressZ* operator &() { return &self; }
5472         LDKCOption_NetAddressZ* operator ->() { return &self; }
5473         const LDKCOption_NetAddressZ* operator &() const { return &self; }
5474         const LDKCOption_NetAddressZ* operator ->() const { return &self; }
5475 };
5476 class C2Tuple_OutPointScriptZ {
5477 private:
5478         LDKC2Tuple_OutPointScriptZ self;
5479 public:
5480         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
5481         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
5482         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
5483         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
5484         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
5485         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
5486         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
5487         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
5488         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
5489         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
5490 };
5491 class CResult_RouteHintHopDecodeErrorZ {
5492 private:
5493         LDKCResult_RouteHintHopDecodeErrorZ self;
5494 public:
5495         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
5496         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
5497         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
5498         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
5499         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
5500         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
5501         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
5502         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
5503         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
5504         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
5505 };
5506 class CResult_C2Tuple_SignatureSignatureZNoneZ {
5507 private:
5508         LDKCResult_C2Tuple_SignatureSignatureZNoneZ self;
5509 public:
5510         CResult_C2Tuple_SignatureSignatureZNoneZ(const CResult_C2Tuple_SignatureSignatureZNoneZ&) = delete;
5511         CResult_C2Tuple_SignatureSignatureZNoneZ(CResult_C2Tuple_SignatureSignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureSignatureZNoneZ)); }
5512         CResult_C2Tuple_SignatureSignatureZNoneZ(LDKCResult_C2Tuple_SignatureSignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); }
5513         operator LDKCResult_C2Tuple_SignatureSignatureZNoneZ() && { LDKCResult_C2Tuple_SignatureSignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); return res; }
5514         ~CResult_C2Tuple_SignatureSignatureZNoneZ() { CResult_C2Tuple_SignatureSignatureZNoneZ_free(self); }
5515         CResult_C2Tuple_SignatureSignatureZNoneZ& operator=(CResult_C2Tuple_SignatureSignatureZNoneZ&& o) { CResult_C2Tuple_SignatureSignatureZNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_C2Tuple_SignatureSignatureZNoneZ)); return *this; }
5516         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() { return &self; }
5517         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() { return &self; }
5518         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() const { return &self; }
5519         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() const { return &self; }
5520 };
5521 class CVec_NodeAnnouncementZ {
5522 private:
5523         LDKCVec_NodeAnnouncementZ self;
5524 public:
5525         CVec_NodeAnnouncementZ(const CVec_NodeAnnouncementZ&) = delete;
5526         CVec_NodeAnnouncementZ(CVec_NodeAnnouncementZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); }
5527         CVec_NodeAnnouncementZ(LDKCVec_NodeAnnouncementZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); }
5528         operator LDKCVec_NodeAnnouncementZ() && { LDKCVec_NodeAnnouncementZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); return res; }
5529         ~CVec_NodeAnnouncementZ() { CVec_NodeAnnouncementZ_free(self); }
5530         CVec_NodeAnnouncementZ& operator=(CVec_NodeAnnouncementZ&& o) { CVec_NodeAnnouncementZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); return *this; }
5531         LDKCVec_NodeAnnouncementZ* operator &() { return &self; }
5532         LDKCVec_NodeAnnouncementZ* operator ->() { return &self; }
5533         const LDKCVec_NodeAnnouncementZ* operator &() const { return &self; }
5534         const LDKCVec_NodeAnnouncementZ* operator ->() const { return &self; }
5535 };
5536 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
5537 private:
5538         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
5539 public:
5540         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
5541         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
5542         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
5543         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
5544         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
5545         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
5546         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
5547         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
5548         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
5549         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
5550 };
5551 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
5552 private:
5553         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
5554 public:
5555         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
5556         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5557         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5558         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
5559         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
5560         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
5561         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
5562         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
5563         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
5564         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
5565 };
5566 class CVec_TxidZ {
5567 private:
5568         LDKCVec_TxidZ self;
5569 public:
5570         CVec_TxidZ(const CVec_TxidZ&) = delete;
5571         CVec_TxidZ(CVec_TxidZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxidZ)); }
5572         CVec_TxidZ(LDKCVec_TxidZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxidZ)); }
5573         operator LDKCVec_TxidZ() && { LDKCVec_TxidZ res = self; memset(&self, 0, sizeof(LDKCVec_TxidZ)); return res; }
5574         ~CVec_TxidZ() { CVec_TxidZ_free(self); }
5575         CVec_TxidZ& operator=(CVec_TxidZ&& o) { CVec_TxidZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxidZ)); return *this; }
5576         LDKCVec_TxidZ* operator &() { return &self; }
5577         LDKCVec_TxidZ* operator ->() { return &self; }
5578         const LDKCVec_TxidZ* operator &() const { return &self; }
5579         const LDKCVec_TxidZ* operator ->() const { return &self; }
5580 };
5581 class COption_AccessZ {
5582 private:
5583         LDKCOption_AccessZ self;
5584 public:
5585         COption_AccessZ(const COption_AccessZ&) = delete;
5586         COption_AccessZ(COption_AccessZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AccessZ)); }
5587         COption_AccessZ(LDKCOption_AccessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AccessZ)); }
5588         operator LDKCOption_AccessZ() && { LDKCOption_AccessZ res = self; memset(&self, 0, sizeof(LDKCOption_AccessZ)); return res; }
5589         ~COption_AccessZ() { COption_AccessZ_free(self); }
5590         COption_AccessZ& operator=(COption_AccessZ&& o) { COption_AccessZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AccessZ)); return *this; }
5591         LDKCOption_AccessZ* operator &() { return &self; }
5592         LDKCOption_AccessZ* operator ->() { return &self; }
5593         const LDKCOption_AccessZ* operator &() const { return &self; }
5594         const LDKCOption_AccessZ* operator ->() const { return &self; }
5595 };
5596 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
5597 private:
5598         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
5599 public:
5600         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
5601         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
5602         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
5603         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
5604         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
5605         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; }
5606         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
5607         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
5608         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
5609         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
5610 };
5611 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
5612 private:
5613         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
5614 public:
5615         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
5616         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5617         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5618         operator LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
5619         ~CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
5620         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ& operator=(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) { CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return *this; }
5621         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
5622         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
5623         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
5624         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
5625 };
5626 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
5627 private:
5628         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
5629 public:
5630         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
5631         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5632         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5633         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
5634         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
5635         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; }
5636         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
5637         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
5638         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
5639         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
5640 };
5641 class CResult_CVec_CVec_u8ZZNoneZ {
5642 private:
5643         LDKCResult_CVec_CVec_u8ZZNoneZ self;
5644 public:
5645         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
5646         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
5647         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
5648         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
5649         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
5650         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; }
5651         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
5652         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
5653         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
5654         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
5655 };
5656 class C2Tuple_SignatureSignatureZ {
5657 private:
5658         LDKC2Tuple_SignatureSignatureZ self;
5659 public:
5660         C2Tuple_SignatureSignatureZ(const C2Tuple_SignatureSignatureZ&) = delete;
5661         C2Tuple_SignatureSignatureZ(C2Tuple_SignatureSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); }
5662         C2Tuple_SignatureSignatureZ(LDKC2Tuple_SignatureSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); }
5663         operator LDKC2Tuple_SignatureSignatureZ() && { LDKC2Tuple_SignatureSignatureZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); return res; }
5664         ~C2Tuple_SignatureSignatureZ() { C2Tuple_SignatureSignatureZ_free(self); }
5665         C2Tuple_SignatureSignatureZ& operator=(C2Tuple_SignatureSignatureZ&& o) { C2Tuple_SignatureSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); return *this; }
5666         LDKC2Tuple_SignatureSignatureZ* operator &() { return &self; }
5667         LDKC2Tuple_SignatureSignatureZ* operator ->() { return &self; }
5668         const LDKC2Tuple_SignatureSignatureZ* operator &() const { return &self; }
5669         const LDKC2Tuple_SignatureSignatureZ* operator ->() const { return &self; }
5670 };
5671 class C2Tuple_PaymentHashPaymentSecretZ {
5672 private:
5673         LDKC2Tuple_PaymentHashPaymentSecretZ self;
5674 public:
5675         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
5676         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
5677         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
5678         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
5679         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
5680         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
5681         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
5682         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
5683         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
5684         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
5685 };
5686 class C2Tuple_BlockHashChannelManagerZ {
5687 private:
5688         LDKC2Tuple_BlockHashChannelManagerZ self;
5689 public:
5690         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
5691         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
5692         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
5693         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
5694         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
5695         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
5696         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
5697         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
5698         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
5699         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
5700 };
5701 class CResult_ChannelTransactionParametersDecodeErrorZ {
5702 private:
5703         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
5704 public:
5705         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
5706         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
5707         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
5708         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
5709         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
5710         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
5711         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
5712         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
5713         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
5714         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
5715 };
5716 class CResult_AcceptChannelDecodeErrorZ {
5717 private:
5718         LDKCResult_AcceptChannelDecodeErrorZ self;
5719 public:
5720         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
5721         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
5722         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
5723         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
5724         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
5725         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
5726         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
5727         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
5728         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
5729         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
5730 };
5731 class CVec_SignatureZ {
5732 private:
5733         LDKCVec_SignatureZ self;
5734 public:
5735         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
5736         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
5737         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
5738         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
5739         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
5740         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
5741         LDKCVec_SignatureZ* operator &() { return &self; }
5742         LDKCVec_SignatureZ* operator ->() { return &self; }
5743         const LDKCVec_SignatureZ* operator &() const { return &self; }
5744         const LDKCVec_SignatureZ* operator ->() const { return &self; }
5745 };
5746 class CVec_u64Z {
5747 private:
5748         LDKCVec_u64Z self;
5749 public:
5750         CVec_u64Z(const CVec_u64Z&) = delete;
5751         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
5752         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
5753         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
5754         ~CVec_u64Z() { CVec_u64Z_free(self); }
5755         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
5756         LDKCVec_u64Z* operator &() { return &self; }
5757         LDKCVec_u64Z* operator ->() { return &self; }
5758         const LDKCVec_u64Z* operator &() const { return &self; }
5759         const LDKCVec_u64Z* operator ->() const { return &self; }
5760 };
5761 class CResult_PongDecodeErrorZ {
5762 private:
5763         LDKCResult_PongDecodeErrorZ self;
5764 public:
5765         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
5766         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
5767         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
5768         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
5769         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
5770         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
5771         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
5772         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
5773         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
5774         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
5775 };
5776 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
5777 private:
5778         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
5779 public:
5780         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
5781         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5782         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5783         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
5784         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
5785         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
5786         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5787         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5788         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5789         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5790 };
5791 class C2Tuple_PaymentHashPaymentIdZ {
5792 private:
5793         LDKC2Tuple_PaymentHashPaymentIdZ self;
5794 public:
5795         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
5796         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
5797         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
5798         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
5799         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
5800         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
5801         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
5802         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
5803         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
5804         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
5805 };
5806 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
5807 private:
5808         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ self;
5809 public:
5810         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(const CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&) = delete;
5811         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5812         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5813         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return res; }
5814         ~CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); }
5815         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; }
5816         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() { return &self; }
5817         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() { return &self; }
5818         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() const { return &self; }
5819         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() const { return &self; }
5820 };
5821 class CResult_NoneErrorZ {
5822 private:
5823         LDKCResult_NoneErrorZ self;
5824 public:
5825         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
5826         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
5827         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
5828         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
5829         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
5830         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
5831         LDKCResult_NoneErrorZ* operator &() { return &self; }
5832         LDKCResult_NoneErrorZ* operator ->() { return &self; }
5833         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
5834         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
5835 };
5836 class CResult_COption_HTLCDestinationZDecodeErrorZ {
5837 private:
5838         LDKCResult_COption_HTLCDestinationZDecodeErrorZ self;
5839 public:
5840         CResult_COption_HTLCDestinationZDecodeErrorZ(const CResult_COption_HTLCDestinationZDecodeErrorZ&) = delete;
5841         CResult_COption_HTLCDestinationZDecodeErrorZ(CResult_COption_HTLCDestinationZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_HTLCDestinationZDecodeErrorZ)); }
5842         CResult_COption_HTLCDestinationZDecodeErrorZ(LDKCResult_COption_HTLCDestinationZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); }
5843         operator LDKCResult_COption_HTLCDestinationZDecodeErrorZ() && { LDKCResult_COption_HTLCDestinationZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_HTLCDestinationZDecodeErrorZ)); return res; }
5844         ~CResult_COption_HTLCDestinationZDecodeErrorZ() { CResult_COption_HTLCDestinationZDecodeErrorZ_free(self); }
5845         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; }
5846         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() { return &self; }
5847         LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() { return &self; }
5848         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator &() const { return &self; }
5849         const LDKCResult_COption_HTLCDestinationZDecodeErrorZ* operator ->() const { return &self; }
5850 };
5851 class CResult_StringErrorZ {
5852 private:
5853         LDKCResult_StringErrorZ self;
5854 public:
5855         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
5856         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
5857         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
5858         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
5859         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
5860         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
5861         LDKCResult_StringErrorZ* operator &() { return &self; }
5862         LDKCResult_StringErrorZ* operator ->() { return &self; }
5863         const LDKCResult_StringErrorZ* operator &() const { return &self; }
5864         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
5865 };
5866 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
5867 private:
5868         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
5869 public:
5870         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
5871         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
5872         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
5873         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
5874         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
5875         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; }
5876         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
5877         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
5878         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
5879         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
5880 };
5881 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
5882 private:
5883         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
5884 public:
5885         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
5886         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
5887         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
5888         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
5889         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
5890         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; }
5891         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
5892         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
5893         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
5894         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
5895 };
5896 class COption_EventZ {
5897 private:
5898         LDKCOption_EventZ self;
5899 public:
5900         COption_EventZ(const COption_EventZ&) = delete;
5901         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
5902         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
5903         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
5904         ~COption_EventZ() { COption_EventZ_free(self); }
5905         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
5906         LDKCOption_EventZ* operator &() { return &self; }
5907         LDKCOption_EventZ* operator ->() { return &self; }
5908         const LDKCOption_EventZ* operator &() const { return &self; }
5909         const LDKCOption_EventZ* operator ->() const { return &self; }
5910 };
5911 class CResult_ChannelTypeFeaturesDecodeErrorZ {
5912 private:
5913         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
5914 public:
5915         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
5916         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
5917         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
5918         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
5919         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
5920         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
5921         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
5922         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
5923         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
5924         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
5925 };
5926 class CResult_SiPrefixParseErrorZ {
5927 private:
5928         LDKCResult_SiPrefixParseErrorZ self;
5929 public:
5930         CResult_SiPrefixParseErrorZ(const CResult_SiPrefixParseErrorZ&) = delete;
5931         CResult_SiPrefixParseErrorZ(CResult_SiPrefixParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); }
5932         CResult_SiPrefixParseErrorZ(LDKCResult_SiPrefixParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); }
5933         operator LDKCResult_SiPrefixParseErrorZ() && { LDKCResult_SiPrefixParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); return res; }
5934         ~CResult_SiPrefixParseErrorZ() { CResult_SiPrefixParseErrorZ_free(self); }
5935         CResult_SiPrefixParseErrorZ& operator=(CResult_SiPrefixParseErrorZ&& o) { CResult_SiPrefixParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); return *this; }
5936         LDKCResult_SiPrefixParseErrorZ* operator &() { return &self; }
5937         LDKCResult_SiPrefixParseErrorZ* operator ->() { return &self; }
5938         const LDKCResult_SiPrefixParseErrorZ* operator &() const { return &self; }
5939         const LDKCResult_SiPrefixParseErrorZ* operator ->() const { return &self; }
5940 };
5941 class CVec_RouteHintZ {
5942 private:
5943         LDKCVec_RouteHintZ self;
5944 public:
5945         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
5946         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
5947         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
5948         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
5949         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
5950         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
5951         LDKCVec_RouteHintZ* operator &() { return &self; }
5952         LDKCVec_RouteHintZ* operator ->() { return &self; }
5953         const LDKCVec_RouteHintZ* operator &() const { return &self; }
5954         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
5955 };
5956 class COption_u16Z {
5957 private:
5958         LDKCOption_u16Z self;
5959 public:
5960         COption_u16Z(const COption_u16Z&) = delete;
5961         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
5962         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
5963         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
5964         ~COption_u16Z() { COption_u16Z_free(self); }
5965         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
5966         LDKCOption_u16Z* operator &() { return &self; }
5967         LDKCOption_u16Z* operator ->() { return &self; }
5968         const LDKCOption_u16Z* operator &() const { return &self; }
5969         const LDKCOption_u16Z* operator ->() const { return &self; }
5970 };
5971 class CVec_CVec_RouteHopZZ {
5972 private:
5973         LDKCVec_CVec_RouteHopZZ self;
5974 public:
5975         CVec_CVec_RouteHopZZ(const CVec_CVec_RouteHopZZ&) = delete;
5976         CVec_CVec_RouteHopZZ(CVec_CVec_RouteHopZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); }
5977         CVec_CVec_RouteHopZZ(LDKCVec_CVec_RouteHopZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); }
5978         operator LDKCVec_CVec_RouteHopZZ() && { LDKCVec_CVec_RouteHopZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); return res; }
5979         ~CVec_CVec_RouteHopZZ() { CVec_CVec_RouteHopZZ_free(self); }
5980         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; }
5981         LDKCVec_CVec_RouteHopZZ* operator &() { return &self; }
5982         LDKCVec_CVec_RouteHopZZ* operator ->() { return &self; }
5983         const LDKCVec_CVec_RouteHopZZ* operator &() const { return &self; }
5984         const LDKCVec_CVec_RouteHopZZ* operator ->() const { return &self; }
5985 };
5986 class CResult_TrustedCommitmentTransactionNoneZ {
5987 private:
5988         LDKCResult_TrustedCommitmentTransactionNoneZ self;
5989 public:
5990         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
5991         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
5992         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
5993         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
5994         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
5995         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
5996         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
5997         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
5998         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
5999         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
6000 };
6001 class CResult_FixedPenaltyScorerDecodeErrorZ {
6002 private:
6003         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
6004 public:
6005         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
6006         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
6007         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
6008         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
6009         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
6010         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
6011         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
6012         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
6013         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
6014         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
6015 };
6016 class CResult_NoneLightningErrorZ {
6017 private:
6018         LDKCResult_NoneLightningErrorZ self;
6019 public:
6020         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
6021         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
6022         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
6023         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
6024         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
6025         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
6026         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
6027         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
6028         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
6029         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
6030 };
6031 class CResult_NonePeerHandleErrorZ {
6032 private:
6033         LDKCResult_NonePeerHandleErrorZ self;
6034 public:
6035         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
6036         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
6037         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
6038         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
6039         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
6040         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
6041         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
6042         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
6043         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
6044         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
6045 };
6046 class CResult_COption_EventZDecodeErrorZ {
6047 private:
6048         LDKCResult_COption_EventZDecodeErrorZ self;
6049 public:
6050         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
6051         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
6052         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
6053         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
6054         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
6055         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; }
6056         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
6057         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
6058         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
6059         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
6060 };
6061 class CResult_CVec_SignatureZNoneZ {
6062 private:
6063         LDKCResult_CVec_SignatureZNoneZ self;
6064 public:
6065         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
6066         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
6067         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
6068         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
6069         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
6070         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; }
6071         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
6072         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
6073         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
6074         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
6075 };
6076 class COption_CVec_NetAddressZZ {
6077 private:
6078         LDKCOption_CVec_NetAddressZZ self;
6079 public:
6080         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
6081         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
6082         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
6083         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
6084         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
6085         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; }
6086         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
6087         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
6088         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
6089         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
6090 };
6091 class CResult__u832APIErrorZ {
6092 private:
6093         LDKCResult__u832APIErrorZ self;
6094 public:
6095         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
6096         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
6097         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
6098         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
6099         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
6100         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
6101         LDKCResult__u832APIErrorZ* operator &() { return &self; }
6102         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
6103         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
6104         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
6105 };
6106 class CResult_PaymentIdPaymentErrorZ {
6107 private:
6108         LDKCResult_PaymentIdPaymentErrorZ self;
6109 public:
6110         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
6111         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
6112         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
6113         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
6114         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
6115         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
6116         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
6117         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
6118         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
6119         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
6120 };
6121 class CResult_DescriptionCreationErrorZ {
6122 private:
6123         LDKCResult_DescriptionCreationErrorZ self;
6124 public:
6125         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
6126         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
6127         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
6128         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
6129         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
6130         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
6131         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
6132         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
6133         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
6134         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
6135 };
6136 class CResult_RoutingFeesDecodeErrorZ {
6137 private:
6138         LDKCResult_RoutingFeesDecodeErrorZ self;
6139 public:
6140         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
6141         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
6142         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
6143         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
6144         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
6145         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
6146         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
6147         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
6148         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
6149         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
6150 };
6151 class CResult_PayeePubKeyErrorZ {
6152 private:
6153         LDKCResult_PayeePubKeyErrorZ self;
6154 public:
6155         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
6156         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
6157         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
6158         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
6159         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
6160         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
6161         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
6162         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
6163         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
6164         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
6165 };
6166 class CResult_COption_MonitorEventZDecodeErrorZ {
6167 private:
6168         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
6169 public:
6170         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
6171         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
6172         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
6173         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
6174         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
6175         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; }
6176         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
6177         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
6178         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
6179         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
6180 };
6181 class C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ {
6182 private:
6183         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ self;
6184 public:
6185         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(const C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&) = delete;
6186         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
6187         C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); }
6188         operator LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() && { LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ)); return res; }
6189         ~C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ() { C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(self); }
6190         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; }
6191         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() { return &self; }
6192         LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() { return &self; }
6193         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator &() const { return &self; }
6194         const LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ* operator ->() const { return &self; }
6195 };
6196 class CVec_C2Tuple_PublicKeyTypeZZ {
6197 private:
6198         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
6199 public:
6200         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
6201         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
6202         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
6203         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
6204         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
6205         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; }
6206         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
6207         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
6208         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
6209         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
6210 };
6211 class CResult_InvoiceSemanticErrorZ {
6212 private:
6213         LDKCResult_InvoiceSemanticErrorZ self;
6214 public:
6215         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
6216         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
6217         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
6218         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
6219         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
6220         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
6221         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
6222         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
6223         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
6224         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
6225 };
6226 class CResult_u32GraphSyncErrorZ {
6227 private:
6228         LDKCResult_u32GraphSyncErrorZ self;
6229 public:
6230         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
6231         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
6232         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
6233         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
6234         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
6235         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
6236         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
6237         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
6238         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
6239         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
6240 };
6241 class CResult_UpdateAddHTLCDecodeErrorZ {
6242 private:
6243         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
6244 public:
6245         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
6246         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
6247         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
6248         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
6249         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
6250         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
6251         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
6252         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
6253         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
6254         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
6255 };
6256 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
6257 private:
6258         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
6259 public:
6260         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
6261         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
6262         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
6263         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
6264         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
6265         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
6266         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
6267         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
6268         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
6269         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
6270 };
6271 class CResult_NoneAPIErrorZ {
6272 private:
6273         LDKCResult_NoneAPIErrorZ self;
6274 public:
6275         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
6276         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
6277         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
6278         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
6279         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
6280         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
6281         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
6282         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
6283         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
6284         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
6285 };
6286 class CVec_NetAddressZ {
6287 private:
6288         LDKCVec_NetAddressZ self;
6289 public:
6290         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
6291         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
6292         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
6293         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
6294         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
6295         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
6296         LDKCVec_NetAddressZ* operator &() { return &self; }
6297         LDKCVec_NetAddressZ* operator ->() { return &self; }
6298         const LDKCVec_NetAddressZ* operator &() const { return &self; }
6299         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
6300 };
6301 class CResult_ChannelDetailsDecodeErrorZ {
6302 private:
6303         LDKCResult_ChannelDetailsDecodeErrorZ self;
6304 public:
6305         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
6306         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
6307         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
6308         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
6309         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
6310         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
6311         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
6312         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
6313         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
6314         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
6315 };
6316 class CVec_PublicKeyZ {
6317 private:
6318         LDKCVec_PublicKeyZ self;
6319 public:
6320         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
6321         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
6322         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
6323         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
6324         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
6325         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
6326         LDKCVec_PublicKeyZ* operator &() { return &self; }
6327         LDKCVec_PublicKeyZ* operator ->() { return &self; }
6328         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
6329         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
6330 };
6331 class CVec_C2Tuple_usizeTransactionZZ {
6332 private:
6333         LDKCVec_C2Tuple_usizeTransactionZZ self;
6334 public:
6335         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
6336         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
6337         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
6338         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
6339         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
6340         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; }
6341         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
6342         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
6343         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
6344         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
6345 };
6346 class CResult_QueryShortChannelIdsDecodeErrorZ {
6347 private:
6348         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
6349 public:
6350         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
6351         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
6352         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
6353         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
6354         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
6355         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
6356         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
6357         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
6358         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
6359         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
6360 };
6361 class CVec_PhantomRouteHintsZ {
6362 private:
6363         LDKCVec_PhantomRouteHintsZ self;
6364 public:
6365         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
6366         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
6367         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
6368         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
6369         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
6370         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
6371         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
6372         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
6373         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
6374         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
6375 };
6376 class COption_MonitorEventZ {
6377 private:
6378         LDKCOption_MonitorEventZ self;
6379 public:
6380         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
6381         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
6382         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
6383         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
6384         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
6385         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
6386         LDKCOption_MonitorEventZ* operator &() { return &self; }
6387         LDKCOption_MonitorEventZ* operator ->() { return &self; }
6388         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
6389         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
6390 };
6391 class C2Tuple_u64u64Z {
6392 private:
6393         LDKC2Tuple_u64u64Z self;
6394 public:
6395         C2Tuple_u64u64Z(const C2Tuple_u64u64Z&) = delete;
6396         C2Tuple_u64u64Z(C2Tuple_u64u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u64u64Z)); }
6397         C2Tuple_u64u64Z(LDKC2Tuple_u64u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u64u64Z)); }
6398         operator LDKC2Tuple_u64u64Z() && { LDKC2Tuple_u64u64Z res = self; memset(&self, 0, sizeof(LDKC2Tuple_u64u64Z)); return res; }
6399         ~C2Tuple_u64u64Z() { C2Tuple_u64u64Z_free(self); }
6400         C2Tuple_u64u64Z& operator=(C2Tuple_u64u64Z&& o) { C2Tuple_u64u64Z_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u64u64Z)); return *this; }
6401         LDKC2Tuple_u64u64Z* operator &() { return &self; }
6402         LDKC2Tuple_u64u64Z* operator ->() { return &self; }
6403         const LDKC2Tuple_u64u64Z* operator &() const { return &self; }
6404         const LDKC2Tuple_u64u64Z* operator ->() const { return &self; }
6405 };
6406 class COption_TypeZ {
6407 private:
6408         LDKCOption_TypeZ self;
6409 public:
6410         COption_TypeZ(const COption_TypeZ&) = delete;
6411         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
6412         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
6413         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
6414         ~COption_TypeZ() { COption_TypeZ_free(self); }
6415         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
6416         LDKCOption_TypeZ* operator &() { return &self; }
6417         LDKCOption_TypeZ* operator ->() { return &self; }
6418         const LDKCOption_TypeZ* operator &() const { return &self; }
6419         const LDKCOption_TypeZ* operator ->() const { return &self; }
6420 };
6421 class CResult_COption_TypeZDecodeErrorZ {
6422 private:
6423         LDKCResult_COption_TypeZDecodeErrorZ self;
6424 public:
6425         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
6426         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
6427         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
6428         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
6429         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
6430         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; }
6431         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
6432         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
6433         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
6434         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
6435 };
6436 class C2Tuple_u32TxOutZ {
6437 private:
6438         LDKC2Tuple_u32TxOutZ self;
6439 public:
6440         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
6441         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
6442         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
6443         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
6444         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
6445         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
6446         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
6447         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
6448         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
6449         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
6450 };
6451 class CResult_UpdateFailHTLCDecodeErrorZ {
6452 private:
6453         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
6454 public:
6455         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
6456         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
6457         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
6458         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
6459         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
6460         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
6461         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
6462         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
6463         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
6464         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
6465 };
6466 class CResult_InvoiceParseOrSemanticErrorZ {
6467 private:
6468         LDKCResult_InvoiceParseOrSemanticErrorZ self;
6469 public:
6470         CResult_InvoiceParseOrSemanticErrorZ(const CResult_InvoiceParseOrSemanticErrorZ&) = delete;
6471         CResult_InvoiceParseOrSemanticErrorZ(CResult_InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); }
6472         CResult_InvoiceParseOrSemanticErrorZ(LDKCResult_InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); }
6473         operator LDKCResult_InvoiceParseOrSemanticErrorZ() && { LDKCResult_InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); return res; }
6474         ~CResult_InvoiceParseOrSemanticErrorZ() { CResult_InvoiceParseOrSemanticErrorZ_free(self); }
6475         CResult_InvoiceParseOrSemanticErrorZ& operator=(CResult_InvoiceParseOrSemanticErrorZ&& o) { CResult_InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); return *this; }
6476         LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
6477         LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
6478         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
6479         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
6480 };
6481 class CResult_PaymentSecretNoneZ {
6482 private:
6483         LDKCResult_PaymentSecretNoneZ self;
6484 public:
6485         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
6486         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
6487         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
6488         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
6489         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
6490         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
6491         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
6492         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
6493         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
6494         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
6495 };
6496 class CResult_ChannelConfigDecodeErrorZ {
6497 private:
6498         LDKCResult_ChannelConfigDecodeErrorZ self;
6499 public:
6500         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
6501         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
6502         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
6503         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
6504         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
6505         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
6506         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
6507         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
6508         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
6509         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
6510 };
6511 class CVec_PrivateRouteZ {
6512 private:
6513         LDKCVec_PrivateRouteZ self;
6514 public:
6515         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
6516         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
6517         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
6518         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
6519         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
6520         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
6521         LDKCVec_PrivateRouteZ* operator &() { return &self; }
6522         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
6523         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
6524         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
6525 };
6526 class CResult_SpendableOutputDescriptorDecodeErrorZ {
6527 private:
6528         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
6529 public:
6530         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
6531         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
6532         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
6533         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
6534         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
6535         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
6536         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6537         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6538         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6539         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6540 };
6541 class CResult_RevokeAndACKDecodeErrorZ {
6542 private:
6543         LDKCResult_RevokeAndACKDecodeErrorZ self;
6544 public:
6545         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
6546         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
6547         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
6548         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
6549         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
6550         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
6551         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
6552         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
6553         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
6554         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
6555 };
6556 class CResult_UnsignedChannelUpdateDecodeErrorZ {
6557 private:
6558         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
6559 public:
6560         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
6561         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
6562         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
6563         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
6564         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
6565         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
6566         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
6567         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6568         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6569         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6570 };
6571 class CResult_ShutdownDecodeErrorZ {
6572 private:
6573         LDKCResult_ShutdownDecodeErrorZ self;
6574 public:
6575         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
6576         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
6577         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
6578         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
6579         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
6580         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
6581         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
6582         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
6583         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
6584         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
6585 };
6586 class CVec_EventZ {
6587 private:
6588         LDKCVec_EventZ self;
6589 public:
6590         CVec_EventZ(const CVec_EventZ&) = delete;
6591         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
6592         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
6593         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
6594         ~CVec_EventZ() { CVec_EventZ_free(self); }
6595         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
6596         LDKCVec_EventZ* operator &() { return &self; }
6597         LDKCVec_EventZ* operator ->() { return &self; }
6598         const LDKCVec_EventZ* operator &() const { return &self; }
6599         const LDKCVec_EventZ* operator ->() const { return &self; }
6600 };
6601 class CResult_NoneSemanticErrorZ {
6602 private:
6603         LDKCResult_NoneSemanticErrorZ self;
6604 public:
6605         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
6606         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
6607         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
6608         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
6609         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
6610         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
6611         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
6612         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
6613         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
6614         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
6615 };
6616 class CVec_MonitorEventZ {
6617 private:
6618         LDKCVec_MonitorEventZ self;
6619 public:
6620         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
6621         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
6622         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
6623         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
6624         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
6625         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
6626         LDKCVec_MonitorEventZ* operator &() { return &self; }
6627         LDKCVec_MonitorEventZ* operator ->() { return &self; }
6628         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
6629         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
6630 };
6631 class CVec_PaymentPreimageZ {
6632 private:
6633         LDKCVec_PaymentPreimageZ self;
6634 public:
6635         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
6636         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
6637         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
6638         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
6639         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
6640         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
6641         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
6642         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
6643         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
6644         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
6645 };
6646 class CVec_C2Tuple_u32ScriptZZ {
6647 private:
6648         LDKCVec_C2Tuple_u32ScriptZZ self;
6649 public:
6650         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
6651         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
6652         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
6653         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
6654         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
6655         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; }
6656         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
6657         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
6658         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
6659         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
6660 };
6661 class CResult_NoneChannelMonitorUpdateErrZ {
6662 private:
6663         LDKCResult_NoneChannelMonitorUpdateErrZ self;
6664 public:
6665         CResult_NoneChannelMonitorUpdateErrZ(const CResult_NoneChannelMonitorUpdateErrZ&) = delete;
6666         CResult_NoneChannelMonitorUpdateErrZ(CResult_NoneChannelMonitorUpdateErrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); }
6667         CResult_NoneChannelMonitorUpdateErrZ(LDKCResult_NoneChannelMonitorUpdateErrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); }
6668         operator LDKCResult_NoneChannelMonitorUpdateErrZ() && { LDKCResult_NoneChannelMonitorUpdateErrZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); return res; }
6669         ~CResult_NoneChannelMonitorUpdateErrZ() { CResult_NoneChannelMonitorUpdateErrZ_free(self); }
6670         CResult_NoneChannelMonitorUpdateErrZ& operator=(CResult_NoneChannelMonitorUpdateErrZ&& o) { CResult_NoneChannelMonitorUpdateErrZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); return *this; }
6671         LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() { return &self; }
6672         LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() { return &self; }
6673         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() const { return &self; }
6674         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() const { return &self; }
6675 };
6676 class CResult_COption_ClosureReasonZDecodeErrorZ {
6677 private:
6678         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
6679 public:
6680         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
6681         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
6682         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
6683         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
6684         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
6685         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; }
6686         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
6687         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
6688         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
6689         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
6690 };
6691 class CResult_PublicKeyErrorZ {
6692 private:
6693         LDKCResult_PublicKeyErrorZ self;
6694 public:
6695         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
6696         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
6697         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
6698         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
6699         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
6700         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
6701         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
6702         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
6703         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
6704         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
6705 };
6706 class CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ {
6707 private:
6708         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ self;
6709 public:
6710         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(const CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&) = delete;
6711         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
6712         CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); }
6713         operator LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() && { LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ)); return res; }
6714         ~CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ() { CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(self); }
6715         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; }
6716         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() { return &self; }
6717         LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() { return &self; }
6718         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator &() const { return &self; }
6719         const LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ* operator ->() const { return &self; }
6720 };
6721 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
6722 private:
6723         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
6724 public:
6725         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
6726         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6727         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6728         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
6729         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
6730         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
6731         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
6732         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
6733         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
6734         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
6735 };
6736 class CResult_NoneNoneZ {
6737 private:
6738         LDKCResult_NoneNoneZ self;
6739 public:
6740         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
6741         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
6742         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
6743         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
6744         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
6745         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
6746         LDKCResult_NoneNoneZ* operator &() { return &self; }
6747         LDKCResult_NoneNoneZ* operator ->() { return &self; }
6748         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
6749         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
6750 };
6751 class CResult_RouteParametersDecodeErrorZ {
6752 private:
6753         LDKCResult_RouteParametersDecodeErrorZ self;
6754 public:
6755         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
6756         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
6757         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
6758         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
6759         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
6760         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
6761         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
6762         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
6763         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
6764         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
6765 };
6766 class COption_ClosureReasonZ {
6767 private:
6768         LDKCOption_ClosureReasonZ self;
6769 public:
6770         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
6771         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
6772         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
6773         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
6774         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
6775         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
6776         LDKCOption_ClosureReasonZ* operator &() { return &self; }
6777         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
6778         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
6779         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
6780 };
6781 class CResult_NodeAliasDecodeErrorZ {
6782 private:
6783         LDKCResult_NodeAliasDecodeErrorZ self;
6784 public:
6785         CResult_NodeAliasDecodeErrorZ(const CResult_NodeAliasDecodeErrorZ&) = delete;
6786         CResult_NodeAliasDecodeErrorZ(CResult_NodeAliasDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); }
6787         CResult_NodeAliasDecodeErrorZ(LDKCResult_NodeAliasDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); }
6788         operator LDKCResult_NodeAliasDecodeErrorZ() && { LDKCResult_NodeAliasDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAliasDecodeErrorZ)); return res; }
6789         ~CResult_NodeAliasDecodeErrorZ() { CResult_NodeAliasDecodeErrorZ_free(self); }
6790         CResult_NodeAliasDecodeErrorZ& operator=(CResult_NodeAliasDecodeErrorZ&& o) { CResult_NodeAliasDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAliasDecodeErrorZ)); return *this; }
6791         LDKCResult_NodeAliasDecodeErrorZ* operator &() { return &self; }
6792         LDKCResult_NodeAliasDecodeErrorZ* operator ->() { return &self; }
6793         const LDKCResult_NodeAliasDecodeErrorZ* operator &() const { return &self; }
6794         const LDKCResult_NodeAliasDecodeErrorZ* operator ->() const { return &self; }
6795 };
6796 class CVec_APIErrorZ {
6797 private:
6798         LDKCVec_APIErrorZ self;
6799 public:
6800         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
6801         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
6802         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
6803         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
6804         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
6805         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
6806         LDKCVec_APIErrorZ* operator &() { return &self; }
6807         LDKCVec_APIErrorZ* operator ->() { return &self; }
6808         const LDKCVec_APIErrorZ* operator &() const { return &self; }
6809         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
6810 };
6811 class CResult_PrivateRouteCreationErrorZ {
6812 private:
6813         LDKCResult_PrivateRouteCreationErrorZ self;
6814 public:
6815         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
6816         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
6817         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
6818         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
6819         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
6820         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
6821         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
6822         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
6823         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
6824         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
6825 };
6826 class CResult_boolPeerHandleErrorZ {
6827 private:
6828         LDKCResult_boolPeerHandleErrorZ self;
6829 public:
6830         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
6831         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
6832         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
6833         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
6834         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
6835         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
6836         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
6837         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
6838         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
6839         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
6840 };
6841 class CVec_UpdateFulfillHTLCZ {
6842 private:
6843         LDKCVec_UpdateFulfillHTLCZ self;
6844 public:
6845         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
6846         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
6847         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
6848         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
6849         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
6850         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
6851         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
6852         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
6853         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
6854         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
6855 };
6856 class CResult_AnnouncementSignaturesDecodeErrorZ {
6857 private:
6858         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
6859 public:
6860         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
6861         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
6862         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
6863         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
6864         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
6865         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
6866         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
6867         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
6868         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
6869         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
6870 };
6871 class CResult_UpdateFulfillHTLCDecodeErrorZ {
6872 private:
6873         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
6874 public:
6875         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
6876         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
6877         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
6878         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
6879         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
6880         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
6881         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
6882         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
6883         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
6884         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
6885 };
6886 class CResult_ChannelUpdateDecodeErrorZ {
6887 private:
6888         LDKCResult_ChannelUpdateDecodeErrorZ self;
6889 public:
6890         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
6891         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
6892         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
6893         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
6894         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
6895         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
6896         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
6897         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6898         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6899         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6900 };
6901 class CResult_NodeFeaturesDecodeErrorZ {
6902 private:
6903         LDKCResult_NodeFeaturesDecodeErrorZ self;
6904 public:
6905         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
6906         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
6907         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
6908         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
6909         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
6910         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
6911         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
6912         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
6913         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
6914         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
6915 };
6916 class CVec_u5Z {
6917 private:
6918         LDKCVec_u5Z self;
6919 public:
6920         CVec_u5Z(const CVec_u5Z&) = delete;
6921         CVec_u5Z(CVec_u5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u5Z)); }
6922         CVec_u5Z(LDKCVec_u5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u5Z)); }
6923         operator LDKCVec_u5Z() && { LDKCVec_u5Z res = self; memset(&self, 0, sizeof(LDKCVec_u5Z)); return res; }
6924         ~CVec_u5Z() { CVec_u5Z_free(self); }
6925         CVec_u5Z& operator=(CVec_u5Z&& o) { CVec_u5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u5Z)); return *this; }
6926         LDKCVec_u5Z* operator &() { return &self; }
6927         LDKCVec_u5Z* operator ->() { return &self; }
6928         const LDKCVec_u5Z* operator &() const { return &self; }
6929         const LDKCVec_u5Z* operator ->() const { return &self; }
6930 };
6931 class CResult_InMemorySignerDecodeErrorZ {
6932 private:
6933         LDKCResult_InMemorySignerDecodeErrorZ self;
6934 public:
6935         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
6936         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
6937         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
6938         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
6939         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
6940         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
6941         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
6942         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
6943         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
6944         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
6945 };
6946 class CResult_PaymentSecretAPIErrorZ {
6947 private:
6948         LDKCResult_PaymentSecretAPIErrorZ self;
6949 public:
6950         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
6951         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
6952         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
6953         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
6954         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
6955         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
6956         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
6957         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
6958         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
6959         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
6960 };
6961 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
6962 private:
6963         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
6964 public:
6965         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
6966         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
6967         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
6968         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
6969         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
6970         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
6971         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
6972         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
6973         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
6974         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
6975 };
6976 class CResult_SignedRawInvoiceParseErrorZ {
6977 private:
6978         LDKCResult_SignedRawInvoiceParseErrorZ self;
6979 public:
6980         CResult_SignedRawInvoiceParseErrorZ(const CResult_SignedRawInvoiceParseErrorZ&) = delete;
6981         CResult_SignedRawInvoiceParseErrorZ(CResult_SignedRawInvoiceParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); }
6982         CResult_SignedRawInvoiceParseErrorZ(LDKCResult_SignedRawInvoiceParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); }
6983         operator LDKCResult_SignedRawInvoiceParseErrorZ() && { LDKCResult_SignedRawInvoiceParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); return res; }
6984         ~CResult_SignedRawInvoiceParseErrorZ() { CResult_SignedRawInvoiceParseErrorZ_free(self); }
6985         CResult_SignedRawInvoiceParseErrorZ& operator=(CResult_SignedRawInvoiceParseErrorZ&& o) { CResult_SignedRawInvoiceParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); return *this; }
6986         LDKCResult_SignedRawInvoiceParseErrorZ* operator &() { return &self; }
6987         LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() { return &self; }
6988         const LDKCResult_SignedRawInvoiceParseErrorZ* operator &() const { return &self; }
6989         const LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() const { return &self; }
6990 };
6991 class C2Tuple_u32ScriptZ {
6992 private:
6993         LDKC2Tuple_u32ScriptZ self;
6994 public:
6995         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
6996         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
6997         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
6998         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
6999         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
7000         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
7001         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
7002         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
7003         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
7004         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
7005 };
7006 class CResult_RouteDecodeErrorZ {
7007 private:
7008         LDKCResult_RouteDecodeErrorZ self;
7009 public:
7010         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
7011         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
7012         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
7013         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
7014         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
7015         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
7016         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
7017         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
7018         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
7019         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
7020 };
7021 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
7022 private:
7023         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
7024 public:
7025         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
7026         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
7027         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
7028         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
7029         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
7030         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
7031         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
7032         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
7033         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
7034         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
7035 };
7036 class COption_NoneZ {
7037 private:
7038         LDKCOption_NoneZ self;
7039 public:
7040         COption_NoneZ(const COption_NoneZ&) = delete;
7041         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
7042         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
7043         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
7044         ~COption_NoneZ() { COption_NoneZ_free(self); }
7045         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
7046         LDKCOption_NoneZ* operator &() { return &self; }
7047         LDKCOption_NoneZ* operator ->() { return &self; }
7048         const LDKCOption_NoneZ* operator &() const { return &self; }
7049         const LDKCOption_NoneZ* operator ->() const { return &self; }
7050 };
7051 class CResult_ChannelUpdateInfoDecodeErrorZ {
7052 private:
7053         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
7054 public:
7055         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
7056         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
7057         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
7058         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
7059         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
7060         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
7061         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
7062         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
7063         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
7064         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
7065 };
7066 class CVec_TxOutZ {
7067 private:
7068         LDKCVec_TxOutZ self;
7069 public:
7070         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
7071         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
7072         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
7073         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
7074         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
7075         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
7076         LDKCVec_TxOutZ* operator &() { return &self; }
7077         LDKCVec_TxOutZ* operator ->() { return &self; }
7078         const LDKCVec_TxOutZ* operator &() const { return &self; }
7079         const LDKCVec_TxOutZ* operator ->() const { return &self; }
7080 };
7081 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
7082 private:
7083         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
7084 public:
7085         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
7086         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
7087         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
7088         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
7089         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
7090         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; }
7091         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
7092         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
7093         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
7094         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
7095 };
7096 class CVec_UpdateFailHTLCZ {
7097 private:
7098         LDKCVec_UpdateFailHTLCZ self;
7099 public:
7100         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
7101         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
7102         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
7103         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
7104         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
7105         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
7106         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
7107         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
7108         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
7109         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
7110 };
7111 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
7112 private:
7113         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
7114 public:
7115         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
7116         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
7117         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
7118         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
7119         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
7120         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
7121         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
7122         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
7123         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
7124         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
7125 };
7126
7127 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
7128         (self.broadcast_transaction)(self.this_arg, tx);
7129 }
7130 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
7131         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
7132         return ret;
7133 }
7134 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
7135         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
7136         return ret;
7137 }
7138 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
7139         (self.process_pending_events)(self.this_arg, handler);
7140 }
7141 inline void EventHandler::handle_event(const struct LDKEvent *NONNULL_PTR event) {
7142         (self.handle_event)(self.this_arg, event);
7143 }
7144 inline LDK::CResult_TxOutAccessErrorZ Access::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
7145         LDK::CResult_TxOutAccessErrorZ ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
7146         return ret;
7147 }
7148 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7149         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
7150 }
7151 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
7152         (self.block_connected)(self.this_arg, block, height);
7153 }
7154 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
7155         (self.block_disconnected)(self.this_arg, header, height);
7156 }
7157 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7158         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
7159 }
7160 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
7161         (self.transaction_unconfirmed)(self.this_arg, txid);
7162 }
7163 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
7164         (self.best_block_updated)(self.this_arg, header, height);
7165 }
7166 inline LDK::CVec_TxidZ Confirm::get_relevant_txids() {
7167         LDK::CVec_TxidZ ret = (self.get_relevant_txids)(self.this_arg);
7168         return ret;
7169 }
7170 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
7171         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
7172         return ret;
7173 }
7174 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update) {
7175         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_channel)(self.this_arg, funding_txo, update);
7176         return ret;
7177 }
7178 inline LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ Watch::release_pending_monitor_events() {
7179         LDK::CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ ret = (self.release_pending_monitor_events)(self.this_arg);
7180         return ret;
7181 }
7182 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
7183         (self.register_tx)(self.this_arg, txid, script_pubkey);
7184 }
7185 inline LDK::COption_C2Tuple_usizeTransactionZZ Filter::register_output(struct LDKWatchedOutput output) {
7186         LDK::COption_C2Tuple_usizeTransactionZZ ret = (self.register_output)(self.this_arg, output);
7187         return ret;
7188 }
7189 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) {
7190         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, source, target, usage);
7191         return ret;
7192 }
7193 inline void Score::payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7194         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
7195 }
7196 inline void Score::payment_path_successful(struct LDKCVec_RouteHopZ path) {
7197         (self.payment_path_successful)(self.this_arg, path);
7198 }
7199 inline void Score::probe_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7200         (self.probe_failed)(self.this_arg, path, short_channel_id);
7201 }
7202 inline void Score::probe_successful(struct LDKCVec_RouteHopZ path) {
7203         (self.probe_successful)(self.this_arg, path);
7204 }
7205 inline LDK::Score LockableScore::lock() {
7206         LDK::Score ret = (self.lock)(self.this_arg);
7207         return ret;
7208 }
7209 inline LDKPublicKey BaseSign::get_per_commitment_point(uint64_t idx) {
7210         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
7211         return ret;
7212 }
7213 inline LDKThirtyTwoBytes BaseSign::release_commitment_secret(uint64_t idx) {
7214         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
7215         return ret;
7216 }
7217 inline LDK::CResult_NoneNoneZ BaseSign::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
7218         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
7219         return ret;
7220 }
7221 inline LDKThirtyTwoBytes BaseSign::channel_keys_id() {
7222         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
7223         return ret;
7224 }
7225 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
7226         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
7227         return ret;
7228 }
7229 inline LDK::CResult_NoneNoneZ BaseSign::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
7230         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
7231         return ret;
7232 }
7233 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
7234         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
7235         return ret;
7236 }
7237 inline LDK::CResult_SignatureNoneZ BaseSign::sign_justice_revoked_output(struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]) {
7238         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
7239         return ret;
7240 }
7241 inline LDK::CResult_SignatureNoneZ BaseSign::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) {
7242         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
7243         return ret;
7244 }
7245 inline LDK::CResult_SignatureNoneZ BaseSign::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) {
7246         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
7247         return ret;
7248 }
7249 inline LDK::CResult_SignatureNoneZ BaseSign::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
7250         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
7251         return ret;
7252 }
7253 inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ BaseSign::sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
7254         LDK::CResult_C2Tuple_SignatureSignatureZNoneZ ret = (self.sign_channel_announcement)(self.this_arg, msg);
7255         return ret;
7256 }
7257 inline void BaseSign::ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
7258         (self.ready_channel)(self.this_arg, channel_parameters);
7259 }
7260 inline LDK::CResult_SecretKeyNoneZ KeysInterface::get_node_secret(enum LDKRecipient recipient) {
7261         LDK::CResult_SecretKeyNoneZ ret = (self.get_node_secret)(self.this_arg, recipient);
7262         return ret;
7263 }
7264 inline LDK::CVec_u8Z KeysInterface::get_destination_script() {
7265         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
7266         return ret;
7267 }
7268 inline LDK::ShutdownScript KeysInterface::get_shutdown_scriptpubkey() {
7269         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
7270         return ret;
7271 }
7272 inline LDK::Sign KeysInterface::get_channel_signer(bool inbound, uint64_t channel_value_satoshis) {
7273         LDK::Sign ret = (self.get_channel_signer)(self.this_arg, inbound, channel_value_satoshis);
7274         return ret;
7275 }
7276 inline LDKThirtyTwoBytes KeysInterface::get_secure_random_bytes() {
7277         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
7278         return ret;
7279 }
7280 inline LDK::CResult_SignDecodeErrorZ KeysInterface::read_chan_signer(struct LDKu8slice reader) {
7281         LDK::CResult_SignDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
7282         return ret;
7283 }
7284 inline LDK::CResult_RecoverableSignatureNoneZ KeysInterface::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient) {
7285         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, receipient);
7286         return ret;
7287 }
7288 inline LDKThirtyTwoBytes KeysInterface::get_inbound_payment_key_material() {
7289         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
7290         return ret;
7291 }
7292 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
7293         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
7294         return ret;
7295 }
7296 inline uint16_t Type::type_id() {
7297         uint16_t ret = (self.type_id)(self.this_arg);
7298         return ret;
7299 }
7300 inline LDK::Str Type::debug_str() {
7301         LDK::Str ret = (self.debug_str)(self.this_arg);
7302         return ret;
7303 }
7304 inline LDKPublicKey Payer::node_id() {
7305         LDKPublicKey ret = (self.node_id)(self.this_arg);
7306         return ret;
7307 }
7308 inline LDK::CVec_ChannelDetailsZ Payer::first_hops() {
7309         LDK::CVec_ChannelDetailsZ ret = (self.first_hops)(self.this_arg);
7310         return ret;
7311 }
7312 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret) {
7313         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_payment)(self.this_arg, route, payment_hash, payment_secret);
7314         return ret;
7315 }
7316 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage) {
7317         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_spontaneous_payment)(self.this_arg, route, payment_preimage);
7318         return ret;
7319 }
7320 inline LDK::CResult_NonePaymentSendFailureZ Payer::retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id) {
7321         LDK::CResult_NonePaymentSendFailureZ ret = (self.retry_payment)(self.this_arg, route, payment_id);
7322         return ret;
7323 }
7324 inline void Payer::abandon_payment(struct LDKThirtyTwoBytes payment_id) {
7325         (self.abandon_payment)(self.this_arg, payment_id);
7326 }
7327 inline LDK::CResult_RouteLightningErrorZ Router::find_route(struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, const uint8_t (*payment_hash)[32], struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKScore *NONNULL_PTR scorer) {
7328         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, payment_hash, first_hops, scorer);
7329         return ret;
7330 }
7331 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
7332         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
7333         return ret;
7334 }
7335 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
7336         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
7337         return ret;
7338 }
7339 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
7340         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
7341         return ret;
7342 }
7343 inline void SocketDescriptor::disconnect_socket() {
7344         (self.disconnect_socket)(self.this_arg);
7345 }
7346 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
7347         bool ret = (self.eq)(self.this_arg, other_arg);
7348         return ret;
7349 }
7350 inline uint64_t SocketDescriptor::hash() {
7351         uint64_t ret = (self.hash)(self.this_arg);
7352         return ret;
7353 }
7354 inline LDK::CResult_NoneErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
7355         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
7356         return ret;
7357 }
7358 inline LDK::CResult_NoneErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
7359         LDK::CResult_NoneErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
7360         return ret;
7361 }
7362 inline LDK::CResult_NoneErrorZ Persister::persist_scorer(const struct LDKMultiThreadedLockableScore *NONNULL_PTR scorer) {
7363         LDK::CResult_NoneErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
7364         return ret;
7365 }
7366 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg) {
7367         (self.handle_open_channel)(self.this_arg, their_node_id, their_features, msg);
7368 }
7369 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg) {
7370         (self.handle_accept_channel)(self.this_arg, their_node_id, their_features, msg);
7371 }
7372 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
7373         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
7374 }
7375 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
7376         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
7377 }
7378 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
7379         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
7380 }
7381 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg) {
7382         (self.handle_shutdown)(self.this_arg, their_node_id, their_features, msg);
7383 }
7384 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
7385         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
7386 }
7387 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
7388         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
7389 }
7390 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
7391         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
7392 }
7393 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
7394         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
7395 }
7396 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
7397         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
7398 }
7399 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
7400         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
7401 }
7402 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
7403         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
7404 }
7405 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
7406         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
7407 }
7408 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
7409         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
7410 }
7411 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
7412         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
7413 }
7414 inline void ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg) {
7415         (self.peer_connected)(self.this_arg, their_node_id, msg);
7416 }
7417 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
7418         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
7419 }
7420 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
7421         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
7422 }
7423 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
7424         (self.handle_error)(self.this_arg, their_node_id, msg);
7425 }
7426 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
7427         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
7428         return ret;
7429 }
7430 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
7431         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
7432         return ret;
7433 }
7434 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
7435         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
7436         return ret;
7437 }
7438 inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount) {
7439         LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcements)(self.this_arg, starting_point, batch_amount);
7440         return ret;
7441 }
7442 inline LDK::CVec_NodeAnnouncementZ RoutingMessageHandler::get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount) {
7443         LDK::CVec_NodeAnnouncementZ ret = (self.get_next_node_announcements)(self.this_arg, starting_point, batch_amount);
7444         return ret;
7445 }
7446 inline void RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
7447         (self.peer_connected)(self.this_arg, their_node_id, init);
7448 }
7449 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
7450         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
7451         return ret;
7452 }
7453 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
7454         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
7455         return ret;
7456 }
7457 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
7458         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
7459         return ret;
7460 }
7461 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
7462         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
7463         return ret;
7464 }
7465 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
7466         (self.log)(self.this_arg, record);
7467 }
7468 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
7469         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
7470         return ret;
7471 }
7472 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Persist::update_persisted_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
7473         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
7474         return ret;
7475 }
7476 }