Update auto-generated bindings
[ldk-c-bindings] / lightning-c-bindings / include / lightningpp.hpp
1 #include <string.h>
2 namespace LDK {
3 // Forward declarations
4 class Str;
5 class 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 Event;
34 class MessageSendEvent;
35 class MessageSendEventsProvider;
36 class EventsProvider;
37 class EventHandler;
38 class BestBlock;
39 class AccessError;
40 class Access;
41 class Listen;
42 class Confirm;
43 class ChannelMonitorUpdateErr;
44 class Watch;
45 class Filter;
46 class WatchedOutput;
47 class Score;
48 class LockableScore;
49 class WriteableScore;
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 NodeInfo;
72 class DelayedPaymentOutputDescriptor;
73 class StaticPaymentOutputDescriptor;
74 class SpendableOutputDescriptor;
75 class BaseSign;
76 class Sign;
77 class Recipient;
78 class KeysInterface;
79 class InMemorySigner;
80 class KeysManager;
81 class PhantomKeysManager;
82 class FilesystemPersister;
83 class ChannelManager;
84 class ChainParameters;
85 class CounterpartyForwardingInfo;
86 class ChannelCounterparty;
87 class ChannelDetails;
88 class PaymentSendFailure;
89 class PhantomRouteHints;
90 class ChannelManagerReadArgs;
91 class ChannelHandshakeConfig;
92 class ChannelHandshakeLimits;
93 class ChannelConfig;
94 class UserConfig;
95 class APIError;
96 class BigSize;
97 class OutPoint;
98 class CustomMessageReader;
99 class Type;
100 class InvoicePayer;
101 class Payer;
102 class Router;
103 class Retry;
104 class PaymentError;
105 class ParseError;
106 class ParseOrSemanticError;
107 class Invoice;
108 class SignedRawInvoice;
109 class RawInvoice;
110 class RawDataPart;
111 class PositiveTimestamp;
112 class SiPrefix;
113 class Currency;
114 class Sha256;
115 class Description;
116 class PayeePubKey;
117 class ExpiryTime;
118 class MinFinalCltvExpiry;
119 class Fallback;
120 class InvoiceSignature;
121 class PrivateRoute;
122 class CreationError;
123 class SemanticError;
124 class SignOrCreationError;
125 class ChannelMonitorUpdate;
126 class MonitorEvent;
127 class HTLCUpdate;
128 class Balance;
129 class ChannelMonitor;
130 class ExpandedKey;
131 class CustomMessageHandler;
132 class IgnoringMessageHandler;
133 class ErroringMessageHandler;
134 class MessageHandler;
135 class SocketDescriptor;
136 class PeerHandleError;
137 class PeerManager;
138 class RapidGossipSync;
139 class Persister;
140 class DecodeError;
141 class Init;
142 class ErrorMessage;
143 class WarningMessage;
144 class Ping;
145 class Pong;
146 class OpenChannel;
147 class AcceptChannel;
148 class FundingCreated;
149 class FundingSigned;
150 class ChannelReady;
151 class Shutdown;
152 class ClosingSignedFeeRange;
153 class ClosingSigned;
154 class UpdateAddHTLC;
155 class UpdateFulfillHTLC;
156 class UpdateFailHTLC;
157 class UpdateFailMalformedHTLC;
158 class CommitmentSigned;
159 class RevokeAndACK;
160 class UpdateFee;
161 class DataLossProtect;
162 class ChannelReestablish;
163 class AnnouncementSignatures;
164 class NetAddress;
165 class UnsignedNodeAnnouncement;
166 class NodeAnnouncement;
167 class UnsignedChannelAnnouncement;
168 class ChannelAnnouncement;
169 class UnsignedChannelUpdate;
170 class ChannelUpdate;
171 class QueryChannelRange;
172 class ReplyChannelRange;
173 class QueryShortChannelIds;
174 class ReplyShortChannelIdsEnd;
175 class GossipTimestampFilter;
176 class ErrorAction;
177 class LightningError;
178 class CommitmentUpdate;
179 class ChannelMessageHandler;
180 class RoutingMessageHandler;
181 class GraphSyncError;
182 class DefaultRouter;
183 class Level;
184 class Record;
185 class Logger;
186 class MonitorUpdateId;
187 class Persist;
188 class LockedChannelMonitor;
189 class ChainMonitor;
190 class CVec_SpendableOutputDescriptorZ;
191 class CResult_LockedChannelMonitorNoneZ;
192 class CResult_PhantomRouteHintsDecodeErrorZ;
193 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
194 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
195 class CResult_HTLCUpdateDecodeErrorZ;
196 class C2Tuple_SignatureCVec_SignatureZZ;
197 class CVec_C2Tuple_u32TxOutZZ;
198 class CResult_ChannelInfoDecodeErrorZ;
199 class COption_WriteableScoreZ;
200 class CResult_FundingCreatedDecodeErrorZ;
201 class CResult_ChannelAnnouncementDecodeErrorZ;
202 class CVec_OutPointZ;
203 class CResult_PositiveTimestampCreationErrorZ;
204 class CResult_CVec_u8ZPeerHandleErrorZ;
205 class CResult_InvoiceFeaturesDecodeErrorZ;
206 class COption_NetworkUpdateZ;
207 class COption_u64Z;
208 class CResult_TxOutAccessErrorZ;
209 class CResult_TrustedClosingTransactionNoneZ;
210 class CResult_PaymentPreimageAPIErrorZ;
211 class CResult_ChannelMonitorUpdateDecodeErrorZ;
212 class CResult_RouteHintDecodeErrorZ;
213 class C2Tuple_PublicKeyTypeZ;
214 class CResult_NetAddressDecodeErrorZ;
215 class CResult_ChannelReestablishDecodeErrorZ;
216 class CResult_CommitmentSignedDecodeErrorZ;
217 class CVec_UpdateAddHTLCZ;
218 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
219 class COption_u32Z;
220 class CResult_InitFeaturesDecodeErrorZ;
221 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
222 class CResult_PaymentIdPaymentSendFailureZ;
223 class CResult_ReplyChannelRangeDecodeErrorZ;
224 class CResult_CommitmentTransactionDecodeErrorZ;
225 class COption_C2Tuple_usizeTransactionZZ;
226 class CResult_TransactionNoneZ;
227 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
228 class CResult_PingDecodeErrorZ;
229 class CResult_GossipTimestampFilterDecodeErrorZ;
230 class CResult_InvoiceSignOrCreationErrorZ;
231 class COption_FilterZ;
232 class CVec_TransactionOutputsZ;
233 class CResult_ErrorMessageDecodeErrorZ;
234 class CResult_OpenChannelDecodeErrorZ;
235 class CVec_CVec_u8ZZ;
236 class CResult_ProbabilisticScorerDecodeErrorZ;
237 class CResult_SecretKeyErrorZ;
238 class CResult_ShutdownScriptDecodeErrorZ;
239 class CResult_QueryChannelRangeDecodeErrorZ;
240 class CResult_TxCreationKeysDecodeErrorZ;
241 class C2Tuple_usizeTransactionZ;
242 class CResult_ChannelFeaturesDecodeErrorZ;
243 class CVec_ChannelMonitorZ;
244 class CVec_TransactionZ;
245 class CResult_ChannelReadyDecodeErrorZ;
246 class CResult_RouteHopDecodeErrorZ;
247 class CResult_UpdateFeeDecodeErrorZ;
248 class CResult_NodeAnnouncementDecodeErrorZ;
249 class CVec_BalanceZ;
250 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
251 class CResult_boolLightningErrorZ;
252 class CResult_TxCreationKeysErrorZ;
253 class CResult_NodeIdDecodeErrorZ;
254 class C2Tuple_BlockHashChannelMonitorZ;
255 class CResult_ShutdownScriptInvalidShutdownScriptZ;
256 class CResult_NodeAnnouncementInfoDecodeErrorZ;
257 class CResult_COption_NetworkUpdateZDecodeErrorZ;
258 class CResult_RecoverableSignatureNoneZ;
259 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
260 class CVec_UpdateFailMalformedHTLCZ;
261 class CResult_FundingSignedDecodeErrorZ;
262 class CResult_NetworkGraphDecodeErrorZ;
263 class CVec_RouteHopZ;
264 class CResult_NodeInfoDecodeErrorZ;
265 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
266 class CResult_RouteLightningErrorZ;
267 class CResult_ChannelPublicKeysDecodeErrorZ;
268 class CVec_u8Z;
269 class CResult_NonePaymentSendFailureZ;
270 class CResult_ClosingSignedDecodeErrorZ;
271 class CResult_HolderCommitmentTransactionDecodeErrorZ;
272 class CVec_CResult_NoneAPIErrorZZ;
273 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
274 class CResult_ChannelCounterpartyDecodeErrorZ;
275 class CResult_WarningMessageDecodeErrorZ;
276 class CResult_SignatureNoneZ;
277 class CVec_RouteHintHopZ;
278 class CResult_SecretKeyNoneZ;
279 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
280 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
281 class CResult_PaymentParametersDecodeErrorZ;
282 class CResult_PaymentPurposeDecodeErrorZ;
283 class CResult_InitDecodeErrorZ;
284 class CResult_OutPointDecodeErrorZ;
285 class CVec_ChannelDetailsZ;
286 class CResult_SignDecodeErrorZ;
287 class C2Tuple_OutPointCVec_MonitorEventZZ;
288 class CVec_MessageSendEventZ;
289 class COption_NetAddressZ;
290 class C2Tuple_OutPointScriptZ;
291 class CResult_RouteHintHopDecodeErrorZ;
292 class CResult_C2Tuple_SignatureSignatureZNoneZ;
293 class CVec_NodeAnnouncementZ;
294 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
295 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
296 class CVec_TxidZ;
297 class COption_AccessZ;
298 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
299 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
300 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
301 class CResult_CVec_CVec_u8ZZNoneZ;
302 class C2Tuple_SignatureSignatureZ;
303 class C2Tuple_PaymentHashPaymentSecretZ;
304 class C2Tuple_BlockHashChannelManagerZ;
305 class CResult_ChannelTransactionParametersDecodeErrorZ;
306 class CResult_AcceptChannelDecodeErrorZ;
307 class CVec_SignatureZ;
308 class CVec_u64Z;
309 class CResult_PongDecodeErrorZ;
310 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
311 class C2Tuple_PaymentHashPaymentIdZ;
312 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
313 class CResult_NoneErrorZ;
314 class CResult_StringErrorZ;
315 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
316 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
317 class COption_EventZ;
318 class CResult_ChannelTypeFeaturesDecodeErrorZ;
319 class CResult_SiPrefixParseErrorZ;
320 class CVec_RouteHintZ;
321 class COption_u16Z;
322 class CVec_CVec_RouteHopZZ;
323 class CResult_TrustedCommitmentTransactionNoneZ;
324 class CResult_FixedPenaltyScorerDecodeErrorZ;
325 class CResult_NoneLightningErrorZ;
326 class CResult_NonePeerHandleErrorZ;
327 class CResult_COption_EventZDecodeErrorZ;
328 class CResult_CVec_SignatureZNoneZ;
329 class COption_CVec_NetAddressZZ;
330 class CResult__u832APIErrorZ;
331 class CResult_PaymentIdPaymentErrorZ;
332 class CResult_DescriptionCreationErrorZ;
333 class CResult_RoutingFeesDecodeErrorZ;
334 class CResult_PayeePubKeyErrorZ;
335 class CResult_COption_MonitorEventZDecodeErrorZ;
336 class CVec_C2Tuple_PublicKeyTypeZZ;
337 class CResult_u32GraphSyncErrorZ;
338 class CResult_InvoiceSemanticErrorZ;
339 class CResult_UpdateAddHTLCDecodeErrorZ;
340 class CResult_QueryShortChannelIdsDecodeErrorZ;
341 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
342 class CResult_NoneAPIErrorZ;
343 class CVec_NetAddressZ;
344 class CResult_ChannelDetailsDecodeErrorZ;
345 class CVec_PublicKeyZ;
346 class CVec_C2Tuple_usizeTransactionZZ;
347 class CVec_PhantomRouteHintsZ;
348 class COption_MonitorEventZ;
349 class COption_TypeZ;
350 class CResult_COption_TypeZDecodeErrorZ;
351 class C2Tuple_u32TxOutZ;
352 class CResult_UpdateFailHTLCDecodeErrorZ;
353 class CResult_InvoiceParseOrSemanticErrorZ;
354 class CResult_PaymentSecretNoneZ;
355 class CResult_ChannelConfigDecodeErrorZ;
356 class CVec_PrivateRouteZ;
357 class CResult_SpendableOutputDescriptorDecodeErrorZ;
358 class CResult_RevokeAndACKDecodeErrorZ;
359 class CResult_UnsignedChannelUpdateDecodeErrorZ;
360 class CResult_ShutdownDecodeErrorZ;
361 class CVec_EventZ;
362 class CResult_NoneSemanticErrorZ;
363 class CVec_MonitorEventZ;
364 class CVec_PaymentPreimageZ;
365 class CVec_C2Tuple_u32ScriptZZ;
366 class CResult_NoneChannelMonitorUpdateErrZ;
367 class CResult_COption_ClosureReasonZDecodeErrorZ;
368 class CResult_PublicKeyErrorZ;
369 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
370 class CResult_NoneNoneZ;
371 class CResult_RouteParametersDecodeErrorZ;
372 class COption_ClosureReasonZ;
373 class CVec_APIErrorZ;
374 class CResult_PrivateRouteCreationErrorZ;
375 class CResult_boolPeerHandleErrorZ;
376 class CResult_ChannelUpdateDecodeErrorZ;
377 class CVec_UpdateFulfillHTLCZ;
378 class CResult_AnnouncementSignaturesDecodeErrorZ;
379 class CResult_UpdateFulfillHTLCDecodeErrorZ;
380 class CResult_NodeFeaturesDecodeErrorZ;
381 class CVec_u5Z;
382 class CResult_InMemorySignerDecodeErrorZ;
383 class CResult_PaymentSecretAPIErrorZ;
384 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
385 class CResult_SignedRawInvoiceParseErrorZ;
386 class C2Tuple_u32ScriptZ;
387 class CResult_RouteDecodeErrorZ;
388 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
389 class COption_NoneZ;
390 class CVec_TxOutZ;
391 class CResult_ChannelUpdateInfoDecodeErrorZ;
392 class CVec_C2Tuple_OutPointCVec_MonitorEventZZZ;
393 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
394 class CVec_UpdateFailHTLCZ;
395 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
396
397 class Str {
398 private:
399         LDKStr self;
400 public:
401         Str(const Str&) = delete;
402         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
403         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
404         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
405         ~Str() { Str_free(self); }
406         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
407         LDKStr* operator &() { return &self; }
408         LDKStr* operator ->() { return &self; }
409         const LDKStr* operator &() const { return &self; }
410         const LDKStr* operator ->() const { return &self; }
411 };
412 class CounterpartyCommitmentSecrets {
413 private:
414         LDKCounterpartyCommitmentSecrets self;
415 public:
416         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
417         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
418         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
419         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
420         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
421         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
422         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
423         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
424         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
425         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
426 };
427 class TxCreationKeys {
428 private:
429         LDKTxCreationKeys self;
430 public:
431         TxCreationKeys(const TxCreationKeys&) = delete;
432         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
433         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
434         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
435         ~TxCreationKeys() { TxCreationKeys_free(self); }
436         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
437         LDKTxCreationKeys* operator &() { return &self; }
438         LDKTxCreationKeys* operator ->() { return &self; }
439         const LDKTxCreationKeys* operator &() const { return &self; }
440         const LDKTxCreationKeys* operator ->() const { return &self; }
441 };
442 class ChannelPublicKeys {
443 private:
444         LDKChannelPublicKeys self;
445 public:
446         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
447         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
448         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
449         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
450         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
451         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
452         LDKChannelPublicKeys* operator &() { return &self; }
453         LDKChannelPublicKeys* operator ->() { return &self; }
454         const LDKChannelPublicKeys* operator &() const { return &self; }
455         const LDKChannelPublicKeys* operator ->() const { return &self; }
456 };
457 class HTLCOutputInCommitment {
458 private:
459         LDKHTLCOutputInCommitment self;
460 public:
461         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
462         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
463         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
464         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
465         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
466         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
467         LDKHTLCOutputInCommitment* operator &() { return &self; }
468         LDKHTLCOutputInCommitment* operator ->() { return &self; }
469         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
470         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
471 };
472 class ChannelTransactionParameters {
473 private:
474         LDKChannelTransactionParameters self;
475 public:
476         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
477         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
478         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
479         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
480         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
481         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
482         LDKChannelTransactionParameters* operator &() { return &self; }
483         LDKChannelTransactionParameters* operator ->() { return &self; }
484         const LDKChannelTransactionParameters* operator &() const { return &self; }
485         const LDKChannelTransactionParameters* operator ->() const { return &self; }
486 };
487 class CounterpartyChannelTransactionParameters {
488 private:
489         LDKCounterpartyChannelTransactionParameters self;
490 public:
491         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
492         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
493         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
494         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
495         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
496         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
497         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
498         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
499         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
500         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
501 };
502 class DirectedChannelTransactionParameters {
503 private:
504         LDKDirectedChannelTransactionParameters self;
505 public:
506         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
507         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
508         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
509         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
510         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
511         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
512         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
513         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
514         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
515         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
516 };
517 class HolderCommitmentTransaction {
518 private:
519         LDKHolderCommitmentTransaction self;
520 public:
521         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
522         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
523         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
524         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
525         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
526         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
527         LDKHolderCommitmentTransaction* operator &() { return &self; }
528         LDKHolderCommitmentTransaction* operator ->() { return &self; }
529         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
530         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
531 };
532 class BuiltCommitmentTransaction {
533 private:
534         LDKBuiltCommitmentTransaction self;
535 public:
536         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
537         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
538         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
539         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
540         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
541         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
542         LDKBuiltCommitmentTransaction* operator &() { return &self; }
543         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
544         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
545         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
546 };
547 class ClosingTransaction {
548 private:
549         LDKClosingTransaction self;
550 public:
551         ClosingTransaction(const ClosingTransaction&) = delete;
552         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
553         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
554         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
555         ~ClosingTransaction() { ClosingTransaction_free(self); }
556         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
557         LDKClosingTransaction* operator &() { return &self; }
558         LDKClosingTransaction* operator ->() { return &self; }
559         const LDKClosingTransaction* operator &() const { return &self; }
560         const LDKClosingTransaction* operator ->() const { return &self; }
561 };
562 class TrustedClosingTransaction {
563 private:
564         LDKTrustedClosingTransaction self;
565 public:
566         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
567         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
568         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
569         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
570         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
571         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
572         LDKTrustedClosingTransaction* operator &() { return &self; }
573         LDKTrustedClosingTransaction* operator ->() { return &self; }
574         const LDKTrustedClosingTransaction* operator &() const { return &self; }
575         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
576 };
577 class CommitmentTransaction {
578 private:
579         LDKCommitmentTransaction self;
580 public:
581         CommitmentTransaction(const CommitmentTransaction&) = delete;
582         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
583         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
584         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
585         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
586         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
587         LDKCommitmentTransaction* operator &() { return &self; }
588         LDKCommitmentTransaction* operator ->() { return &self; }
589         const LDKCommitmentTransaction* operator &() const { return &self; }
590         const LDKCommitmentTransaction* operator ->() const { return &self; }
591 };
592 class TrustedCommitmentTransaction {
593 private:
594         LDKTrustedCommitmentTransaction self;
595 public:
596         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
597         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
598         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
599         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
600         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
601         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
602         LDKTrustedCommitmentTransaction* operator &() { return &self; }
603         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
604         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
605         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
606 };
607 class ShutdownScript {
608 private:
609         LDKShutdownScript self;
610 public:
611         ShutdownScript(const ShutdownScript&) = delete;
612         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
613         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
614         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
615         ~ShutdownScript() { ShutdownScript_free(self); }
616         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
617         LDKShutdownScript* operator &() { return &self; }
618         LDKShutdownScript* operator ->() { return &self; }
619         const LDKShutdownScript* operator &() const { return &self; }
620         const LDKShutdownScript* operator ->() const { return &self; }
621 };
622 class InvalidShutdownScript {
623 private:
624         LDKInvalidShutdownScript self;
625 public:
626         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
627         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
628         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
629         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
630         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
631         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
632         LDKInvalidShutdownScript* operator &() { return &self; }
633         LDKInvalidShutdownScript* operator ->() { return &self; }
634         const LDKInvalidShutdownScript* operator &() const { return &self; }
635         const LDKInvalidShutdownScript* operator ->() const { return &self; }
636 };
637 class BackgroundProcessor {
638 private:
639         LDKBackgroundProcessor self;
640 public:
641         BackgroundProcessor(const BackgroundProcessor&) = delete;
642         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
643         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
644         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
645         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
646         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
647         LDKBackgroundProcessor* operator &() { return &self; }
648         LDKBackgroundProcessor* operator ->() { return &self; }
649         const LDKBackgroundProcessor* operator &() const { return &self; }
650         const LDKBackgroundProcessor* operator ->() const { return &self; }
651 };
652 class GossipSync {
653 private:
654         LDKGossipSync self;
655 public:
656         GossipSync(const GossipSync&) = delete;
657         GossipSync(GossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(GossipSync)); }
658         GossipSync(LDKGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipSync)); }
659         operator LDKGossipSync() && { LDKGossipSync res = self; memset(&self, 0, sizeof(LDKGossipSync)); return res; }
660         ~GossipSync() { GossipSync_free(self); }
661         GossipSync& operator=(GossipSync&& o) { GossipSync_free(self); self = o.self; memset(&o, 0, sizeof(GossipSync)); return *this; }
662         LDKGossipSync* operator &() { return &self; }
663         LDKGossipSync* operator ->() { return &self; }
664         const LDKGossipSync* operator &() const { return &self; }
665         const LDKGossipSync* operator ->() const { return &self; }
666 };
667 class RouteHop {
668 private:
669         LDKRouteHop self;
670 public:
671         RouteHop(const RouteHop&) = delete;
672         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
673         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
674         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
675         ~RouteHop() { RouteHop_free(self); }
676         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
677         LDKRouteHop* operator &() { return &self; }
678         LDKRouteHop* operator ->() { return &self; }
679         const LDKRouteHop* operator &() const { return &self; }
680         const LDKRouteHop* operator ->() const { return &self; }
681 };
682 class Route {
683 private:
684         LDKRoute self;
685 public:
686         Route(const Route&) = delete;
687         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
688         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
689         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
690         ~Route() { Route_free(self); }
691         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
692         LDKRoute* operator &() { return &self; }
693         LDKRoute* operator ->() { return &self; }
694         const LDKRoute* operator &() const { return &self; }
695         const LDKRoute* operator ->() const { return &self; }
696 };
697 class RouteParameters {
698 private:
699         LDKRouteParameters self;
700 public:
701         RouteParameters(const RouteParameters&) = delete;
702         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
703         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
704         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
705         ~RouteParameters() { RouteParameters_free(self); }
706         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
707         LDKRouteParameters* operator &() { return &self; }
708         LDKRouteParameters* operator ->() { return &self; }
709         const LDKRouteParameters* operator &() const { return &self; }
710         const LDKRouteParameters* operator ->() const { return &self; }
711 };
712 class PaymentParameters {
713 private:
714         LDKPaymentParameters self;
715 public:
716         PaymentParameters(const PaymentParameters&) = delete;
717         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
718         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
719         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
720         ~PaymentParameters() { PaymentParameters_free(self); }
721         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
722         LDKPaymentParameters* operator &() { return &self; }
723         LDKPaymentParameters* operator ->() { return &self; }
724         const LDKPaymentParameters* operator &() const { return &self; }
725         const LDKPaymentParameters* operator ->() const { return &self; }
726 };
727 class RouteHint {
728 private:
729         LDKRouteHint self;
730 public:
731         RouteHint(const RouteHint&) = delete;
732         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
733         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
734         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
735         ~RouteHint() { RouteHint_free(self); }
736         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
737         LDKRouteHint* operator &() { return &self; }
738         LDKRouteHint* operator ->() { return &self; }
739         const LDKRouteHint* operator &() const { return &self; }
740         const LDKRouteHint* operator ->() const { return &self; }
741 };
742 class RouteHintHop {
743 private:
744         LDKRouteHintHop self;
745 public:
746         RouteHintHop(const RouteHintHop&) = delete;
747         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
748         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
749         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
750         ~RouteHintHop() { RouteHintHop_free(self); }
751         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
752         LDKRouteHintHop* operator &() { return &self; }
753         LDKRouteHintHop* operator ->() { return &self; }
754         const LDKRouteHintHop* operator &() const { return &self; }
755         const LDKRouteHintHop* operator ->() const { return &self; }
756 };
757 class BroadcasterInterface {
758 private:
759         LDKBroadcasterInterface self;
760 public:
761         BroadcasterInterface(const BroadcasterInterface&) = delete;
762         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
763         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
764         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
765         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
766         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
767         LDKBroadcasterInterface* operator &() { return &self; }
768         LDKBroadcasterInterface* operator ->() { return &self; }
769         const LDKBroadcasterInterface* operator &() const { return &self; }
770         const LDKBroadcasterInterface* operator ->() const { return &self; }
771         /**
772          *  Sends a transaction out to (hopefully) be mined.
773          */
774         inline void broadcast_transaction(struct LDKTransaction tx);
775 };
776 class ConfirmationTarget {
777 private:
778         LDKConfirmationTarget self;
779 public:
780         ConfirmationTarget(const ConfirmationTarget&) = delete;
781         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
782         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
783         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
784         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
785         LDKConfirmationTarget* operator &() { return &self; }
786         LDKConfirmationTarget* operator ->() { return &self; }
787         const LDKConfirmationTarget* operator &() const { return &self; }
788         const LDKConfirmationTarget* operator ->() const { return &self; }
789 };
790 class FeeEstimator {
791 private:
792         LDKFeeEstimator self;
793 public:
794         FeeEstimator(const FeeEstimator&) = delete;
795         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
796         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
797         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
798         ~FeeEstimator() { FeeEstimator_free(self); }
799         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
800         LDKFeeEstimator* operator &() { return &self; }
801         LDKFeeEstimator* operator ->() { return &self; }
802         const LDKFeeEstimator* operator &() const { return &self; }
803         const LDKFeeEstimator* operator ->() const { return &self; }
804         /**
805          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
806          * 
807          *  Must return a value no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later
808          *  round-downs don't put us below 1 satoshi-per-byte).
809          * 
810          *  This method can be implemented with the following unit conversions:
811          *   * max(satoshis-per-byte * 250, 253)
812          *   * max(satoshis-per-kbyte / 4, 253)
813          */
814         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
815 };
816 class PaymentPurpose {
817 private:
818         LDKPaymentPurpose self;
819 public:
820         PaymentPurpose(const PaymentPurpose&) = delete;
821         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
822         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
823         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
824         ~PaymentPurpose() { PaymentPurpose_free(self); }
825         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
826         LDKPaymentPurpose* operator &() { return &self; }
827         LDKPaymentPurpose* operator ->() { return &self; }
828         const LDKPaymentPurpose* operator &() const { return &self; }
829         const LDKPaymentPurpose* operator ->() const { return &self; }
830 };
831 class ClosureReason {
832 private:
833         LDKClosureReason self;
834 public:
835         ClosureReason(const ClosureReason&) = delete;
836         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
837         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
838         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
839         ~ClosureReason() { ClosureReason_free(self); }
840         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
841         LDKClosureReason* operator &() { return &self; }
842         LDKClosureReason* operator ->() { return &self; }
843         const LDKClosureReason* operator &() const { return &self; }
844         const LDKClosureReason* operator ->() const { return &self; }
845 };
846 class Event {
847 private:
848         LDKEvent self;
849 public:
850         Event(const Event&) = delete;
851         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
852         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
853         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
854         ~Event() { Event_free(self); }
855         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
856         LDKEvent* operator &() { return &self; }
857         LDKEvent* operator ->() { return &self; }
858         const LDKEvent* operator &() const { return &self; }
859         const LDKEvent* operator ->() const { return &self; }
860 };
861 class MessageSendEvent {
862 private:
863         LDKMessageSendEvent self;
864 public:
865         MessageSendEvent(const MessageSendEvent&) = delete;
866         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
867         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
868         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
869         ~MessageSendEvent() { MessageSendEvent_free(self); }
870         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
871         LDKMessageSendEvent* operator &() { return &self; }
872         LDKMessageSendEvent* operator ->() { return &self; }
873         const LDKMessageSendEvent* operator &() const { return &self; }
874         const LDKMessageSendEvent* operator ->() const { return &self; }
875 };
876 class MessageSendEventsProvider {
877 private:
878         LDKMessageSendEventsProvider self;
879 public:
880         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
881         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
882         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
883         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
884         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
885         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
886         LDKMessageSendEventsProvider* operator &() { return &self; }
887         LDKMessageSendEventsProvider* operator ->() { return &self; }
888         const LDKMessageSendEventsProvider* operator &() const { return &self; }
889         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
890         /**
891          *  Gets the list of pending events which were generated by previous actions, clearing the list
892          *  in the process.
893          */
894         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
895 };
896 class EventsProvider {
897 private:
898         LDKEventsProvider self;
899 public:
900         EventsProvider(const EventsProvider&) = delete;
901         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
902         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
903         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
904         ~EventsProvider() { EventsProvider_free(self); }
905         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
906         LDKEventsProvider* operator &() { return &self; }
907         LDKEventsProvider* operator ->() { return &self; }
908         const LDKEventsProvider* operator &() const { return &self; }
909         const LDKEventsProvider* operator ->() const { return &self; }
910         /**
911          *  Processes any events generated since the last call using the given event handler.
912          * 
913          *  Subsequent calls must only process new events. However, handlers must be capable of handling
914          *  duplicate events across process restarts. This may occur if the provider was recovered from
915          *  an old state (i.e., it hadn't been successfully persisted after processing pending events).
916          */
917         inline void process_pending_events(struct LDKEventHandler handler);
918 };
919 class EventHandler {
920 private:
921         LDKEventHandler self;
922 public:
923         EventHandler(const EventHandler&) = delete;
924         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
925         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
926         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
927         ~EventHandler() { EventHandler_free(self); }
928         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
929         LDKEventHandler* operator &() { return &self; }
930         LDKEventHandler* operator ->() { return &self; }
931         const LDKEventHandler* operator &() const { return &self; }
932         const LDKEventHandler* operator ->() const { return &self; }
933         /**
934          *  Handles the given [`Event`].
935          * 
936          *  See [`EventsProvider`] for details that must be considered when implementing this method.
937          */
938         inline void handle_event(const struct LDKEvent *NONNULL_PTR event);
939 };
940 class BestBlock {
941 private:
942         LDKBestBlock self;
943 public:
944         BestBlock(const BestBlock&) = delete;
945         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
946         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
947         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
948         ~BestBlock() { BestBlock_free(self); }
949         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
950         LDKBestBlock* operator &() { return &self; }
951         LDKBestBlock* operator ->() { return &self; }
952         const LDKBestBlock* operator &() const { return &self; }
953         const LDKBestBlock* operator ->() const { return &self; }
954 };
955 class AccessError {
956 private:
957         LDKAccessError self;
958 public:
959         AccessError(const AccessError&) = delete;
960         AccessError(AccessError&& o) : self(o.self) { memset(&o, 0, sizeof(AccessError)); }
961         AccessError(LDKAccessError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccessError)); }
962         operator LDKAccessError() && { LDKAccessError res = self; memset(&self, 0, sizeof(LDKAccessError)); return res; }
963         AccessError& operator=(AccessError&& o) { self = o.self; memset(&o, 0, sizeof(AccessError)); return *this; }
964         LDKAccessError* operator &() { return &self; }
965         LDKAccessError* operator ->() { return &self; }
966         const LDKAccessError* operator &() const { return &self; }
967         const LDKAccessError* operator ->() const { return &self; }
968 };
969 class Access {
970 private:
971         LDKAccess self;
972 public:
973         Access(const Access&) = delete;
974         Access(Access&& o) : self(o.self) { memset(&o, 0, sizeof(Access)); }
975         Access(LDKAccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccess)); }
976         operator LDKAccess() && { LDKAccess res = self; memset(&self, 0, sizeof(LDKAccess)); return res; }
977         ~Access() { Access_free(self); }
978         Access& operator=(Access&& o) { Access_free(self); self = o.self; memset(&o, 0, sizeof(Access)); return *this; }
979         LDKAccess* operator &() { return &self; }
980         LDKAccess* operator ->() { return &self; }
981         const LDKAccess* operator &() const { return &self; }
982         const LDKAccess* operator ->() const { return &self; }
983         /**
984          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
985          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
986          *  is unknown.
987          * 
988          *  [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
989          */
990         inline LDK::CResult_TxOutAccessErrorZ get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
991 };
992 class Listen {
993 private:
994         LDKListen self;
995 public:
996         Listen(const Listen&) = delete;
997         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
998         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
999         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
1000         ~Listen() { Listen_free(self); }
1001         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
1002         LDKListen* operator &() { return &self; }
1003         LDKListen* operator ->() { return &self; }
1004         const LDKListen* operator &() const { return &self; }
1005         const LDKListen* operator ->() const { return &self; }
1006         /**
1007          *  Notifies the listener that a block was added at the given height, with the transaction data
1008          *  possibly filtered.
1009          */
1010         inline void filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1011         /**
1012          *  Notifies the listener that a block was added at the given height.
1013          */
1014         inline void block_connected(struct LDKu8slice block, uint32_t height);
1015         /**
1016          *  Notifies the listener that a block was removed at the given height.
1017          */
1018         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
1019 };
1020 class Confirm {
1021 private:
1022         LDKConfirm self;
1023 public:
1024         Confirm(const Confirm&) = delete;
1025         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
1026         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
1027         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
1028         ~Confirm() { Confirm_free(self); }
1029         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
1030         LDKConfirm* operator &() { return &self; }
1031         LDKConfirm* operator ->() { return &self; }
1032         const LDKConfirm* operator &() const { return &self; }
1033         const LDKConfirm* operator ->() const { return &self; }
1034         /**
1035          *  Processes transactions confirmed in a block with a given header and height.
1036          * 
1037          *  Should be called for any transactions registered by [`Filter::register_tx`] or any
1038          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
1039          *  appearing in the same block do not need to be included in the same call; instead, multiple
1040          *  calls with additional transactions may be made so long as they are made in [chain order].
1041          * 
1042          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
1043          *  in the event of a chain reorganization, it must not be called with a `header` that is no
1044          *  longer in the chain as of the last call to [`best_block_updated`].
1045          * 
1046          *  [chain order]: Confirm#Order
1047          *  [`best_block_updated`]: Self::best_block_updated
1048          */
1049         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
1050         /**
1051          *  Processes a transaction that is no longer confirmed as result of a chain reorganization.
1052          * 
1053          *  Should be called for any transaction returned by [`get_relevant_txids`] if it has been
1054          *  reorganized out of the best chain. Once called, the given transaction should not be returned
1055          *  by [`get_relevant_txids`] unless it has been reconfirmed via [`transactions_confirmed`].
1056          * 
1057          *  [`get_relevant_txids`]: Self::get_relevant_txids
1058          *  [`transactions_confirmed`]: Self::transactions_confirmed
1059          */
1060         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
1061         /**
1062          *  Processes an update to the best header connected at the given height.
1063          * 
1064          *  Should be called when a new header is available but may be skipped for intermediary blocks
1065          *  if they become available at the same time.
1066          */
1067         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
1068         /**
1069          *  Returns transactions that should be monitored for reorganization out of the chain.
1070          * 
1071          *  Should include any transactions passed to [`transactions_confirmed`] that have insufficient
1072          *  confirmations to be safe from a chain reorganization. Should not include any transactions
1073          *  passed to [`transaction_unconfirmed`] unless later reconfirmed.
1074          * 
1075          *  May be called to determine the subset of transactions that must still be monitored for
1076          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
1077          *  other interface methods. Thus, this is useful to determine which transactions may need to be
1078          *  given to [`transaction_unconfirmed`].
1079          * 
1080          *  [`transactions_confirmed`]: Self::transactions_confirmed
1081          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
1082          */
1083         inline LDK::CVec_TxidZ get_relevant_txids();
1084 };
1085 class ChannelMonitorUpdateErr {
1086 private:
1087         LDKChannelMonitorUpdateErr self;
1088 public:
1089         ChannelMonitorUpdateErr(const ChannelMonitorUpdateErr&) = delete;
1090         ChannelMonitorUpdateErr(ChannelMonitorUpdateErr&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); }
1091         ChannelMonitorUpdateErr(LDKChannelMonitorUpdateErr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateErr)); }
1092         operator LDKChannelMonitorUpdateErr() && { LDKChannelMonitorUpdateErr res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateErr)); return res; }
1093         ChannelMonitorUpdateErr& operator=(ChannelMonitorUpdateErr&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); return *this; }
1094         LDKChannelMonitorUpdateErr* operator &() { return &self; }
1095         LDKChannelMonitorUpdateErr* operator ->() { return &self; }
1096         const LDKChannelMonitorUpdateErr* operator &() const { return &self; }
1097         const LDKChannelMonitorUpdateErr* operator ->() const { return &self; }
1098 };
1099 class Watch {
1100 private:
1101         LDKWatch self;
1102 public:
1103         Watch(const Watch&) = delete;
1104         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
1105         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
1106         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
1107         ~Watch() { Watch_free(self); }
1108         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
1109         LDKWatch* operator &() { return &self; }
1110         LDKWatch* operator ->() { return &self; }
1111         const LDKWatch* operator &() const { return &self; }
1112         const LDKWatch* operator ->() const { return &self; }
1113         /**
1114          *  Watches a channel identified by `funding_txo` using `monitor`.
1115          * 
1116          *  Implementations are responsible for watching the chain for the funding transaction along
1117          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
1118          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
1119          * 
1120          *  Note: this interface MUST error with `ChannelMonitorUpdateErr::PermanentFailure` if
1121          *  the given `funding_txo` has previously been registered via `watch_channel`.
1122          * 
1123          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
1124          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
1125          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
1126          */
1127         inline LDK::CResult_NoneChannelMonitorUpdateErrZ watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
1128         /**
1129          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
1130          * 
1131          *  Implementations must call [`update_monitor`] with the given update. See
1132          *  [`ChannelMonitorUpdateErr`] for invariants around returning an error.
1133          * 
1134          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1135          */
1136         inline LDK::CResult_NoneChannelMonitorUpdateErrZ update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
1137         /**
1138          *  Returns any monitor events since the last call. Subsequent calls must only return new
1139          *  events.
1140          * 
1141          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1142          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1143          *  to disk.
1144          * 
1145          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1146          *  [`MonitorEvent::UpdateCompleted`] here, see [`ChannelMonitorUpdateErr::TemporaryFailure`].
1147          */
1148         inline LDK::CVec_C2Tuple_OutPointCVec_MonitorEventZZZ release_pending_monitor_events();
1149 };
1150 class Filter {
1151 private:
1152         LDKFilter self;
1153 public:
1154         Filter(const Filter&) = delete;
1155         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1156         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1157         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1158         ~Filter() { Filter_free(self); }
1159         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1160         LDKFilter* operator &() { return &self; }
1161         LDKFilter* operator ->() { return &self; }
1162         const LDKFilter* operator &() const { return &self; }
1163         const LDKFilter* operator ->() const { return &self; }
1164         /**
1165          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1166          *  a spending condition.
1167          */
1168         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1169         /**
1170          *  Registers interest in spends of a transaction output.
1171          * 
1172          *  Optionally, when `output.block_hash` is set, should return any transaction spending the
1173          *  output that is found in the corresponding block along with its index.
1174          * 
1175          *  This return value is useful for Electrum clients in order to supply in-block descendant
1176          *  transactions which otherwise were not included. This is not necessary for other clients if
1177          *  such descendant transactions were already included (e.g., when a BIP 157 client provides the
1178          *  full block).
1179          */
1180         inline LDK::COption_C2Tuple_usizeTransactionZZ register_output(struct LDKWatchedOutput output);
1181 };
1182 class WatchedOutput {
1183 private:
1184         LDKWatchedOutput self;
1185 public:
1186         WatchedOutput(const WatchedOutput&) = delete;
1187         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1188         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1189         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1190         ~WatchedOutput() { WatchedOutput_free(self); }
1191         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1192         LDKWatchedOutput* operator &() { return &self; }
1193         LDKWatchedOutput* operator ->() { return &self; }
1194         const LDKWatchedOutput* operator &() const { return &self; }
1195         const LDKWatchedOutput* operator ->() const { return &self; }
1196 };
1197 class Score {
1198 private:
1199         LDKScore self;
1200 public:
1201         Score(const Score&) = delete;
1202         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1203         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1204         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1205         ~Score() { Score_free(self); }
1206         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1207         LDKScore* operator &() { return &self; }
1208         LDKScore* operator ->() { return &self; }
1209         const LDKScore* operator &() const { return &self; }
1210         const LDKScore* operator ->() const { return &self; }
1211         /**
1212          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1213          *  given channel in the direction from `source` to `target`.
1214          * 
1215          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1216          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1217          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1218          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1219          *  Thus, implementations should be overflow-safe.
1220          */
1221         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);
1222         /**
1223          *  Handles updating channel penalties after failing to route through a channel.
1224          */
1225         inline void payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1226         /**
1227          *  Handles updating channel penalties after successfully routing along a path.
1228          */
1229         inline void payment_path_successful(struct LDKCVec_RouteHopZ path);
1230 };
1231 class LockableScore {
1232 private:
1233         LDKLockableScore self;
1234 public:
1235         LockableScore(const LockableScore&) = delete;
1236         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1237         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1238         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1239         ~LockableScore() { LockableScore_free(self); }
1240         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1241         LDKLockableScore* operator &() { return &self; }
1242         LDKLockableScore* operator ->() { return &self; }
1243         const LDKLockableScore* operator &() const { return &self; }
1244         const LDKLockableScore* operator ->() const { return &self; }
1245         /**
1246          *  Returns the locked scorer.
1247          */
1248         inline LDK::Score lock();
1249 };
1250 class WriteableScore {
1251 private:
1252         LDKWriteableScore self;
1253 public:
1254         WriteableScore(const WriteableScore&) = delete;
1255         WriteableScore(WriteableScore&& o) : self(o.self) { memset(&o, 0, sizeof(WriteableScore)); }
1256         WriteableScore(LDKWriteableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWriteableScore)); }
1257         operator LDKWriteableScore() && { LDKWriteableScore res = self; memset(&self, 0, sizeof(LDKWriteableScore)); return res; }
1258         ~WriteableScore() { WriteableScore_free(self); }
1259         WriteableScore& operator=(WriteableScore&& o) { WriteableScore_free(self); self = o.self; memset(&o, 0, sizeof(WriteableScore)); return *this; }
1260         LDKWriteableScore* operator &() { return &self; }
1261         LDKWriteableScore* operator ->() { return &self; }
1262         const LDKWriteableScore* operator &() const { return &self; }
1263         const LDKWriteableScore* operator ->() const { return &self; }
1264 };
1265 class MultiThreadedLockableScore {
1266 private:
1267         LDKMultiThreadedLockableScore self;
1268 public:
1269         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1270         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1271         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1272         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1273         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1274         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1275         LDKMultiThreadedLockableScore* operator &() { return &self; }
1276         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1277         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1278         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1279 };
1280 class ChannelUsage {
1281 private:
1282         LDKChannelUsage self;
1283 public:
1284         ChannelUsage(const ChannelUsage&) = delete;
1285         ChannelUsage(ChannelUsage&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUsage)); }
1286         ChannelUsage(LDKChannelUsage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUsage)); }
1287         operator LDKChannelUsage() && { LDKChannelUsage res = self; memset(&self, 0, sizeof(LDKChannelUsage)); return res; }
1288         ~ChannelUsage() { ChannelUsage_free(self); }
1289         ChannelUsage& operator=(ChannelUsage&& o) { ChannelUsage_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUsage)); return *this; }
1290         LDKChannelUsage* operator &() { return &self; }
1291         LDKChannelUsage* operator ->() { return &self; }
1292         const LDKChannelUsage* operator &() const { return &self; }
1293         const LDKChannelUsage* operator ->() const { return &self; }
1294 };
1295 class FixedPenaltyScorer {
1296 private:
1297         LDKFixedPenaltyScorer self;
1298 public:
1299         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1300         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1301         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1302         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1303         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1304         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1305         LDKFixedPenaltyScorer* operator &() { return &self; }
1306         LDKFixedPenaltyScorer* operator ->() { return &self; }
1307         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1308         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1309 };
1310 class ProbabilisticScorer {
1311 private:
1312         LDKProbabilisticScorer self;
1313 public:
1314         ProbabilisticScorer(const ProbabilisticScorer&) = delete;
1315         ProbabilisticScorer(ProbabilisticScorer&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScorer)); }
1316         ProbabilisticScorer(LDKProbabilisticScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScorer)); }
1317         operator LDKProbabilisticScorer() && { LDKProbabilisticScorer res = self; memset(&self, 0, sizeof(LDKProbabilisticScorer)); return res; }
1318         ~ProbabilisticScorer() { ProbabilisticScorer_free(self); }
1319         ProbabilisticScorer& operator=(ProbabilisticScorer&& o) { ProbabilisticScorer_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScorer)); return *this; }
1320         LDKProbabilisticScorer* operator &() { return &self; }
1321         LDKProbabilisticScorer* operator ->() { return &self; }
1322         const LDKProbabilisticScorer* operator &() const { return &self; }
1323         const LDKProbabilisticScorer* operator ->() const { return &self; }
1324 };
1325 class ProbabilisticScoringParameters {
1326 private:
1327         LDKProbabilisticScoringParameters self;
1328 public:
1329         ProbabilisticScoringParameters(const ProbabilisticScoringParameters&) = delete;
1330         ProbabilisticScoringParameters(ProbabilisticScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringParameters)); }
1331         ProbabilisticScoringParameters(LDKProbabilisticScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringParameters)); }
1332         operator LDKProbabilisticScoringParameters() && { LDKProbabilisticScoringParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringParameters)); return res; }
1333         ~ProbabilisticScoringParameters() { ProbabilisticScoringParameters_free(self); }
1334         ProbabilisticScoringParameters& operator=(ProbabilisticScoringParameters&& o) { ProbabilisticScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringParameters)); return *this; }
1335         LDKProbabilisticScoringParameters* operator &() { return &self; }
1336         LDKProbabilisticScoringParameters* operator ->() { return &self; }
1337         const LDKProbabilisticScoringParameters* operator &() const { return &self; }
1338         const LDKProbabilisticScoringParameters* operator ->() const { return &self; }
1339 };
1340 class InitFeatures {
1341 private:
1342         LDKInitFeatures self;
1343 public:
1344         InitFeatures(const InitFeatures&) = delete;
1345         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1346         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1347         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1348         ~InitFeatures() { InitFeatures_free(self); }
1349         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1350         LDKInitFeatures* operator &() { return &self; }
1351         LDKInitFeatures* operator ->() { return &self; }
1352         const LDKInitFeatures* operator &() const { return &self; }
1353         const LDKInitFeatures* operator ->() const { return &self; }
1354 };
1355 class NodeFeatures {
1356 private:
1357         LDKNodeFeatures self;
1358 public:
1359         NodeFeatures(const NodeFeatures&) = delete;
1360         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1361         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1362         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1363         ~NodeFeatures() { NodeFeatures_free(self); }
1364         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1365         LDKNodeFeatures* operator &() { return &self; }
1366         LDKNodeFeatures* operator ->() { return &self; }
1367         const LDKNodeFeatures* operator &() const { return &self; }
1368         const LDKNodeFeatures* operator ->() const { return &self; }
1369 };
1370 class ChannelFeatures {
1371 private:
1372         LDKChannelFeatures self;
1373 public:
1374         ChannelFeatures(const ChannelFeatures&) = delete;
1375         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1376         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1377         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1378         ~ChannelFeatures() { ChannelFeatures_free(self); }
1379         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1380         LDKChannelFeatures* operator &() { return &self; }
1381         LDKChannelFeatures* operator ->() { return &self; }
1382         const LDKChannelFeatures* operator &() const { return &self; }
1383         const LDKChannelFeatures* operator ->() const { return &self; }
1384 };
1385 class InvoiceFeatures {
1386 private:
1387         LDKInvoiceFeatures self;
1388 public:
1389         InvoiceFeatures(const InvoiceFeatures&) = delete;
1390         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1391         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1392         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1393         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1394         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1395         LDKInvoiceFeatures* operator &() { return &self; }
1396         LDKInvoiceFeatures* operator ->() { return &self; }
1397         const LDKInvoiceFeatures* operator &() const { return &self; }
1398         const LDKInvoiceFeatures* operator ->() const { return &self; }
1399 };
1400 class ChannelTypeFeatures {
1401 private:
1402         LDKChannelTypeFeatures self;
1403 public:
1404         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1405         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1406         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1407         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1408         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1409         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1410         LDKChannelTypeFeatures* operator &() { return &self; }
1411         LDKChannelTypeFeatures* operator ->() { return &self; }
1412         const LDKChannelTypeFeatures* operator &() const { return &self; }
1413         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1414 };
1415 class NodeId {
1416 private:
1417         LDKNodeId self;
1418 public:
1419         NodeId(const NodeId&) = delete;
1420         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
1421         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
1422         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
1423         ~NodeId() { NodeId_free(self); }
1424         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
1425         LDKNodeId* operator &() { return &self; }
1426         LDKNodeId* operator ->() { return &self; }
1427         const LDKNodeId* operator &() const { return &self; }
1428         const LDKNodeId* operator ->() const { return &self; }
1429 };
1430 class NetworkGraph {
1431 private:
1432         LDKNetworkGraph self;
1433 public:
1434         NetworkGraph(const NetworkGraph&) = delete;
1435         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
1436         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
1437         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
1438         ~NetworkGraph() { NetworkGraph_free(self); }
1439         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
1440         LDKNetworkGraph* operator &() { return &self; }
1441         LDKNetworkGraph* operator ->() { return &self; }
1442         const LDKNetworkGraph* operator &() const { return &self; }
1443         const LDKNetworkGraph* operator ->() const { return &self; }
1444 };
1445 class ReadOnlyNetworkGraph {
1446 private:
1447         LDKReadOnlyNetworkGraph self;
1448 public:
1449         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
1450         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
1451         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
1452         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
1453         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
1454         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
1455         LDKReadOnlyNetworkGraph* operator &() { return &self; }
1456         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
1457         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
1458         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
1459 };
1460 class NetworkUpdate {
1461 private:
1462         LDKNetworkUpdate self;
1463 public:
1464         NetworkUpdate(const NetworkUpdate&) = delete;
1465         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
1466         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
1467         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
1468         ~NetworkUpdate() { NetworkUpdate_free(self); }
1469         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
1470         LDKNetworkUpdate* operator &() { return &self; }
1471         LDKNetworkUpdate* operator ->() { return &self; }
1472         const LDKNetworkUpdate* operator &() const { return &self; }
1473         const LDKNetworkUpdate* operator ->() const { return &self; }
1474 };
1475 class P2PGossipSync {
1476 private:
1477         LDKP2PGossipSync self;
1478 public:
1479         P2PGossipSync(const P2PGossipSync&) = delete;
1480         P2PGossipSync(P2PGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(P2PGossipSync)); }
1481         P2PGossipSync(LDKP2PGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKP2PGossipSync)); }
1482         operator LDKP2PGossipSync() && { LDKP2PGossipSync res = self; memset(&self, 0, sizeof(LDKP2PGossipSync)); return res; }
1483         ~P2PGossipSync() { P2PGossipSync_free(self); }
1484         P2PGossipSync& operator=(P2PGossipSync&& o) { P2PGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(P2PGossipSync)); return *this; }
1485         LDKP2PGossipSync* operator &() { return &self; }
1486         LDKP2PGossipSync* operator ->() { return &self; }
1487         const LDKP2PGossipSync* operator &() const { return &self; }
1488         const LDKP2PGossipSync* operator ->() const { return &self; }
1489 };
1490 class ChannelUpdateInfo {
1491 private:
1492         LDKChannelUpdateInfo self;
1493 public:
1494         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
1495         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
1496         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
1497         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
1498         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
1499         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
1500         LDKChannelUpdateInfo* operator &() { return &self; }
1501         LDKChannelUpdateInfo* operator ->() { return &self; }
1502         const LDKChannelUpdateInfo* operator &() const { return &self; }
1503         const LDKChannelUpdateInfo* operator ->() const { return &self; }
1504 };
1505 class ChannelInfo {
1506 private:
1507         LDKChannelInfo self;
1508 public:
1509         ChannelInfo(const ChannelInfo&) = delete;
1510         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
1511         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
1512         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
1513         ~ChannelInfo() { ChannelInfo_free(self); }
1514         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
1515         LDKChannelInfo* operator &() { return &self; }
1516         LDKChannelInfo* operator ->() { return &self; }
1517         const LDKChannelInfo* operator &() const { return &self; }
1518         const LDKChannelInfo* operator ->() const { return &self; }
1519 };
1520 class DirectedChannelInfo {
1521 private:
1522         LDKDirectedChannelInfo self;
1523 public:
1524         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
1525         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
1526         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
1527         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
1528         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
1529         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
1530         LDKDirectedChannelInfo* operator &() { return &self; }
1531         LDKDirectedChannelInfo* operator ->() { return &self; }
1532         const LDKDirectedChannelInfo* operator &() const { return &self; }
1533         const LDKDirectedChannelInfo* operator ->() const { return &self; }
1534 };
1535 class EffectiveCapacity {
1536 private:
1537         LDKEffectiveCapacity self;
1538 public:
1539         EffectiveCapacity(const EffectiveCapacity&) = delete;
1540         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
1541         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
1542         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
1543         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
1544         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
1545         LDKEffectiveCapacity* operator &() { return &self; }
1546         LDKEffectiveCapacity* operator ->() { return &self; }
1547         const LDKEffectiveCapacity* operator &() const { return &self; }
1548         const LDKEffectiveCapacity* operator ->() const { return &self; }
1549 };
1550 class RoutingFees {
1551 private:
1552         LDKRoutingFees self;
1553 public:
1554         RoutingFees(const RoutingFees&) = delete;
1555         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
1556         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
1557         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
1558         ~RoutingFees() { RoutingFees_free(self); }
1559         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
1560         LDKRoutingFees* operator &() { return &self; }
1561         LDKRoutingFees* operator ->() { return &self; }
1562         const LDKRoutingFees* operator &() const { return &self; }
1563         const LDKRoutingFees* operator ->() const { return &self; }
1564 };
1565 class NodeAnnouncementInfo {
1566 private:
1567         LDKNodeAnnouncementInfo self;
1568 public:
1569         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
1570         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
1571         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
1572         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
1573         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
1574         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
1575         LDKNodeAnnouncementInfo* operator &() { return &self; }
1576         LDKNodeAnnouncementInfo* operator ->() { return &self; }
1577         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
1578         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
1579 };
1580 class NodeInfo {
1581 private:
1582         LDKNodeInfo self;
1583 public:
1584         NodeInfo(const NodeInfo&) = delete;
1585         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
1586         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
1587         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
1588         ~NodeInfo() { NodeInfo_free(self); }
1589         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
1590         LDKNodeInfo* operator &() { return &self; }
1591         LDKNodeInfo* operator ->() { return &self; }
1592         const LDKNodeInfo* operator &() const { return &self; }
1593         const LDKNodeInfo* operator ->() const { return &self; }
1594 };
1595 class DelayedPaymentOutputDescriptor {
1596 private:
1597         LDKDelayedPaymentOutputDescriptor self;
1598 public:
1599         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
1600         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
1601         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
1602         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
1603         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
1604         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
1605         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
1606         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
1607         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
1608         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
1609 };
1610 class StaticPaymentOutputDescriptor {
1611 private:
1612         LDKStaticPaymentOutputDescriptor self;
1613 public:
1614         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
1615         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
1616         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
1617         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
1618         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
1619         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
1620         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
1621         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
1622         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
1623         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
1624 };
1625 class SpendableOutputDescriptor {
1626 private:
1627         LDKSpendableOutputDescriptor self;
1628 public:
1629         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
1630         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
1631         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
1632         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
1633         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
1634         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
1635         LDKSpendableOutputDescriptor* operator &() { return &self; }
1636         LDKSpendableOutputDescriptor* operator ->() { return &self; }
1637         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
1638         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
1639 };
1640 class BaseSign {
1641 private:
1642         LDKBaseSign self;
1643 public:
1644         BaseSign(const BaseSign&) = delete;
1645         BaseSign(BaseSign&& o) : self(o.self) { memset(&o, 0, sizeof(BaseSign)); }
1646         BaseSign(LDKBaseSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBaseSign)); }
1647         operator LDKBaseSign() && { LDKBaseSign res = self; memset(&self, 0, sizeof(LDKBaseSign)); return res; }
1648         ~BaseSign() { BaseSign_free(self); }
1649         BaseSign& operator=(BaseSign&& o) { BaseSign_free(self); self = o.self; memset(&o, 0, sizeof(BaseSign)); return *this; }
1650         LDKBaseSign* operator &() { return &self; }
1651         LDKBaseSign* operator ->() { return &self; }
1652         const LDKBaseSign* operator &() const { return &self; }
1653         const LDKBaseSign* operator ->() const { return &self; }
1654         /**
1655          *  Gets the per-commitment point for a specific commitment number
1656          * 
1657          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1658          */
1659         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1660         /**
1661          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1662          * 
1663          *  An external signer implementation should error here if the commitment was already signed
1664          *  and should refuse to sign it in the future.
1665          * 
1666          *  May be called more than once for the same index.
1667          * 
1668          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1669          */
1670         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1671         /**
1672          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1673          * 
1674          *  This is required in order for the signer to make sure that releasing a commitment
1675          *  secret won't leave us without a broadcastable holder transaction.
1676          *  Policy checks should be implemented in this function, including checking the amount
1677          *  sent to us and checking the HTLCs.
1678          * 
1679          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1680          *  A validating signer should ensure that an HTLC output is removed only when the matching
1681          *  preimage is provided, or when the value to holder is restored.
1682          * 
1683          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1684          *  irrelevant or duplicate preimages.
1685          */
1686         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
1687         /**
1688          *  Gets an arbitrary identifier describing the set of keys which are provided back to you in
1689          *  some SpendableOutputDescriptor types. This should be sufficient to identify this
1690          *  Sign object uniquely and lookup or re-derive its keys.
1691          */
1692         inline LDKThirtyTwoBytes channel_keys_id();
1693         /**
1694          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
1695          * 
1696          *  Note that if signing fails or is rejected, the channel will be force-closed.
1697          * 
1698          *  Policy checks should be implemented in this function, including checking the amount
1699          *  sent to us and checking the HTLCs.
1700          * 
1701          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1702          *  A validating signer should ensure that an HTLC output is removed only when the matching
1703          *  preimage is provided, or when the value to holder is restored.
1704          * 
1705          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1706          *  irrelevant or duplicate preimages.
1707          */
1708         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
1709         /**
1710          *  Validate the counterparty's revocation.
1711          * 
1712          *  This is required in order for the signer to make sure that the state has moved
1713          *  forward and it is safe to sign the next counterparty commitment.
1714          */
1715         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
1716         /**
1717          *  Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
1718          *  This will only ever be called with a non-revoked commitment_tx.  This will be called with the
1719          *  latest commitment_tx when we initiate a force-close.
1720          *  This will be called with the previous latest, just to get claiming HTLC signatures, if we are
1721          *  reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
1722          *  the latest.
1723          *  This may be called multiple times for the same transaction.
1724          * 
1725          *  An external signer implementation should check that the commitment has not been revoked.
1726          * 
1727          *  May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
1728          */
1729         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
1730         /**
1731          *  Create a signature for the given input in a transaction spending an HTLC transaction output
1732          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
1733          * 
1734          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1735          *  similar, but only a signature for the input at index `input` should be signed for here.
1736          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1737          *  to an upcoming timelock expiration.
1738          * 
1739          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1740          * 
1741          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1742          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1743          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1744          *  so).
1745          */
1746         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]);
1747         /**
1748          *  Create a signature for the given input in a transaction spending a commitment transaction
1749          *  HTLC output when our counterparty broadcasts an old state.
1750          * 
1751          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1752          *  similar, but only a signature for the input at index `input` should be signed for here.
1753          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1754          *  to an upcoming timelock expiration.
1755          * 
1756          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1757          * 
1758          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1759          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1760          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1761          *  so).
1762          * 
1763          *  htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
1764          *  (which is committed to in the BIP 143 signatures).
1765          */
1766         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);
1767         /**
1768          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
1769          *  transaction, either offered or received.
1770          * 
1771          *  Such a transaction may claim multiples offered outputs at same time if we know the
1772          *  preimage for each when we create it, but only the input at index `input` should be
1773          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
1774          *  needed with regards to an upcoming timelock expiration.
1775          * 
1776          *  Witness_script is either a offered or received script as defined in BOLT3 for HTLC
1777          *  outputs.
1778          * 
1779          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1780          * 
1781          *  Per_commitment_point is the dynamic point corresponding to the channel state
1782          *  detected onchain. It has been generated by our counterparty and is used to derive
1783          *  channel state keys, which are then included in the witness script and committed to in the
1784          *  BIP 143 signature.
1785          */
1786         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);
1787         /**
1788          *  Create a signature for a (proposed) closing transaction.
1789          * 
1790          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
1791          *  chosen to forgo their output as dust.
1792          */
1793         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
1794         /**
1795          *  Signs a channel announcement message with our funding key and our node secret key (aka
1796          *  node_id or network_key), proving it comes from one of the channel participants.
1797          * 
1798          *  The first returned signature should be from our node secret key, the second from our
1799          *  funding key.
1800          * 
1801          *  Note that if this fails or is rejected, the channel will not be publicly announced and
1802          *  our counterparty may (though likely will not) close the channel on us for violating the
1803          *  protocol.
1804          */
1805         inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
1806         /**
1807          *  Set the counterparty static channel data, including basepoints,
1808          *  counterparty_selected/holder_selected_contest_delay and funding outpoint.
1809          *  This is done as soon as the funding outpoint is known.  Since these are static channel data,
1810          *  they MUST NOT be allowed to change to different values once set.
1811          * 
1812          *  channel_parameters.is_populated() MUST be true.
1813          * 
1814          *  We bind holder_selected_contest_delay late here for API convenience.
1815          * 
1816          *  Will be called before any signatures are applied.
1817          */
1818         inline void ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
1819 };
1820 class Sign {
1821 private:
1822         LDKSign self;
1823 public:
1824         Sign(const Sign&) = delete;
1825         Sign(Sign&& o) : self(o.self) { memset(&o, 0, sizeof(Sign)); }
1826         Sign(LDKSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSign)); }
1827         operator LDKSign() && { LDKSign res = self; memset(&self, 0, sizeof(LDKSign)); return res; }
1828         ~Sign() { Sign_free(self); }
1829         Sign& operator=(Sign&& o) { Sign_free(self); self = o.self; memset(&o, 0, sizeof(Sign)); return *this; }
1830         LDKSign* operator &() { return &self; }
1831         LDKSign* operator ->() { return &self; }
1832         const LDKSign* operator &() const { return &self; }
1833         const LDKSign* operator ->() const { return &self; }
1834 };
1835 class Recipient {
1836 private:
1837         LDKRecipient self;
1838 public:
1839         Recipient(const Recipient&) = delete;
1840         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
1841         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
1842         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
1843         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
1844         LDKRecipient* operator &() { return &self; }
1845         LDKRecipient* operator ->() { return &self; }
1846         const LDKRecipient* operator &() const { return &self; }
1847         const LDKRecipient* operator ->() const { return &self; }
1848 };
1849 class KeysInterface {
1850 private:
1851         LDKKeysInterface self;
1852 public:
1853         KeysInterface(const KeysInterface&) = delete;
1854         KeysInterface(KeysInterface&& o) : self(o.self) { memset(&o, 0, sizeof(KeysInterface)); }
1855         KeysInterface(LDKKeysInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysInterface)); }
1856         operator LDKKeysInterface() && { LDKKeysInterface res = self; memset(&self, 0, sizeof(LDKKeysInterface)); return res; }
1857         ~KeysInterface() { KeysInterface_free(self); }
1858         KeysInterface& operator=(KeysInterface&& o) { KeysInterface_free(self); self = o.self; memset(&o, 0, sizeof(KeysInterface)); return *this; }
1859         LDKKeysInterface* operator &() { return &self; }
1860         LDKKeysInterface* operator ->() { return &self; }
1861         const LDKKeysInterface* operator &() const { return &self; }
1862         const LDKKeysInterface* operator ->() const { return &self; }
1863         /**
1864          *  Get node secret key (aka node_id or network_key) based on the provided [`Recipient`].
1865          * 
1866          *  This method must return the same value each time it is called with a given `Recipient`
1867          *  parameter.
1868          */
1869         inline LDK::CResult_SecretKeyNoneZ get_node_secret(enum LDKRecipient recipient);
1870         /**
1871          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
1872          * 
1873          *  This method should return a different value each time it is called, to avoid linking
1874          *  on-chain funds across channels as controlled to the same user.
1875          */
1876         inline LDK::CVec_u8Z get_destination_script();
1877         /**
1878          *  Get a script pubkey which we will send funds to when closing a channel.
1879          * 
1880          *  This method should return a different value each time it is called, to avoid linking
1881          *  on-chain funds across channels as controlled to the same user.
1882          */
1883         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
1884         /**
1885          *  Get a new set of Sign for per-channel secrets. These MUST be unique even if you
1886          *  restarted with some stale data!
1887          * 
1888          *  This method must return a different value each time it is called.
1889          */
1890         inline LDK::Sign get_channel_signer(bool inbound, uint64_t channel_value_satoshis);
1891         /**
1892          *  Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
1893          *  onion packets and for temporary channel IDs. There is no requirement that these be
1894          *  persisted anywhere, though they must be unique across restarts.
1895          * 
1896          *  This method must return a different value each time it is called.
1897          */
1898         inline LDKThirtyTwoBytes get_secure_random_bytes();
1899         /**
1900          *  Reads a `Signer` for this `KeysInterface` from the given input stream.
1901          *  This is only called during deserialization of other objects which contain
1902          *  `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
1903          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
1904          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
1905          *  you've read all of the provided bytes to ensure no corruption occurred.
1906          */
1907         inline LDK::CResult_SignDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
1908         /**
1909          *  Sign an invoice.
1910          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
1911          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
1912          *  blindly signing the hash.
1913          *  The hrp is ascii bytes, while the invoice data is base32.
1914          * 
1915          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
1916          */
1917         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient);
1918         /**
1919          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
1920          * 
1921          *  If the implementor of this trait supports [phantom node payments], then every node that is
1922          *  intended to be included in the phantom invoice route hints must return the same value from
1923          *  this method.
1924          * 
1925          *  This method must return the same value each time it is called.
1926          * 
1927          *  [phantom node payments]: PhantomKeysManager
1928          */
1929         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
1930 };
1931 class InMemorySigner {
1932 private:
1933         LDKInMemorySigner self;
1934 public:
1935         InMemorySigner(const InMemorySigner&) = delete;
1936         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
1937         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
1938         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
1939         ~InMemorySigner() { InMemorySigner_free(self); }
1940         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
1941         LDKInMemorySigner* operator &() { return &self; }
1942         LDKInMemorySigner* operator ->() { return &self; }
1943         const LDKInMemorySigner* operator &() const { return &self; }
1944         const LDKInMemorySigner* operator ->() const { return &self; }
1945 };
1946 class KeysManager {
1947 private:
1948         LDKKeysManager self;
1949 public:
1950         KeysManager(const KeysManager&) = delete;
1951         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
1952         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
1953         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
1954         ~KeysManager() { KeysManager_free(self); }
1955         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
1956         LDKKeysManager* operator &() { return &self; }
1957         LDKKeysManager* operator ->() { return &self; }
1958         const LDKKeysManager* operator &() const { return &self; }
1959         const LDKKeysManager* operator ->() const { return &self; }
1960 };
1961 class PhantomKeysManager {
1962 private:
1963         LDKPhantomKeysManager self;
1964 public:
1965         PhantomKeysManager(const PhantomKeysManager&) = delete;
1966         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
1967         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
1968         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
1969         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
1970         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
1971         LDKPhantomKeysManager* operator &() { return &self; }
1972         LDKPhantomKeysManager* operator ->() { return &self; }
1973         const LDKPhantomKeysManager* operator &() const { return &self; }
1974         const LDKPhantomKeysManager* operator ->() const { return &self; }
1975 };
1976 class FilesystemPersister {
1977 private:
1978         LDKFilesystemPersister self;
1979 public:
1980         FilesystemPersister(const FilesystemPersister&) = delete;
1981         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
1982         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
1983         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
1984         ~FilesystemPersister() { FilesystemPersister_free(self); }
1985         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
1986         LDKFilesystemPersister* operator &() { return &self; }
1987         LDKFilesystemPersister* operator ->() { return &self; }
1988         const LDKFilesystemPersister* operator &() const { return &self; }
1989         const LDKFilesystemPersister* operator ->() const { return &self; }
1990 };
1991 class ChannelManager {
1992 private:
1993         LDKChannelManager self;
1994 public:
1995         ChannelManager(const ChannelManager&) = delete;
1996         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
1997         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
1998         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
1999         ~ChannelManager() { ChannelManager_free(self); }
2000         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
2001         LDKChannelManager* operator &() { return &self; }
2002         LDKChannelManager* operator ->() { return &self; }
2003         const LDKChannelManager* operator &() const { return &self; }
2004         const LDKChannelManager* operator ->() const { return &self; }
2005 };
2006 class ChainParameters {
2007 private:
2008         LDKChainParameters self;
2009 public:
2010         ChainParameters(const ChainParameters&) = delete;
2011         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
2012         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
2013         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
2014         ~ChainParameters() { ChainParameters_free(self); }
2015         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
2016         LDKChainParameters* operator &() { return &self; }
2017         LDKChainParameters* operator ->() { return &self; }
2018         const LDKChainParameters* operator &() const { return &self; }
2019         const LDKChainParameters* operator ->() const { return &self; }
2020 };
2021 class CounterpartyForwardingInfo {
2022 private:
2023         LDKCounterpartyForwardingInfo self;
2024 public:
2025         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
2026         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
2027         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
2028         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
2029         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
2030         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
2031         LDKCounterpartyForwardingInfo* operator &() { return &self; }
2032         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
2033         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
2034         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
2035 };
2036 class ChannelCounterparty {
2037 private:
2038         LDKChannelCounterparty self;
2039 public:
2040         ChannelCounterparty(const ChannelCounterparty&) = delete;
2041         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
2042         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
2043         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
2044         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
2045         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
2046         LDKChannelCounterparty* operator &() { return &self; }
2047         LDKChannelCounterparty* operator ->() { return &self; }
2048         const LDKChannelCounterparty* operator &() const { return &self; }
2049         const LDKChannelCounterparty* operator ->() const { return &self; }
2050 };
2051 class ChannelDetails {
2052 private:
2053         LDKChannelDetails self;
2054 public:
2055         ChannelDetails(const ChannelDetails&) = delete;
2056         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
2057         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
2058         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
2059         ~ChannelDetails() { ChannelDetails_free(self); }
2060         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
2061         LDKChannelDetails* operator &() { return &self; }
2062         LDKChannelDetails* operator ->() { return &self; }
2063         const LDKChannelDetails* operator &() const { return &self; }
2064         const LDKChannelDetails* operator ->() const { return &self; }
2065 };
2066 class PaymentSendFailure {
2067 private:
2068         LDKPaymentSendFailure self;
2069 public:
2070         PaymentSendFailure(const PaymentSendFailure&) = delete;
2071         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
2072         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
2073         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
2074         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
2075         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
2076         LDKPaymentSendFailure* operator &() { return &self; }
2077         LDKPaymentSendFailure* operator ->() { return &self; }
2078         const LDKPaymentSendFailure* operator &() const { return &self; }
2079         const LDKPaymentSendFailure* operator ->() const { return &self; }
2080 };
2081 class PhantomRouteHints {
2082 private:
2083         LDKPhantomRouteHints self;
2084 public:
2085         PhantomRouteHints(const PhantomRouteHints&) = delete;
2086         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
2087         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
2088         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
2089         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
2090         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
2091         LDKPhantomRouteHints* operator &() { return &self; }
2092         LDKPhantomRouteHints* operator ->() { return &self; }
2093         const LDKPhantomRouteHints* operator &() const { return &self; }
2094         const LDKPhantomRouteHints* operator ->() const { return &self; }
2095 };
2096 class ChannelManagerReadArgs {
2097 private:
2098         LDKChannelManagerReadArgs self;
2099 public:
2100         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
2101         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
2102         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
2103         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
2104         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
2105         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
2106         LDKChannelManagerReadArgs* operator &() { return &self; }
2107         LDKChannelManagerReadArgs* operator ->() { return &self; }
2108         const LDKChannelManagerReadArgs* operator &() const { return &self; }
2109         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
2110 };
2111 class ChannelHandshakeConfig {
2112 private:
2113         LDKChannelHandshakeConfig self;
2114 public:
2115         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
2116         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
2117         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
2118         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
2119         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
2120         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
2121         LDKChannelHandshakeConfig* operator &() { return &self; }
2122         LDKChannelHandshakeConfig* operator ->() { return &self; }
2123         const LDKChannelHandshakeConfig* operator &() const { return &self; }
2124         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
2125 };
2126 class ChannelHandshakeLimits {
2127 private:
2128         LDKChannelHandshakeLimits self;
2129 public:
2130         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
2131         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
2132         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
2133         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
2134         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
2135         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
2136         LDKChannelHandshakeLimits* operator &() { return &self; }
2137         LDKChannelHandshakeLimits* operator ->() { return &self; }
2138         const LDKChannelHandshakeLimits* operator &() const { return &self; }
2139         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
2140 };
2141 class ChannelConfig {
2142 private:
2143         LDKChannelConfig self;
2144 public:
2145         ChannelConfig(const ChannelConfig&) = delete;
2146         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
2147         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
2148         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
2149         ~ChannelConfig() { ChannelConfig_free(self); }
2150         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
2151         LDKChannelConfig* operator &() { return &self; }
2152         LDKChannelConfig* operator ->() { return &self; }
2153         const LDKChannelConfig* operator &() const { return &self; }
2154         const LDKChannelConfig* operator ->() const { return &self; }
2155 };
2156 class UserConfig {
2157 private:
2158         LDKUserConfig self;
2159 public:
2160         UserConfig(const UserConfig&) = delete;
2161         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
2162         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
2163         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
2164         ~UserConfig() { UserConfig_free(self); }
2165         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
2166         LDKUserConfig* operator &() { return &self; }
2167         LDKUserConfig* operator ->() { return &self; }
2168         const LDKUserConfig* operator &() const { return &self; }
2169         const LDKUserConfig* operator ->() const { return &self; }
2170 };
2171 class APIError {
2172 private:
2173         LDKAPIError self;
2174 public:
2175         APIError(const APIError&) = delete;
2176         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
2177         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
2178         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
2179         ~APIError() { APIError_free(self); }
2180         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
2181         LDKAPIError* operator &() { return &self; }
2182         LDKAPIError* operator ->() { return &self; }
2183         const LDKAPIError* operator &() const { return &self; }
2184         const LDKAPIError* operator ->() const { return &self; }
2185 };
2186 class BigSize {
2187 private:
2188         LDKBigSize self;
2189 public:
2190         BigSize(const BigSize&) = delete;
2191         BigSize(BigSize&& o) : self(o.self) { memset(&o, 0, sizeof(BigSize)); }
2192         BigSize(LDKBigSize&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBigSize)); }
2193         operator LDKBigSize() && { LDKBigSize res = self; memset(&self, 0, sizeof(LDKBigSize)); return res; }
2194         ~BigSize() { BigSize_free(self); }
2195         BigSize& operator=(BigSize&& o) { BigSize_free(self); self = o.self; memset(&o, 0, sizeof(BigSize)); return *this; }
2196         LDKBigSize* operator &() { return &self; }
2197         LDKBigSize* operator ->() { return &self; }
2198         const LDKBigSize* operator &() const { return &self; }
2199         const LDKBigSize* operator ->() const { return &self; }
2200 };
2201 class OutPoint {
2202 private:
2203         LDKOutPoint self;
2204 public:
2205         OutPoint(const OutPoint&) = delete;
2206         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
2207         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
2208         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
2209         ~OutPoint() { OutPoint_free(self); }
2210         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
2211         LDKOutPoint* operator &() { return &self; }
2212         LDKOutPoint* operator ->() { return &self; }
2213         const LDKOutPoint* operator &() const { return &self; }
2214         const LDKOutPoint* operator ->() const { return &self; }
2215 };
2216 class CustomMessageReader {
2217 private:
2218         LDKCustomMessageReader self;
2219 public:
2220         CustomMessageReader(const CustomMessageReader&) = delete;
2221         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
2222         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
2223         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
2224         ~CustomMessageReader() { CustomMessageReader_free(self); }
2225         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
2226         LDKCustomMessageReader* operator &() { return &self; }
2227         LDKCustomMessageReader* operator ->() { return &self; }
2228         const LDKCustomMessageReader* operator &() const { return &self; }
2229         const LDKCustomMessageReader* operator ->() const { return &self; }
2230         /**
2231          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
2232          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
2233          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
2234          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
2235          */
2236         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
2237 };
2238 class Type {
2239 private:
2240         LDKType self;
2241 public:
2242         Type(const Type&) = delete;
2243         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
2244         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
2245         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
2246         ~Type() { Type_free(self); }
2247         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
2248         LDKType* operator &() { return &self; }
2249         LDKType* operator ->() { return &self; }
2250         const LDKType* operator &() const { return &self; }
2251         const LDKType* operator ->() const { return &self; }
2252         /**
2253          *  Returns the type identifying the message payload.
2254          */
2255         inline uint16_t type_id();
2256         /**
2257          * Return a human-readable "debug" string describing this object
2258          */
2259         inline LDK::Str debug_str();
2260 };
2261 class InvoicePayer {
2262 private:
2263         LDKInvoicePayer self;
2264 public:
2265         InvoicePayer(const InvoicePayer&) = delete;
2266         InvoicePayer(InvoicePayer&& o) : self(o.self) { memset(&o, 0, sizeof(InvoicePayer)); }
2267         InvoicePayer(LDKInvoicePayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoicePayer)); }
2268         operator LDKInvoicePayer() && { LDKInvoicePayer res = self; memset(&self, 0, sizeof(LDKInvoicePayer)); return res; }
2269         ~InvoicePayer() { InvoicePayer_free(self); }
2270         InvoicePayer& operator=(InvoicePayer&& o) { InvoicePayer_free(self); self = o.self; memset(&o, 0, sizeof(InvoicePayer)); return *this; }
2271         LDKInvoicePayer* operator &() { return &self; }
2272         LDKInvoicePayer* operator ->() { return &self; }
2273         const LDKInvoicePayer* operator &() const { return &self; }
2274         const LDKInvoicePayer* operator ->() const { return &self; }
2275 };
2276 class Payer {
2277 private:
2278         LDKPayer self;
2279 public:
2280         Payer(const Payer&) = delete;
2281         Payer(Payer&& o) : self(o.self) { memset(&o, 0, sizeof(Payer)); }
2282         Payer(LDKPayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayer)); }
2283         operator LDKPayer() && { LDKPayer res = self; memset(&self, 0, sizeof(LDKPayer)); return res; }
2284         ~Payer() { Payer_free(self); }
2285         Payer& operator=(Payer&& o) { Payer_free(self); self = o.self; memset(&o, 0, sizeof(Payer)); return *this; }
2286         LDKPayer* operator &() { return &self; }
2287         LDKPayer* operator ->() { return &self; }
2288         const LDKPayer* operator &() const { return &self; }
2289         const LDKPayer* operator ->() const { return &self; }
2290         /**
2291          *  Returns the payer's node id.
2292          */
2293         inline LDKPublicKey node_id();
2294         /**
2295          *  Returns the payer's channels.
2296          */
2297         inline LDK::CVec_ChannelDetailsZ first_hops();
2298         /**
2299          *  Sends a payment over the Lightning Network using the given [`Route`].
2300          * 
2301          *  Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
2302          */
2303         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
2304         /**
2305          *  Sends a spontaneous payment over the Lightning Network using the given [`Route`].
2306          */
2307         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
2308         /**
2309          *  Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
2310          */
2311         inline LDK::CResult_NonePaymentSendFailureZ retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
2312         /**
2313          *  Signals that no further retries for the given payment will occur.
2314          */
2315         inline void abandon_payment(struct LDKThirtyTwoBytes payment_id);
2316 };
2317 class Router {
2318 private:
2319         LDKRouter self;
2320 public:
2321         Router(const Router&) = delete;
2322         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
2323         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
2324         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
2325         ~Router() { Router_free(self); }
2326         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
2327         LDKRouter* operator &() { return &self; }
2328         LDKRouter* operator ->() { return &self; }
2329         const LDKRouter* operator &() const { return &self; }
2330         const LDKRouter* operator ->() const { return &self; }
2331         /**
2332          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
2333          * 
2334          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
2335          */
2336         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);
2337 };
2338 class Retry {
2339 private:
2340         LDKRetry self;
2341 public:
2342         Retry(const Retry&) = delete;
2343         Retry(Retry&& o) : self(o.self) { memset(&o, 0, sizeof(Retry)); }
2344         Retry(LDKRetry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetry)); }
2345         operator LDKRetry() && { LDKRetry res = self; memset(&self, 0, sizeof(LDKRetry)); return res; }
2346         ~Retry() { Retry_free(self); }
2347         Retry& operator=(Retry&& o) { Retry_free(self); self = o.self; memset(&o, 0, sizeof(Retry)); return *this; }
2348         LDKRetry* operator &() { return &self; }
2349         LDKRetry* operator ->() { return &self; }
2350         const LDKRetry* operator &() const { return &self; }
2351         const LDKRetry* operator ->() const { return &self; }
2352 };
2353 class PaymentError {
2354 private:
2355         LDKPaymentError self;
2356 public:
2357         PaymentError(const PaymentError&) = delete;
2358         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
2359         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
2360         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
2361         ~PaymentError() { PaymentError_free(self); }
2362         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
2363         LDKPaymentError* operator &() { return &self; }
2364         LDKPaymentError* operator ->() { return &self; }
2365         const LDKPaymentError* operator &() const { return &self; }
2366         const LDKPaymentError* operator ->() const { return &self; }
2367 };
2368 class ParseError {
2369 private:
2370         LDKParseError self;
2371 public:
2372         ParseError(const ParseError&) = delete;
2373         ParseError(ParseError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseError)); }
2374         ParseError(LDKParseError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseError)); }
2375         operator LDKParseError() && { LDKParseError res = self; memset(&self, 0, sizeof(LDKParseError)); return res; }
2376         ~ParseError() { ParseError_free(self); }
2377         ParseError& operator=(ParseError&& o) { ParseError_free(self); self = o.self; memset(&o, 0, sizeof(ParseError)); return *this; }
2378         LDKParseError* operator &() { return &self; }
2379         LDKParseError* operator ->() { return &self; }
2380         const LDKParseError* operator &() const { return &self; }
2381         const LDKParseError* operator ->() const { return &self; }
2382 };
2383 class ParseOrSemanticError {
2384 private:
2385         LDKParseOrSemanticError self;
2386 public:
2387         ParseOrSemanticError(const ParseOrSemanticError&) = delete;
2388         ParseOrSemanticError(ParseOrSemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(ParseOrSemanticError)); }
2389         ParseOrSemanticError(LDKParseOrSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKParseOrSemanticError)); }
2390         operator LDKParseOrSemanticError() && { LDKParseOrSemanticError res = self; memset(&self, 0, sizeof(LDKParseOrSemanticError)); return res; }
2391         ~ParseOrSemanticError() { ParseOrSemanticError_free(self); }
2392         ParseOrSemanticError& operator=(ParseOrSemanticError&& o) { ParseOrSemanticError_free(self); self = o.self; memset(&o, 0, sizeof(ParseOrSemanticError)); return *this; }
2393         LDKParseOrSemanticError* operator &() { return &self; }
2394         LDKParseOrSemanticError* operator ->() { return &self; }
2395         const LDKParseOrSemanticError* operator &() const { return &self; }
2396         const LDKParseOrSemanticError* operator ->() const { return &self; }
2397 };
2398 class Invoice {
2399 private:
2400         LDKInvoice self;
2401 public:
2402         Invoice(const Invoice&) = delete;
2403         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
2404         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
2405         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
2406         ~Invoice() { Invoice_free(self); }
2407         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
2408         LDKInvoice* operator &() { return &self; }
2409         LDKInvoice* operator ->() { return &self; }
2410         const LDKInvoice* operator &() const { return &self; }
2411         const LDKInvoice* operator ->() const { return &self; }
2412 };
2413 class SignedRawInvoice {
2414 private:
2415         LDKSignedRawInvoice self;
2416 public:
2417         SignedRawInvoice(const SignedRawInvoice&) = delete;
2418         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
2419         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
2420         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
2421         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
2422         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
2423         LDKSignedRawInvoice* operator &() { return &self; }
2424         LDKSignedRawInvoice* operator ->() { return &self; }
2425         const LDKSignedRawInvoice* operator &() const { return &self; }
2426         const LDKSignedRawInvoice* operator ->() const { return &self; }
2427 };
2428 class RawInvoice {
2429 private:
2430         LDKRawInvoice self;
2431 public:
2432         RawInvoice(const RawInvoice&) = delete;
2433         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
2434         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
2435         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
2436         ~RawInvoice() { RawInvoice_free(self); }
2437         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
2438         LDKRawInvoice* operator &() { return &self; }
2439         LDKRawInvoice* operator ->() { return &self; }
2440         const LDKRawInvoice* operator &() const { return &self; }
2441         const LDKRawInvoice* operator ->() const { return &self; }
2442 };
2443 class RawDataPart {
2444 private:
2445         LDKRawDataPart self;
2446 public:
2447         RawDataPart(const RawDataPart&) = delete;
2448         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
2449         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
2450         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
2451         ~RawDataPart() { RawDataPart_free(self); }
2452         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
2453         LDKRawDataPart* operator &() { return &self; }
2454         LDKRawDataPart* operator ->() { return &self; }
2455         const LDKRawDataPart* operator &() const { return &self; }
2456         const LDKRawDataPart* operator ->() const { return &self; }
2457 };
2458 class PositiveTimestamp {
2459 private:
2460         LDKPositiveTimestamp self;
2461 public:
2462         PositiveTimestamp(const PositiveTimestamp&) = delete;
2463         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
2464         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
2465         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
2466         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
2467         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
2468         LDKPositiveTimestamp* operator &() { return &self; }
2469         LDKPositiveTimestamp* operator ->() { return &self; }
2470         const LDKPositiveTimestamp* operator &() const { return &self; }
2471         const LDKPositiveTimestamp* operator ->() const { return &self; }
2472 };
2473 class SiPrefix {
2474 private:
2475         LDKSiPrefix self;
2476 public:
2477         SiPrefix(const SiPrefix&) = delete;
2478         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
2479         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
2480         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
2481         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
2482         LDKSiPrefix* operator &() { return &self; }
2483         LDKSiPrefix* operator ->() { return &self; }
2484         const LDKSiPrefix* operator &() const { return &self; }
2485         const LDKSiPrefix* operator ->() const { return &self; }
2486 };
2487 class Currency {
2488 private:
2489         LDKCurrency self;
2490 public:
2491         Currency(const Currency&) = delete;
2492         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
2493         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
2494         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
2495         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
2496         LDKCurrency* operator &() { return &self; }
2497         LDKCurrency* operator ->() { return &self; }
2498         const LDKCurrency* operator &() const { return &self; }
2499         const LDKCurrency* operator ->() const { return &self; }
2500 };
2501 class Sha256 {
2502 private:
2503         LDKSha256 self;
2504 public:
2505         Sha256(const Sha256&) = delete;
2506         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
2507         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
2508         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
2509         ~Sha256() { Sha256_free(self); }
2510         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
2511         LDKSha256* operator &() { return &self; }
2512         LDKSha256* operator ->() { return &self; }
2513         const LDKSha256* operator &() const { return &self; }
2514         const LDKSha256* operator ->() const { return &self; }
2515 };
2516 class Description {
2517 private:
2518         LDKDescription self;
2519 public:
2520         Description(const Description&) = delete;
2521         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
2522         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
2523         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
2524         ~Description() { Description_free(self); }
2525         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
2526         LDKDescription* operator &() { return &self; }
2527         LDKDescription* operator ->() { return &self; }
2528         const LDKDescription* operator &() const { return &self; }
2529         const LDKDescription* operator ->() const { return &self; }
2530 };
2531 class PayeePubKey {
2532 private:
2533         LDKPayeePubKey self;
2534 public:
2535         PayeePubKey(const PayeePubKey&) = delete;
2536         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
2537         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
2538         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
2539         ~PayeePubKey() { PayeePubKey_free(self); }
2540         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
2541         LDKPayeePubKey* operator &() { return &self; }
2542         LDKPayeePubKey* operator ->() { return &self; }
2543         const LDKPayeePubKey* operator &() const { return &self; }
2544         const LDKPayeePubKey* operator ->() const { return &self; }
2545 };
2546 class ExpiryTime {
2547 private:
2548         LDKExpiryTime self;
2549 public:
2550         ExpiryTime(const ExpiryTime&) = delete;
2551         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
2552         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
2553         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
2554         ~ExpiryTime() { ExpiryTime_free(self); }
2555         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
2556         LDKExpiryTime* operator &() { return &self; }
2557         LDKExpiryTime* operator ->() { return &self; }
2558         const LDKExpiryTime* operator &() const { return &self; }
2559         const LDKExpiryTime* operator ->() const { return &self; }
2560 };
2561 class MinFinalCltvExpiry {
2562 private:
2563         LDKMinFinalCltvExpiry self;
2564 public:
2565         MinFinalCltvExpiry(const MinFinalCltvExpiry&) = delete;
2566         MinFinalCltvExpiry(MinFinalCltvExpiry&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiry)); }
2567         MinFinalCltvExpiry(LDKMinFinalCltvExpiry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiry)); }
2568         operator LDKMinFinalCltvExpiry() && { LDKMinFinalCltvExpiry res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiry)); return res; }
2569         ~MinFinalCltvExpiry() { MinFinalCltvExpiry_free(self); }
2570         MinFinalCltvExpiry& operator=(MinFinalCltvExpiry&& o) { MinFinalCltvExpiry_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiry)); return *this; }
2571         LDKMinFinalCltvExpiry* operator &() { return &self; }
2572         LDKMinFinalCltvExpiry* operator ->() { return &self; }
2573         const LDKMinFinalCltvExpiry* operator &() const { return &self; }
2574         const LDKMinFinalCltvExpiry* operator ->() const { return &self; }
2575 };
2576 class Fallback {
2577 private:
2578         LDKFallback self;
2579 public:
2580         Fallback(const Fallback&) = delete;
2581         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
2582         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
2583         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
2584         ~Fallback() { Fallback_free(self); }
2585         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
2586         LDKFallback* operator &() { return &self; }
2587         LDKFallback* operator ->() { return &self; }
2588         const LDKFallback* operator &() const { return &self; }
2589         const LDKFallback* operator ->() const { return &self; }
2590 };
2591 class InvoiceSignature {
2592 private:
2593         LDKInvoiceSignature self;
2594 public:
2595         InvoiceSignature(const InvoiceSignature&) = delete;
2596         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
2597         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
2598         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
2599         ~InvoiceSignature() { InvoiceSignature_free(self); }
2600         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
2601         LDKInvoiceSignature* operator &() { return &self; }
2602         LDKInvoiceSignature* operator ->() { return &self; }
2603         const LDKInvoiceSignature* operator &() const { return &self; }
2604         const LDKInvoiceSignature* operator ->() const { return &self; }
2605 };
2606 class PrivateRoute {
2607 private:
2608         LDKPrivateRoute self;
2609 public:
2610         PrivateRoute(const PrivateRoute&) = delete;
2611         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
2612         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
2613         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
2614         ~PrivateRoute() { PrivateRoute_free(self); }
2615         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
2616         LDKPrivateRoute* operator &() { return &self; }
2617         LDKPrivateRoute* operator ->() { return &self; }
2618         const LDKPrivateRoute* operator &() const { return &self; }
2619         const LDKPrivateRoute* operator ->() const { return &self; }
2620 };
2621 class CreationError {
2622 private:
2623         LDKCreationError self;
2624 public:
2625         CreationError(const CreationError&) = delete;
2626         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
2627         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
2628         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
2629         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
2630         LDKCreationError* operator &() { return &self; }
2631         LDKCreationError* operator ->() { return &self; }
2632         const LDKCreationError* operator &() const { return &self; }
2633         const LDKCreationError* operator ->() const { return &self; }
2634 };
2635 class SemanticError {
2636 private:
2637         LDKSemanticError self;
2638 public:
2639         SemanticError(const SemanticError&) = delete;
2640         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
2641         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
2642         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
2643         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
2644         LDKSemanticError* operator &() { return &self; }
2645         LDKSemanticError* operator ->() { return &self; }
2646         const LDKSemanticError* operator &() const { return &self; }
2647         const LDKSemanticError* operator ->() const { return &self; }
2648 };
2649 class SignOrCreationError {
2650 private:
2651         LDKSignOrCreationError self;
2652 public:
2653         SignOrCreationError(const SignOrCreationError&) = delete;
2654         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
2655         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
2656         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
2657         ~SignOrCreationError() { SignOrCreationError_free(self); }
2658         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
2659         LDKSignOrCreationError* operator &() { return &self; }
2660         LDKSignOrCreationError* operator ->() { return &self; }
2661         const LDKSignOrCreationError* operator &() const { return &self; }
2662         const LDKSignOrCreationError* operator ->() const { return &self; }
2663 };
2664 class ChannelMonitorUpdate {
2665 private:
2666         LDKChannelMonitorUpdate self;
2667 public:
2668         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2669         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2670         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2671         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2672         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2673         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2674         LDKChannelMonitorUpdate* operator &() { return &self; }
2675         LDKChannelMonitorUpdate* operator ->() { return &self; }
2676         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2677         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2678 };
2679 class MonitorEvent {
2680 private:
2681         LDKMonitorEvent self;
2682 public:
2683         MonitorEvent(const MonitorEvent&) = delete;
2684         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2685         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2686         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2687         ~MonitorEvent() { MonitorEvent_free(self); }
2688         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2689         LDKMonitorEvent* operator &() { return &self; }
2690         LDKMonitorEvent* operator ->() { return &self; }
2691         const LDKMonitorEvent* operator &() const { return &self; }
2692         const LDKMonitorEvent* operator ->() const { return &self; }
2693 };
2694 class HTLCUpdate {
2695 private:
2696         LDKHTLCUpdate self;
2697 public:
2698         HTLCUpdate(const HTLCUpdate&) = delete;
2699         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2700         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2701         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2702         ~HTLCUpdate() { HTLCUpdate_free(self); }
2703         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2704         LDKHTLCUpdate* operator &() { return &self; }
2705         LDKHTLCUpdate* operator ->() { return &self; }
2706         const LDKHTLCUpdate* operator &() const { return &self; }
2707         const LDKHTLCUpdate* operator ->() const { return &self; }
2708 };
2709 class Balance {
2710 private:
2711         LDKBalance self;
2712 public:
2713         Balance(const Balance&) = delete;
2714         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2715         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2716         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2717         ~Balance() { Balance_free(self); }
2718         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2719         LDKBalance* operator &() { return &self; }
2720         LDKBalance* operator ->() { return &self; }
2721         const LDKBalance* operator &() const { return &self; }
2722         const LDKBalance* operator ->() const { return &self; }
2723 };
2724 class ChannelMonitor {
2725 private:
2726         LDKChannelMonitor self;
2727 public:
2728         ChannelMonitor(const ChannelMonitor&) = delete;
2729         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2730         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2731         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2732         ~ChannelMonitor() { ChannelMonitor_free(self); }
2733         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2734         LDKChannelMonitor* operator &() { return &self; }
2735         LDKChannelMonitor* operator ->() { return &self; }
2736         const LDKChannelMonitor* operator &() const { return &self; }
2737         const LDKChannelMonitor* operator ->() const { return &self; }
2738 };
2739 class ExpandedKey {
2740 private:
2741         LDKExpandedKey self;
2742 public:
2743         ExpandedKey(const ExpandedKey&) = delete;
2744         ExpandedKey(ExpandedKey&& o) : self(o.self) { memset(&o, 0, sizeof(ExpandedKey)); }
2745         ExpandedKey(LDKExpandedKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpandedKey)); }
2746         operator LDKExpandedKey() && { LDKExpandedKey res = self; memset(&self, 0, sizeof(LDKExpandedKey)); return res; }
2747         ~ExpandedKey() { ExpandedKey_free(self); }
2748         ExpandedKey& operator=(ExpandedKey&& o) { ExpandedKey_free(self); self = o.self; memset(&o, 0, sizeof(ExpandedKey)); return *this; }
2749         LDKExpandedKey* operator &() { return &self; }
2750         LDKExpandedKey* operator ->() { return &self; }
2751         const LDKExpandedKey* operator &() const { return &self; }
2752         const LDKExpandedKey* operator ->() const { return &self; }
2753 };
2754 class CustomMessageHandler {
2755 private:
2756         LDKCustomMessageHandler self;
2757 public:
2758         CustomMessageHandler(const CustomMessageHandler&) = delete;
2759         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2760         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2761         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2762         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2763         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2764         LDKCustomMessageHandler* operator &() { return &self; }
2765         LDKCustomMessageHandler* operator ->() { return &self; }
2766         const LDKCustomMessageHandler* operator &() const { return &self; }
2767         const LDKCustomMessageHandler* operator ->() const { return &self; }
2768         /**
2769          *  Called with the message type that was received and the buffer to be read.
2770          *  Can return a `MessageHandlingError` if the message could not be handled.
2771          */
2772         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
2773         /**
2774          *  Gets the list of pending messages which were generated by the custom message
2775          *  handler, clearing the list in the process. The first tuple element must
2776          *  correspond to the intended recipients node ids. If no connection to one of the
2777          *  specified node does not exist, the message is simply not sent to it.
2778          */
2779         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
2780 };
2781 class IgnoringMessageHandler {
2782 private:
2783         LDKIgnoringMessageHandler self;
2784 public:
2785         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
2786         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
2787         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
2788         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
2789         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
2790         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
2791         LDKIgnoringMessageHandler* operator &() { return &self; }
2792         LDKIgnoringMessageHandler* operator ->() { return &self; }
2793         const LDKIgnoringMessageHandler* operator &() const { return &self; }
2794         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
2795 };
2796 class ErroringMessageHandler {
2797 private:
2798         LDKErroringMessageHandler self;
2799 public:
2800         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
2801         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
2802         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
2803         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
2804         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
2805         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
2806         LDKErroringMessageHandler* operator &() { return &self; }
2807         LDKErroringMessageHandler* operator ->() { return &self; }
2808         const LDKErroringMessageHandler* operator &() const { return &self; }
2809         const LDKErroringMessageHandler* operator ->() const { return &self; }
2810 };
2811 class MessageHandler {
2812 private:
2813         LDKMessageHandler self;
2814 public:
2815         MessageHandler(const MessageHandler&) = delete;
2816         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
2817         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
2818         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
2819         ~MessageHandler() { MessageHandler_free(self); }
2820         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
2821         LDKMessageHandler* operator &() { return &self; }
2822         LDKMessageHandler* operator ->() { return &self; }
2823         const LDKMessageHandler* operator &() const { return &self; }
2824         const LDKMessageHandler* operator ->() const { return &self; }
2825 };
2826 class SocketDescriptor {
2827 private:
2828         LDKSocketDescriptor self;
2829 public:
2830         SocketDescriptor(const SocketDescriptor&) = delete;
2831         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
2832         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
2833         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
2834         ~SocketDescriptor() { SocketDescriptor_free(self); }
2835         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
2836         LDKSocketDescriptor* operator &() { return &self; }
2837         LDKSocketDescriptor* operator ->() { return &self; }
2838         const LDKSocketDescriptor* operator &() const { return &self; }
2839         const LDKSocketDescriptor* operator ->() const { return &self; }
2840         /**
2841          *  Attempts to send some data from the given slice to the peer.
2842          * 
2843          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
2844          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
2845          *  called and further write attempts may occur until that time.
2846          * 
2847          *  If the returned size is smaller than `data.len()`, a
2848          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
2849          *  written. Additionally, until a `send_data` event completes fully, no further
2850          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
2851          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
2852          *  until then.
2853          * 
2854          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
2855          *  (indicating that read events should be paused to prevent DoS in the send buffer),
2856          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
2857          *  `resume_read` of false carries no meaning, and should not cause any action.
2858          */
2859         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
2860         /**
2861          *  Disconnect the socket pointed to by this SocketDescriptor.
2862          * 
2863          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
2864          *  call (doing so is a noop).
2865          */
2866         inline void disconnect_socket();
2867         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
2868         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
2869         /**
2870          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
2871          * This is used, for example, for inclusion of this object in a hash map.
2872          */
2873         inline uint64_t hash();
2874 };
2875 class PeerHandleError {
2876 private:
2877         LDKPeerHandleError self;
2878 public:
2879         PeerHandleError(const PeerHandleError&) = delete;
2880         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
2881         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
2882         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
2883         ~PeerHandleError() { PeerHandleError_free(self); }
2884         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
2885         LDKPeerHandleError* operator &() { return &self; }
2886         LDKPeerHandleError* operator ->() { return &self; }
2887         const LDKPeerHandleError* operator &() const { return &self; }
2888         const LDKPeerHandleError* operator ->() const { return &self; }
2889 };
2890 class PeerManager {
2891 private:
2892         LDKPeerManager self;
2893 public:
2894         PeerManager(const PeerManager&) = delete;
2895         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
2896         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
2897         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
2898         ~PeerManager() { PeerManager_free(self); }
2899         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
2900         LDKPeerManager* operator &() { return &self; }
2901         LDKPeerManager* operator ->() { return &self; }
2902         const LDKPeerManager* operator &() const { return &self; }
2903         const LDKPeerManager* operator ->() const { return &self; }
2904 };
2905 class RapidGossipSync {
2906 private:
2907         LDKRapidGossipSync self;
2908 public:
2909         RapidGossipSync(const RapidGossipSync&) = delete;
2910         RapidGossipSync(RapidGossipSync&& o) : self(o.self) { memset(&o, 0, sizeof(RapidGossipSync)); }
2911         RapidGossipSync(LDKRapidGossipSync&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRapidGossipSync)); }
2912         operator LDKRapidGossipSync() && { LDKRapidGossipSync res = self; memset(&self, 0, sizeof(LDKRapidGossipSync)); return res; }
2913         ~RapidGossipSync() { RapidGossipSync_free(self); }
2914         RapidGossipSync& operator=(RapidGossipSync&& o) { RapidGossipSync_free(self); self = o.self; memset(&o, 0, sizeof(RapidGossipSync)); return *this; }
2915         LDKRapidGossipSync* operator &() { return &self; }
2916         LDKRapidGossipSync* operator ->() { return &self; }
2917         const LDKRapidGossipSync* operator &() const { return &self; }
2918         const LDKRapidGossipSync* operator ->() const { return &self; }
2919 };
2920 class Persister {
2921 private:
2922         LDKPersister self;
2923 public:
2924         Persister(const Persister&) = delete;
2925         Persister(Persister&& o) : self(o.self) { memset(&o, 0, sizeof(Persister)); }
2926         Persister(LDKPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersister)); }
2927         operator LDKPersister() && { LDKPersister res = self; memset(&self, 0, sizeof(LDKPersister)); return res; }
2928         ~Persister() { Persister_free(self); }
2929         Persister& operator=(Persister&& o) { Persister_free(self); self = o.self; memset(&o, 0, sizeof(Persister)); return *this; }
2930         LDKPersister* operator &() { return &self; }
2931         LDKPersister* operator ->() { return &self; }
2932         const LDKPersister* operator &() const { return &self; }
2933         const LDKPersister* operator ->() const { return &self; }
2934         /**
2935          *  Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
2936          */
2937         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
2938         /**
2939          *  Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
2940          */
2941         inline LDK::CResult_NoneErrorZ persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
2942         /**
2943          *  Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
2944          */
2945         inline LDK::CResult_NoneErrorZ persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer);
2946 };
2947 class DecodeError {
2948 private:
2949         LDKDecodeError self;
2950 public:
2951         DecodeError(const DecodeError&) = delete;
2952         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
2953         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
2954         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
2955         ~DecodeError() { DecodeError_free(self); }
2956         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
2957         LDKDecodeError* operator &() { return &self; }
2958         LDKDecodeError* operator ->() { return &self; }
2959         const LDKDecodeError* operator &() const { return &self; }
2960         const LDKDecodeError* operator ->() const { return &self; }
2961 };
2962 class Init {
2963 private:
2964         LDKInit self;
2965 public:
2966         Init(const Init&) = delete;
2967         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
2968         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
2969         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
2970         ~Init() { Init_free(self); }
2971         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
2972         LDKInit* operator &() { return &self; }
2973         LDKInit* operator ->() { return &self; }
2974         const LDKInit* operator &() const { return &self; }
2975         const LDKInit* operator ->() const { return &self; }
2976 };
2977 class ErrorMessage {
2978 private:
2979         LDKErrorMessage self;
2980 public:
2981         ErrorMessage(const ErrorMessage&) = delete;
2982         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
2983         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
2984         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
2985         ~ErrorMessage() { ErrorMessage_free(self); }
2986         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
2987         LDKErrorMessage* operator &() { return &self; }
2988         LDKErrorMessage* operator ->() { return &self; }
2989         const LDKErrorMessage* operator &() const { return &self; }
2990         const LDKErrorMessage* operator ->() const { return &self; }
2991 };
2992 class WarningMessage {
2993 private:
2994         LDKWarningMessage self;
2995 public:
2996         WarningMessage(const WarningMessage&) = delete;
2997         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
2998         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
2999         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
3000         ~WarningMessage() { WarningMessage_free(self); }
3001         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
3002         LDKWarningMessage* operator &() { return &self; }
3003         LDKWarningMessage* operator ->() { return &self; }
3004         const LDKWarningMessage* operator &() const { return &self; }
3005         const LDKWarningMessage* operator ->() const { return &self; }
3006 };
3007 class Ping {
3008 private:
3009         LDKPing self;
3010 public:
3011         Ping(const Ping&) = delete;
3012         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
3013         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
3014         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
3015         ~Ping() { Ping_free(self); }
3016         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
3017         LDKPing* operator &() { return &self; }
3018         LDKPing* operator ->() { return &self; }
3019         const LDKPing* operator &() const { return &self; }
3020         const LDKPing* operator ->() const { return &self; }
3021 };
3022 class Pong {
3023 private:
3024         LDKPong self;
3025 public:
3026         Pong(const Pong&) = delete;
3027         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
3028         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
3029         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
3030         ~Pong() { Pong_free(self); }
3031         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
3032         LDKPong* operator &() { return &self; }
3033         LDKPong* operator ->() { return &self; }
3034         const LDKPong* operator &() const { return &self; }
3035         const LDKPong* operator ->() const { return &self; }
3036 };
3037 class OpenChannel {
3038 private:
3039         LDKOpenChannel self;
3040 public:
3041         OpenChannel(const OpenChannel&) = delete;
3042         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
3043         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
3044         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
3045         ~OpenChannel() { OpenChannel_free(self); }
3046         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
3047         LDKOpenChannel* operator &() { return &self; }
3048         LDKOpenChannel* operator ->() { return &self; }
3049         const LDKOpenChannel* operator &() const { return &self; }
3050         const LDKOpenChannel* operator ->() const { return &self; }
3051 };
3052 class AcceptChannel {
3053 private:
3054         LDKAcceptChannel self;
3055 public:
3056         AcceptChannel(const AcceptChannel&) = delete;
3057         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
3058         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
3059         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
3060         ~AcceptChannel() { AcceptChannel_free(self); }
3061         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
3062         LDKAcceptChannel* operator &() { return &self; }
3063         LDKAcceptChannel* operator ->() { return &self; }
3064         const LDKAcceptChannel* operator &() const { return &self; }
3065         const LDKAcceptChannel* operator ->() const { return &self; }
3066 };
3067 class FundingCreated {
3068 private:
3069         LDKFundingCreated self;
3070 public:
3071         FundingCreated(const FundingCreated&) = delete;
3072         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
3073         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
3074         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
3075         ~FundingCreated() { FundingCreated_free(self); }
3076         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
3077         LDKFundingCreated* operator &() { return &self; }
3078         LDKFundingCreated* operator ->() { return &self; }
3079         const LDKFundingCreated* operator &() const { return &self; }
3080         const LDKFundingCreated* operator ->() const { return &self; }
3081 };
3082 class FundingSigned {
3083 private:
3084         LDKFundingSigned self;
3085 public:
3086         FundingSigned(const FundingSigned&) = delete;
3087         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
3088         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
3089         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
3090         ~FundingSigned() { FundingSigned_free(self); }
3091         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
3092         LDKFundingSigned* operator &() { return &self; }
3093         LDKFundingSigned* operator ->() { return &self; }
3094         const LDKFundingSigned* operator &() const { return &self; }
3095         const LDKFundingSigned* operator ->() const { return &self; }
3096 };
3097 class ChannelReady {
3098 private:
3099         LDKChannelReady self;
3100 public:
3101         ChannelReady(const ChannelReady&) = delete;
3102         ChannelReady(ChannelReady&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReady)); }
3103         ChannelReady(LDKChannelReady&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReady)); }
3104         operator LDKChannelReady() && { LDKChannelReady res = self; memset(&self, 0, sizeof(LDKChannelReady)); return res; }
3105         ~ChannelReady() { ChannelReady_free(self); }
3106         ChannelReady& operator=(ChannelReady&& o) { ChannelReady_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReady)); return *this; }
3107         LDKChannelReady* operator &() { return &self; }
3108         LDKChannelReady* operator ->() { return &self; }
3109         const LDKChannelReady* operator &() const { return &self; }
3110         const LDKChannelReady* operator ->() const { return &self; }
3111 };
3112 class Shutdown {
3113 private:
3114         LDKShutdown self;
3115 public:
3116         Shutdown(const Shutdown&) = delete;
3117         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
3118         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
3119         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
3120         ~Shutdown() { Shutdown_free(self); }
3121         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
3122         LDKShutdown* operator &() { return &self; }
3123         LDKShutdown* operator ->() { return &self; }
3124         const LDKShutdown* operator &() const { return &self; }
3125         const LDKShutdown* operator ->() const { return &self; }
3126 };
3127 class ClosingSignedFeeRange {
3128 private:
3129         LDKClosingSignedFeeRange self;
3130 public:
3131         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3132         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3133         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3134         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3135         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3136         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3137         LDKClosingSignedFeeRange* operator &() { return &self; }
3138         LDKClosingSignedFeeRange* operator ->() { return &self; }
3139         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3140         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3141 };
3142 class ClosingSigned {
3143 private:
3144         LDKClosingSigned self;
3145 public:
3146         ClosingSigned(const ClosingSigned&) = delete;
3147         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3148         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3149         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3150         ~ClosingSigned() { ClosingSigned_free(self); }
3151         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3152         LDKClosingSigned* operator &() { return &self; }
3153         LDKClosingSigned* operator ->() { return &self; }
3154         const LDKClosingSigned* operator &() const { return &self; }
3155         const LDKClosingSigned* operator ->() const { return &self; }
3156 };
3157 class UpdateAddHTLC {
3158 private:
3159         LDKUpdateAddHTLC self;
3160 public:
3161         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3162         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3163         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3164         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3165         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3166         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3167         LDKUpdateAddHTLC* operator &() { return &self; }
3168         LDKUpdateAddHTLC* operator ->() { return &self; }
3169         const LDKUpdateAddHTLC* operator &() const { return &self; }
3170         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3171 };
3172 class UpdateFulfillHTLC {
3173 private:
3174         LDKUpdateFulfillHTLC self;
3175 public:
3176         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3177         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3178         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3179         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3180         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3181         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3182         LDKUpdateFulfillHTLC* operator &() { return &self; }
3183         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3184         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3185         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3186 };
3187 class UpdateFailHTLC {
3188 private:
3189         LDKUpdateFailHTLC self;
3190 public:
3191         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3192         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3193         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3194         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3195         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3196         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3197         LDKUpdateFailHTLC* operator &() { return &self; }
3198         LDKUpdateFailHTLC* operator ->() { return &self; }
3199         const LDKUpdateFailHTLC* operator &() const { return &self; }
3200         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3201 };
3202 class UpdateFailMalformedHTLC {
3203 private:
3204         LDKUpdateFailMalformedHTLC self;
3205 public:
3206         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3207         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3208         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3209         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3210         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3211         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3212         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3213         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3214         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3215         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3216 };
3217 class CommitmentSigned {
3218 private:
3219         LDKCommitmentSigned self;
3220 public:
3221         CommitmentSigned(const CommitmentSigned&) = delete;
3222         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3223         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3224         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3225         ~CommitmentSigned() { CommitmentSigned_free(self); }
3226         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3227         LDKCommitmentSigned* operator &() { return &self; }
3228         LDKCommitmentSigned* operator ->() { return &self; }
3229         const LDKCommitmentSigned* operator &() const { return &self; }
3230         const LDKCommitmentSigned* operator ->() const { return &self; }
3231 };
3232 class RevokeAndACK {
3233 private:
3234         LDKRevokeAndACK self;
3235 public:
3236         RevokeAndACK(const RevokeAndACK&) = delete;
3237         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
3238         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
3239         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
3240         ~RevokeAndACK() { RevokeAndACK_free(self); }
3241         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
3242         LDKRevokeAndACK* operator &() { return &self; }
3243         LDKRevokeAndACK* operator ->() { return &self; }
3244         const LDKRevokeAndACK* operator &() const { return &self; }
3245         const LDKRevokeAndACK* operator ->() const { return &self; }
3246 };
3247 class UpdateFee {
3248 private:
3249         LDKUpdateFee self;
3250 public:
3251         UpdateFee(const UpdateFee&) = delete;
3252         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
3253         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
3254         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
3255         ~UpdateFee() { UpdateFee_free(self); }
3256         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
3257         LDKUpdateFee* operator &() { return &self; }
3258         LDKUpdateFee* operator ->() { return &self; }
3259         const LDKUpdateFee* operator &() const { return &self; }
3260         const LDKUpdateFee* operator ->() const { return &self; }
3261 };
3262 class DataLossProtect {
3263 private:
3264         LDKDataLossProtect self;
3265 public:
3266         DataLossProtect(const DataLossProtect&) = delete;
3267         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
3268         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
3269         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
3270         ~DataLossProtect() { DataLossProtect_free(self); }
3271         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
3272         LDKDataLossProtect* operator &() { return &self; }
3273         LDKDataLossProtect* operator ->() { return &self; }
3274         const LDKDataLossProtect* operator &() const { return &self; }
3275         const LDKDataLossProtect* operator ->() const { return &self; }
3276 };
3277 class ChannelReestablish {
3278 private:
3279         LDKChannelReestablish self;
3280 public:
3281         ChannelReestablish(const ChannelReestablish&) = delete;
3282         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
3283         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
3284         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
3285         ~ChannelReestablish() { ChannelReestablish_free(self); }
3286         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
3287         LDKChannelReestablish* operator &() { return &self; }
3288         LDKChannelReestablish* operator ->() { return &self; }
3289         const LDKChannelReestablish* operator &() const { return &self; }
3290         const LDKChannelReestablish* operator ->() const { return &self; }
3291 };
3292 class AnnouncementSignatures {
3293 private:
3294         LDKAnnouncementSignatures self;
3295 public:
3296         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
3297         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
3298         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
3299         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
3300         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
3301         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
3302         LDKAnnouncementSignatures* operator &() { return &self; }
3303         LDKAnnouncementSignatures* operator ->() { return &self; }
3304         const LDKAnnouncementSignatures* operator &() const { return &self; }
3305         const LDKAnnouncementSignatures* operator ->() const { return &self; }
3306 };
3307 class NetAddress {
3308 private:
3309         LDKNetAddress self;
3310 public:
3311         NetAddress(const NetAddress&) = delete;
3312         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
3313         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
3314         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
3315         ~NetAddress() { NetAddress_free(self); }
3316         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
3317         LDKNetAddress* operator &() { return &self; }
3318         LDKNetAddress* operator ->() { return &self; }
3319         const LDKNetAddress* operator &() const { return &self; }
3320         const LDKNetAddress* operator ->() const { return &self; }
3321 };
3322 class UnsignedNodeAnnouncement {
3323 private:
3324         LDKUnsignedNodeAnnouncement self;
3325 public:
3326         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
3327         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
3328         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
3329         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
3330         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
3331         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
3332         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
3333         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
3334         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
3335         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
3336 };
3337 class NodeAnnouncement {
3338 private:
3339         LDKNodeAnnouncement self;
3340 public:
3341         NodeAnnouncement(const NodeAnnouncement&) = delete;
3342         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
3343         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
3344         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
3345         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
3346         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
3347         LDKNodeAnnouncement* operator &() { return &self; }
3348         LDKNodeAnnouncement* operator ->() { return &self; }
3349         const LDKNodeAnnouncement* operator &() const { return &self; }
3350         const LDKNodeAnnouncement* operator ->() const { return &self; }
3351 };
3352 class UnsignedChannelAnnouncement {
3353 private:
3354         LDKUnsignedChannelAnnouncement self;
3355 public:
3356         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
3357         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
3358         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
3359         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
3360         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
3361         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
3362         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
3363         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
3364         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
3365         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
3366 };
3367 class ChannelAnnouncement {
3368 private:
3369         LDKChannelAnnouncement self;
3370 public:
3371         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
3372         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
3373         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
3374         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
3375         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
3376         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
3377         LDKChannelAnnouncement* operator &() { return &self; }
3378         LDKChannelAnnouncement* operator ->() { return &self; }
3379         const LDKChannelAnnouncement* operator &() const { return &self; }
3380         const LDKChannelAnnouncement* operator ->() const { return &self; }
3381 };
3382 class UnsignedChannelUpdate {
3383 private:
3384         LDKUnsignedChannelUpdate self;
3385 public:
3386         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
3387         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
3388         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
3389         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
3390         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
3391         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
3392         LDKUnsignedChannelUpdate* operator &() { return &self; }
3393         LDKUnsignedChannelUpdate* operator ->() { return &self; }
3394         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
3395         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
3396 };
3397 class ChannelUpdate {
3398 private:
3399         LDKChannelUpdate self;
3400 public:
3401         ChannelUpdate(const ChannelUpdate&) = delete;
3402         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
3403         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
3404         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
3405         ~ChannelUpdate() { ChannelUpdate_free(self); }
3406         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
3407         LDKChannelUpdate* operator &() { return &self; }
3408         LDKChannelUpdate* operator ->() { return &self; }
3409         const LDKChannelUpdate* operator &() const { return &self; }
3410         const LDKChannelUpdate* operator ->() const { return &self; }
3411 };
3412 class QueryChannelRange {
3413 private:
3414         LDKQueryChannelRange self;
3415 public:
3416         QueryChannelRange(const QueryChannelRange&) = delete;
3417         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
3418         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
3419         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
3420         ~QueryChannelRange() { QueryChannelRange_free(self); }
3421         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
3422         LDKQueryChannelRange* operator &() { return &self; }
3423         LDKQueryChannelRange* operator ->() { return &self; }
3424         const LDKQueryChannelRange* operator &() const { return &self; }
3425         const LDKQueryChannelRange* operator ->() const { return &self; }
3426 };
3427 class ReplyChannelRange {
3428 private:
3429         LDKReplyChannelRange self;
3430 public:
3431         ReplyChannelRange(const ReplyChannelRange&) = delete;
3432         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
3433         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
3434         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
3435         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
3436         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
3437         LDKReplyChannelRange* operator &() { return &self; }
3438         LDKReplyChannelRange* operator ->() { return &self; }
3439         const LDKReplyChannelRange* operator &() const { return &self; }
3440         const LDKReplyChannelRange* operator ->() const { return &self; }
3441 };
3442 class QueryShortChannelIds {
3443 private:
3444         LDKQueryShortChannelIds self;
3445 public:
3446         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
3447         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
3448         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
3449         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
3450         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
3451         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
3452         LDKQueryShortChannelIds* operator &() { return &self; }
3453         LDKQueryShortChannelIds* operator ->() { return &self; }
3454         const LDKQueryShortChannelIds* operator &() const { return &self; }
3455         const LDKQueryShortChannelIds* operator ->() const { return &self; }
3456 };
3457 class ReplyShortChannelIdsEnd {
3458 private:
3459         LDKReplyShortChannelIdsEnd self;
3460 public:
3461         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
3462         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
3463         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
3464         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
3465         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
3466         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
3467         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
3468         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
3469         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
3470         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
3471 };
3472 class GossipTimestampFilter {
3473 private:
3474         LDKGossipTimestampFilter self;
3475 public:
3476         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
3477         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
3478         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
3479         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
3480         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
3481         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
3482         LDKGossipTimestampFilter* operator &() { return &self; }
3483         LDKGossipTimestampFilter* operator ->() { return &self; }
3484         const LDKGossipTimestampFilter* operator &() const { return &self; }
3485         const LDKGossipTimestampFilter* operator ->() const { return &self; }
3486 };
3487 class ErrorAction {
3488 private:
3489         LDKErrorAction self;
3490 public:
3491         ErrorAction(const ErrorAction&) = delete;
3492         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
3493         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
3494         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
3495         ~ErrorAction() { ErrorAction_free(self); }
3496         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
3497         LDKErrorAction* operator &() { return &self; }
3498         LDKErrorAction* operator ->() { return &self; }
3499         const LDKErrorAction* operator &() const { return &self; }
3500         const LDKErrorAction* operator ->() const { return &self; }
3501 };
3502 class LightningError {
3503 private:
3504         LDKLightningError self;
3505 public:
3506         LightningError(const LightningError&) = delete;
3507         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
3508         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
3509         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
3510         ~LightningError() { LightningError_free(self); }
3511         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
3512         LDKLightningError* operator &() { return &self; }
3513         LDKLightningError* operator ->() { return &self; }
3514         const LDKLightningError* operator &() const { return &self; }
3515         const LDKLightningError* operator ->() const { return &self; }
3516 };
3517 class CommitmentUpdate {
3518 private:
3519         LDKCommitmentUpdate self;
3520 public:
3521         CommitmentUpdate(const CommitmentUpdate&) = delete;
3522         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
3523         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
3524         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
3525         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
3526         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
3527         LDKCommitmentUpdate* operator &() { return &self; }
3528         LDKCommitmentUpdate* operator ->() { return &self; }
3529         const LDKCommitmentUpdate* operator &() const { return &self; }
3530         const LDKCommitmentUpdate* operator ->() const { return &self; }
3531 };
3532 class ChannelMessageHandler {
3533 private:
3534         LDKChannelMessageHandler self;
3535 public:
3536         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
3537         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
3538         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
3539         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
3540         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
3541         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
3542         LDKChannelMessageHandler* operator &() { return &self; }
3543         LDKChannelMessageHandler* operator ->() { return &self; }
3544         const LDKChannelMessageHandler* operator &() const { return &self; }
3545         const LDKChannelMessageHandler* operator ->() const { return &self; }
3546         /**
3547          *  Handle an incoming open_channel message from the given peer.
3548          */
3549         inline void handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
3550         /**
3551          *  Handle an incoming accept_channel message from the given peer.
3552          */
3553         inline void handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
3554         /**
3555          *  Handle an incoming funding_created message from the given peer.
3556          */
3557         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
3558         /**
3559          *  Handle an incoming funding_signed message from the given peer.
3560          */
3561         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
3562         /**
3563          *  Handle an incoming channel_ready message from the given peer.
3564          */
3565         inline void handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
3566         /**
3567          *  Handle an incoming shutdown message from the given peer.
3568          */
3569         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg);
3570         /**
3571          *  Handle an incoming closing_signed message from the given peer.
3572          */
3573         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
3574         /**
3575          *  Handle an incoming update_add_htlc message from the given peer.
3576          */
3577         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
3578         /**
3579          *  Handle an incoming update_fulfill_htlc message from the given peer.
3580          */
3581         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
3582         /**
3583          *  Handle an incoming update_fail_htlc message from the given peer.
3584          */
3585         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
3586         /**
3587          *  Handle an incoming update_fail_malformed_htlc message from the given peer.
3588          */
3589         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
3590         /**
3591          *  Handle an incoming commitment_signed message from the given peer.
3592          */
3593         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
3594         /**
3595          *  Handle an incoming revoke_and_ack message from the given peer.
3596          */
3597         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
3598         /**
3599          *  Handle an incoming update_fee message from the given peer.
3600          */
3601         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
3602         /**
3603          *  Handle an incoming announcement_signatures message from the given peer.
3604          */
3605         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
3606         /**
3607          *  Indicates a connection to the peer failed/an existing connection was lost. If no connection
3608          *  is believed to be possible in the future (eg they're sending us messages we don't
3609          *  understand or indicate they require unknown feature bits), no_connection_possible is set
3610          *  and any outstanding channels should be failed.
3611          */
3612         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
3613         /**
3614          *  Handle a peer reconnecting, possibly generating channel_reestablish message(s).
3615          */
3616         inline void peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
3617         /**
3618          *  Handle an incoming channel_reestablish message from the given peer.
3619          */
3620         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
3621         /**
3622          *  Handle an incoming channel update from the given peer.
3623          */
3624         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
3625         /**
3626          *  Handle an incoming error message from the given peer.
3627          */
3628         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
3629 };
3630 class RoutingMessageHandler {
3631 private:
3632         LDKRoutingMessageHandler self;
3633 public:
3634         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
3635         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
3636         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
3637         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
3638         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
3639         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
3640         LDKRoutingMessageHandler* operator &() { return &self; }
3641         LDKRoutingMessageHandler* operator ->() { return &self; }
3642         const LDKRoutingMessageHandler* operator &() const { return &self; }
3643         const LDKRoutingMessageHandler* operator ->() const { return &self; }
3644         /**
3645          *  Handle an incoming node_announcement message, returning true if it should be forwarded on,
3646          *  false or returning an Err otherwise.
3647          */
3648         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
3649         /**
3650          *  Handle a channel_announcement message, returning true if it should be forwarded on, false
3651          *  or returning an Err otherwise.
3652          */
3653         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
3654         /**
3655          *  Handle an incoming channel_update message, returning true if it should be forwarded on,
3656          *  false or returning an Err otherwise.
3657          */
3658         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
3659         /**
3660          *  Gets a subset of the channel announcements and updates required to dump our routing table
3661          *  to a remote node, starting at the short_channel_id indicated by starting_point and
3662          *  including the batch_amount entries immediately higher in numerical value than starting_point.
3663          */
3664         inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount);
3665         /**
3666          *  Gets a subset of the node announcements required to dump our routing table to a remote node,
3667          *  starting at the node *after* the provided publickey and including batch_amount entries
3668          *  immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
3669          *  If None is provided for starting_point, we start at the first node.
3670          * 
3671          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
3672          */
3673         inline LDK::CVec_NodeAnnouncementZ get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount);
3674         /**
3675          *  Called when a connection is established with a peer. This can be used to
3676          *  perform routing table synchronization using a strategy defined by the
3677          *  implementor.
3678          */
3679         inline void peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
3680         /**
3681          *  Handles the reply of a query we initiated to learn about channels
3682          *  for a given range of blocks. We can expect to receive one or more
3683          *  replies to a single query.
3684          */
3685         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
3686         /**
3687          *  Handles the reply of a query we initiated asking for routing gossip
3688          *  messages for a list of channels. We should receive this message when
3689          *  a node has completed its best effort to send us the pertaining routing
3690          *  gossip messages.
3691          */
3692         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
3693         /**
3694          *  Handles when a peer asks us to send a list of short_channel_ids
3695          *  for the requested range of blocks.
3696          */
3697         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
3698         /**
3699          *  Handles when a peer asks us to send routing gossip messages for a
3700          *  list of short_channel_ids.
3701          */
3702         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
3703 };
3704 class GraphSyncError {
3705 private:
3706         LDKGraphSyncError self;
3707 public:
3708         GraphSyncError(const GraphSyncError&) = delete;
3709         GraphSyncError(GraphSyncError&& o) : self(o.self) { memset(&o, 0, sizeof(GraphSyncError)); }
3710         GraphSyncError(LDKGraphSyncError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGraphSyncError)); }
3711         operator LDKGraphSyncError() && { LDKGraphSyncError res = self; memset(&self, 0, sizeof(LDKGraphSyncError)); return res; }
3712         ~GraphSyncError() { GraphSyncError_free(self); }
3713         GraphSyncError& operator=(GraphSyncError&& o) { GraphSyncError_free(self); self = o.self; memset(&o, 0, sizeof(GraphSyncError)); return *this; }
3714         LDKGraphSyncError* operator &() { return &self; }
3715         LDKGraphSyncError* operator ->() { return &self; }
3716         const LDKGraphSyncError* operator &() const { return &self; }
3717         const LDKGraphSyncError* operator ->() const { return &self; }
3718 };
3719 class DefaultRouter {
3720 private:
3721         LDKDefaultRouter self;
3722 public:
3723         DefaultRouter(const DefaultRouter&) = delete;
3724         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
3725         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
3726         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
3727         ~DefaultRouter() { DefaultRouter_free(self); }
3728         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
3729         LDKDefaultRouter* operator &() { return &self; }
3730         LDKDefaultRouter* operator ->() { return &self; }
3731         const LDKDefaultRouter* operator &() const { return &self; }
3732         const LDKDefaultRouter* operator ->() const { return &self; }
3733 };
3734 class Level {
3735 private:
3736         LDKLevel self;
3737 public:
3738         Level(const Level&) = delete;
3739         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
3740         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
3741         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
3742         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
3743         LDKLevel* operator &() { return &self; }
3744         LDKLevel* operator ->() { return &self; }
3745         const LDKLevel* operator &() const { return &self; }
3746         const LDKLevel* operator ->() const { return &self; }
3747 };
3748 class Record {
3749 private:
3750         LDKRecord self;
3751 public:
3752         Record(const Record&) = delete;
3753         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
3754         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
3755         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
3756         ~Record() { Record_free(self); }
3757         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
3758         LDKRecord* operator &() { return &self; }
3759         LDKRecord* operator ->() { return &self; }
3760         const LDKRecord* operator &() const { return &self; }
3761         const LDKRecord* operator ->() const { return &self; }
3762 };
3763 class Logger {
3764 private:
3765         LDKLogger self;
3766 public:
3767         Logger(const Logger&) = delete;
3768         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
3769         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
3770         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
3771         ~Logger() { Logger_free(self); }
3772         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
3773         LDKLogger* operator &() { return &self; }
3774         LDKLogger* operator ->() { return &self; }
3775         const LDKLogger* operator &() const { return &self; }
3776         const LDKLogger* operator ->() const { return &self; }
3777         /**
3778          *  Logs the `Record`
3779          */
3780         inline void log(const struct LDKRecord *NONNULL_PTR record);
3781 };
3782 class MonitorUpdateId {
3783 private:
3784         LDKMonitorUpdateId self;
3785 public:
3786         MonitorUpdateId(const MonitorUpdateId&) = delete;
3787         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
3788         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
3789         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
3790         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
3791         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
3792         LDKMonitorUpdateId* operator &() { return &self; }
3793         LDKMonitorUpdateId* operator ->() { return &self; }
3794         const LDKMonitorUpdateId* operator &() const { return &self; }
3795         const LDKMonitorUpdateId* operator ->() const { return &self; }
3796 };
3797 class Persist {
3798 private:
3799         LDKPersist self;
3800 public:
3801         Persist(const Persist&) = delete;
3802         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
3803         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
3804         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
3805         ~Persist() { Persist_free(self); }
3806         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
3807         LDKPersist* operator &() { return &self; }
3808         LDKPersist* operator ->() { return &self; }
3809         const LDKPersist* operator &() const { return &self; }
3810         const LDKPersist* operator ->() const { return &self; }
3811         /**
3812          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
3813          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
3814          * 
3815          *  The data can be stored any way you want, but the identifier provided by LDK is the
3816          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
3817          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
3818          * 
3819          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
3820          *  if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
3821          * 
3822          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
3823          *  and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
3824          * 
3825          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3826          *  [`Writeable::write`]: crate::util::ser::Writeable::write
3827          */
3828         inline LDK::CResult_NoneChannelMonitorUpdateErrZ persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
3829         /**
3830          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
3831          *  update.
3832          * 
3833          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
3834          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
3835          *  details.
3836          * 
3837          *  During blockchain synchronization operations, this may be called with no
3838          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
3839          *  Note that after the full [`ChannelMonitor`] is persisted any previous
3840          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
3841          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
3842          * 
3843          *  If an implementer chooses to persist the updates only, they need to make
3844          *  sure that all the updates are applied to the `ChannelMonitors` *before*
3845          *  the set of channel monitors is given to the `ChannelManager`
3846          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
3847          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
3848          *  persisted, then there is no need to persist individual updates.
3849          * 
3850          *  Note that there could be a performance tradeoff between persisting complete
3851          *  channel monitors on every update vs. persisting only updates and applying
3852          *  them in batches. The size of each monitor grows `O(number of state updates)`
3853          *  whereas updates are small and `O(1)`.
3854          * 
3855          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
3856          *  if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
3857          * 
3858          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
3859          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
3860          *  [`ChannelMonitorUpdateErr`] for requirements when returning errors.
3861          * 
3862          *  [`Writeable::write`]: crate::util::ser::Writeable::write
3863          * 
3864          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
3865          */
3866         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);
3867 };
3868 class LockedChannelMonitor {
3869 private:
3870         LDKLockedChannelMonitor self;
3871 public:
3872         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
3873         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
3874         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
3875         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
3876         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
3877         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
3878         LDKLockedChannelMonitor* operator &() { return &self; }
3879         LDKLockedChannelMonitor* operator ->() { return &self; }
3880         const LDKLockedChannelMonitor* operator &() const { return &self; }
3881         const LDKLockedChannelMonitor* operator ->() const { return &self; }
3882 };
3883 class ChainMonitor {
3884 private:
3885         LDKChainMonitor self;
3886 public:
3887         ChainMonitor(const ChainMonitor&) = delete;
3888         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
3889         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
3890         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
3891         ~ChainMonitor() { ChainMonitor_free(self); }
3892         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
3893         LDKChainMonitor* operator &() { return &self; }
3894         LDKChainMonitor* operator ->() { return &self; }
3895         const LDKChainMonitor* operator &() const { return &self; }
3896         const LDKChainMonitor* operator ->() const { return &self; }
3897 };
3898 class CVec_SpendableOutputDescriptorZ {
3899 private:
3900         LDKCVec_SpendableOutputDescriptorZ self;
3901 public:
3902         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
3903         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
3904         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
3905         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
3906         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
3907         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
3908         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
3909         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
3910         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
3911         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
3912 };
3913 class CResult_LockedChannelMonitorNoneZ {
3914 private:
3915         LDKCResult_LockedChannelMonitorNoneZ self;
3916 public:
3917         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
3918         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
3919         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
3920         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
3921         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
3922         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
3923         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
3924         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
3925         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
3926         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
3927 };
3928 class CResult_PhantomRouteHintsDecodeErrorZ {
3929 private:
3930         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
3931 public:
3932         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
3933         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
3934         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
3935         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
3936         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
3937         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
3938         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
3939         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
3940         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
3941         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
3942 };
3943 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
3944 private:
3945         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
3946 public:
3947         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
3948         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
3949         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
3950         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
3951         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
3952         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; }
3953         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
3954         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
3955         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
3956         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
3957 };
3958 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
3959 private:
3960         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
3961 public:
3962         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
3963         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
3964         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)); }
3965         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
3966         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
3967         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; }
3968         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
3969         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
3970         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
3971         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
3972 };
3973 class CResult_HTLCUpdateDecodeErrorZ {
3974 private:
3975         LDKCResult_HTLCUpdateDecodeErrorZ self;
3976 public:
3977         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
3978         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
3979         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
3980         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
3981         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
3982         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
3983         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
3984         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
3985         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
3986         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
3987 };
3988 class C2Tuple_SignatureCVec_SignatureZZ {
3989 private:
3990         LDKC2Tuple_SignatureCVec_SignatureZZ self;
3991 public:
3992         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
3993         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
3994         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
3995         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
3996         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
3997         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; }
3998         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
3999         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
4000         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
4001         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
4002 };
4003 class CVec_C2Tuple_u32TxOutZZ {
4004 private:
4005         LDKCVec_C2Tuple_u32TxOutZZ self;
4006 public:
4007         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
4008         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
4009         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
4010         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
4011         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
4012         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; }
4013         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
4014         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
4015         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
4016         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
4017 };
4018 class CResult_ChannelInfoDecodeErrorZ {
4019 private:
4020         LDKCResult_ChannelInfoDecodeErrorZ self;
4021 public:
4022         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
4023         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
4024         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
4025         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
4026         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
4027         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
4028         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
4029         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
4030         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
4031         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
4032 };
4033 class COption_WriteableScoreZ {
4034 private:
4035         LDKCOption_WriteableScoreZ self;
4036 public:
4037         COption_WriteableScoreZ(const COption_WriteableScoreZ&) = delete;
4038         COption_WriteableScoreZ(COption_WriteableScoreZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_WriteableScoreZ)); }
4039         COption_WriteableScoreZ(LDKCOption_WriteableScoreZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_WriteableScoreZ)); }
4040         operator LDKCOption_WriteableScoreZ() && { LDKCOption_WriteableScoreZ res = self; memset(&self, 0, sizeof(LDKCOption_WriteableScoreZ)); return res; }
4041         ~COption_WriteableScoreZ() { COption_WriteableScoreZ_free(self); }
4042         COption_WriteableScoreZ& operator=(COption_WriteableScoreZ&& o) { COption_WriteableScoreZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_WriteableScoreZ)); return *this; }
4043         LDKCOption_WriteableScoreZ* operator &() { return &self; }
4044         LDKCOption_WriteableScoreZ* operator ->() { return &self; }
4045         const LDKCOption_WriteableScoreZ* operator &() const { return &self; }
4046         const LDKCOption_WriteableScoreZ* operator ->() const { return &self; }
4047 };
4048 class CResult_FundingCreatedDecodeErrorZ {
4049 private:
4050         LDKCResult_FundingCreatedDecodeErrorZ self;
4051 public:
4052         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
4053         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
4054         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
4055         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
4056         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
4057         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
4058         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
4059         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
4060         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
4061         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
4062 };
4063 class CResult_ChannelAnnouncementDecodeErrorZ {
4064 private:
4065         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
4066 public:
4067         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
4068         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
4069         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
4070         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
4071         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
4072         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
4073         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
4074         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
4075         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
4076         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4077 };
4078 class CVec_OutPointZ {
4079 private:
4080         LDKCVec_OutPointZ self;
4081 public:
4082         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
4083         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
4084         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
4085         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
4086         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
4087         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
4088         LDKCVec_OutPointZ* operator &() { return &self; }
4089         LDKCVec_OutPointZ* operator ->() { return &self; }
4090         const LDKCVec_OutPointZ* operator &() const { return &self; }
4091         const LDKCVec_OutPointZ* operator ->() const { return &self; }
4092 };
4093 class CResult_PositiveTimestampCreationErrorZ {
4094 private:
4095         LDKCResult_PositiveTimestampCreationErrorZ self;
4096 public:
4097         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
4098         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
4099         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
4100         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
4101         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
4102         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
4103         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
4104         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
4105         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
4106         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
4107 };
4108 class CResult_CVec_u8ZPeerHandleErrorZ {
4109 private:
4110         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
4111 public:
4112         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
4113         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
4114         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
4115         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
4116         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
4117         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; }
4118         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
4119         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
4120         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
4121         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
4122 };
4123 class CResult_InvoiceFeaturesDecodeErrorZ {
4124 private:
4125         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
4126 public:
4127         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
4128         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
4129         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
4130         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
4131         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
4132         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
4133         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
4134         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
4135         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
4136         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
4137 };
4138 class COption_NetworkUpdateZ {
4139 private:
4140         LDKCOption_NetworkUpdateZ self;
4141 public:
4142         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
4143         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
4144         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
4145         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
4146         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
4147         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
4148         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
4149         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
4150         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
4151         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
4152 };
4153 class COption_u64Z {
4154 private:
4155         LDKCOption_u64Z self;
4156 public:
4157         COption_u64Z(const COption_u64Z&) = delete;
4158         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
4159         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
4160         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
4161         ~COption_u64Z() { COption_u64Z_free(self); }
4162         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
4163         LDKCOption_u64Z* operator &() { return &self; }
4164         LDKCOption_u64Z* operator ->() { return &self; }
4165         const LDKCOption_u64Z* operator &() const { return &self; }
4166         const LDKCOption_u64Z* operator ->() const { return &self; }
4167 };
4168 class CResult_TxOutAccessErrorZ {
4169 private:
4170         LDKCResult_TxOutAccessErrorZ self;
4171 public:
4172         CResult_TxOutAccessErrorZ(const CResult_TxOutAccessErrorZ&) = delete;
4173         CResult_TxOutAccessErrorZ(CResult_TxOutAccessErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); }
4174         CResult_TxOutAccessErrorZ(LDKCResult_TxOutAccessErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); }
4175         operator LDKCResult_TxOutAccessErrorZ() && { LDKCResult_TxOutAccessErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); return res; }
4176         ~CResult_TxOutAccessErrorZ() { CResult_TxOutAccessErrorZ_free(self); }
4177         CResult_TxOutAccessErrorZ& operator=(CResult_TxOutAccessErrorZ&& o) { CResult_TxOutAccessErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); return *this; }
4178         LDKCResult_TxOutAccessErrorZ* operator &() { return &self; }
4179         LDKCResult_TxOutAccessErrorZ* operator ->() { return &self; }
4180         const LDKCResult_TxOutAccessErrorZ* operator &() const { return &self; }
4181         const LDKCResult_TxOutAccessErrorZ* operator ->() const { return &self; }
4182 };
4183 class CResult_TrustedClosingTransactionNoneZ {
4184 private:
4185         LDKCResult_TrustedClosingTransactionNoneZ self;
4186 public:
4187         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
4188         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
4189         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
4190         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
4191         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
4192         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
4193         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
4194         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
4195         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
4196         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
4197 };
4198 class CResult_PaymentPreimageAPIErrorZ {
4199 private:
4200         LDKCResult_PaymentPreimageAPIErrorZ self;
4201 public:
4202         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
4203         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
4204         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
4205         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
4206         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
4207         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
4208         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
4209         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
4210         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
4211         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
4212 };
4213 class CResult_ChannelMonitorUpdateDecodeErrorZ {
4214 private:
4215         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
4216 public:
4217         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
4218         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
4219         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
4220         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
4221         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
4222         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
4223         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
4224         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
4225         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
4226         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
4227 };
4228 class CResult_RouteHintDecodeErrorZ {
4229 private:
4230         LDKCResult_RouteHintDecodeErrorZ self;
4231 public:
4232         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
4233         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
4234         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
4235         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
4236         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
4237         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
4238         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
4239         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
4240         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
4241         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
4242 };
4243 class C2Tuple_PublicKeyTypeZ {
4244 private:
4245         LDKC2Tuple_PublicKeyTypeZ self;
4246 public:
4247         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
4248         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
4249         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
4250         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
4251         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
4252         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
4253         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
4254         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
4255         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
4256         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
4257 };
4258 class CResult_NetAddressDecodeErrorZ {
4259 private:
4260         LDKCResult_NetAddressDecodeErrorZ self;
4261 public:
4262         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
4263         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
4264         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
4265         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
4266         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
4267         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
4268         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
4269         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
4270         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
4271         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
4272 };
4273 class CResult_ChannelReestablishDecodeErrorZ {
4274 private:
4275         LDKCResult_ChannelReestablishDecodeErrorZ self;
4276 public:
4277         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
4278         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
4279         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
4280         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
4281         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
4282         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
4283         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
4284         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
4285         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
4286         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
4287 };
4288 class CResult_CommitmentSignedDecodeErrorZ {
4289 private:
4290         LDKCResult_CommitmentSignedDecodeErrorZ self;
4291 public:
4292         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
4293         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
4294         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
4295         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
4296         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
4297         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
4298         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
4299         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
4300         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
4301         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
4302 };
4303 class CVec_UpdateAddHTLCZ {
4304 private:
4305         LDKCVec_UpdateAddHTLCZ self;
4306 public:
4307         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
4308         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
4309         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
4310         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
4311         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
4312         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
4313         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
4314         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
4315         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
4316         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
4317 };
4318 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
4319 private:
4320         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
4321 public:
4322         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
4323         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4324         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4325         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
4326         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
4327         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
4328         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4329         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4330         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4331         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4332 };
4333 class COption_u32Z {
4334 private:
4335         LDKCOption_u32Z self;
4336 public:
4337         COption_u32Z(const COption_u32Z&) = delete;
4338         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
4339         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
4340         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
4341         ~COption_u32Z() { COption_u32Z_free(self); }
4342         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
4343         LDKCOption_u32Z* operator &() { return &self; }
4344         LDKCOption_u32Z* operator ->() { return &self; }
4345         const LDKCOption_u32Z* operator &() const { return &self; }
4346         const LDKCOption_u32Z* operator ->() const { return &self; }
4347 };
4348 class CResult_InitFeaturesDecodeErrorZ {
4349 private:
4350         LDKCResult_InitFeaturesDecodeErrorZ self;
4351 public:
4352         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
4353         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
4354         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
4355         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
4356         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
4357         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
4358         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
4359         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
4360         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
4361         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
4362 };
4363 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4364 private:
4365         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
4366 public:
4367         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
4368         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4369         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4370         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
4371         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
4372         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
4373         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
4374         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
4375         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
4376         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
4377 };
4378 class CResult_PaymentIdPaymentSendFailureZ {
4379 private:
4380         LDKCResult_PaymentIdPaymentSendFailureZ self;
4381 public:
4382         CResult_PaymentIdPaymentSendFailureZ(const CResult_PaymentIdPaymentSendFailureZ&) = delete;
4383         CResult_PaymentIdPaymentSendFailureZ(CResult_PaymentIdPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); }
4384         CResult_PaymentIdPaymentSendFailureZ(LDKCResult_PaymentIdPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); }
4385         operator LDKCResult_PaymentIdPaymentSendFailureZ() && { LDKCResult_PaymentIdPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); return res; }
4386         ~CResult_PaymentIdPaymentSendFailureZ() { CResult_PaymentIdPaymentSendFailureZ_free(self); }
4387         CResult_PaymentIdPaymentSendFailureZ& operator=(CResult_PaymentIdPaymentSendFailureZ&& o) { CResult_PaymentIdPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); return *this; }
4388         LDKCResult_PaymentIdPaymentSendFailureZ* operator &() { return &self; }
4389         LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() { return &self; }
4390         const LDKCResult_PaymentIdPaymentSendFailureZ* operator &() const { return &self; }
4391         const LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() const { return &self; }
4392 };
4393 class CResult_ReplyChannelRangeDecodeErrorZ {
4394 private:
4395         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
4396 public:
4397         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
4398         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
4399         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
4400         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
4401         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
4402         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
4403         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
4404         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
4405         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
4406         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4407 };
4408 class CResult_CommitmentTransactionDecodeErrorZ {
4409 private:
4410         LDKCResult_CommitmentTransactionDecodeErrorZ self;
4411 public:
4412         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
4413         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
4414         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
4415         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
4416         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
4417         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
4418         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4419         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4420         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4421         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4422 };
4423 class COption_C2Tuple_usizeTransactionZZ {
4424 private:
4425         LDKCOption_C2Tuple_usizeTransactionZZ self;
4426 public:
4427         COption_C2Tuple_usizeTransactionZZ(const COption_C2Tuple_usizeTransactionZZ&) = delete;
4428         COption_C2Tuple_usizeTransactionZZ(COption_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_usizeTransactionZZ)); }
4429         COption_C2Tuple_usizeTransactionZZ(LDKCOption_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); }
4430         operator LDKCOption_C2Tuple_usizeTransactionZZ() && { LDKCOption_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); return res; }
4431         ~COption_C2Tuple_usizeTransactionZZ() { COption_C2Tuple_usizeTransactionZZ_free(self); }
4432         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; }
4433         LDKCOption_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
4434         LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
4435         const LDKCOption_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
4436         const LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
4437 };
4438 class CResult_TransactionNoneZ {
4439 private:
4440         LDKCResult_TransactionNoneZ self;
4441 public:
4442         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
4443         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
4444         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
4445         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
4446         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
4447         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
4448         LDKCResult_TransactionNoneZ* operator &() { return &self; }
4449         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
4450         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
4451         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
4452 };
4453 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
4454 private:
4455         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
4456 public:
4457         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
4458         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4459         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4460         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
4461         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
4462         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
4463         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
4464         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
4465         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
4466         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
4467 };
4468 class CResult_PingDecodeErrorZ {
4469 private:
4470         LDKCResult_PingDecodeErrorZ self;
4471 public:
4472         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
4473         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
4474         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
4475         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
4476         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
4477         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
4478         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
4479         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
4480         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
4481         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
4482 };
4483 class CResult_GossipTimestampFilterDecodeErrorZ {
4484 private:
4485         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
4486 public:
4487         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
4488         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
4489         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
4490         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
4491         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
4492         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
4493         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
4494         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
4495         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
4496         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
4497 };
4498 class CResult_InvoiceSignOrCreationErrorZ {
4499 private:
4500         LDKCResult_InvoiceSignOrCreationErrorZ self;
4501 public:
4502         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
4503         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
4504         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
4505         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
4506         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
4507         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
4508         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
4509         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
4510         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
4511         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
4512 };
4513 class COption_FilterZ {
4514 private:
4515         LDKCOption_FilterZ self;
4516 public:
4517         COption_FilterZ(const COption_FilterZ&) = delete;
4518         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
4519         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
4520         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
4521         ~COption_FilterZ() { COption_FilterZ_free(self); }
4522         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
4523         LDKCOption_FilterZ* operator &() { return &self; }
4524         LDKCOption_FilterZ* operator ->() { return &self; }
4525         const LDKCOption_FilterZ* operator &() const { return &self; }
4526         const LDKCOption_FilterZ* operator ->() const { return &self; }
4527 };
4528 class CVec_TransactionOutputsZ {
4529 private:
4530         LDKCVec_TransactionOutputsZ self;
4531 public:
4532         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
4533         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
4534         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
4535         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
4536         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
4537         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
4538         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
4539         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
4540         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
4541         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
4542 };
4543 class CResult_ErrorMessageDecodeErrorZ {
4544 private:
4545         LDKCResult_ErrorMessageDecodeErrorZ self;
4546 public:
4547         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
4548         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
4549         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
4550         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
4551         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
4552         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
4553         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
4554         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
4555         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
4556         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
4557 };
4558 class CResult_OpenChannelDecodeErrorZ {
4559 private:
4560         LDKCResult_OpenChannelDecodeErrorZ self;
4561 public:
4562         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
4563         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
4564         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
4565         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
4566         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
4567         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
4568         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
4569         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
4570         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
4571         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
4572 };
4573 class CVec_CVec_u8ZZ {
4574 private:
4575         LDKCVec_CVec_u8ZZ self;
4576 public:
4577         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
4578         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
4579         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
4580         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
4581         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
4582         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; }
4583         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
4584         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
4585         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
4586         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
4587 };
4588 class CResult_ProbabilisticScorerDecodeErrorZ {
4589 private:
4590         LDKCResult_ProbabilisticScorerDecodeErrorZ self;
4591 public:
4592         CResult_ProbabilisticScorerDecodeErrorZ(const CResult_ProbabilisticScorerDecodeErrorZ&) = delete;
4593         CResult_ProbabilisticScorerDecodeErrorZ(CResult_ProbabilisticScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); }
4594         CResult_ProbabilisticScorerDecodeErrorZ(LDKCResult_ProbabilisticScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); }
4595         operator LDKCResult_ProbabilisticScorerDecodeErrorZ() && { LDKCResult_ProbabilisticScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ)); return res; }
4596         ~CResult_ProbabilisticScorerDecodeErrorZ() { CResult_ProbabilisticScorerDecodeErrorZ_free(self); }
4597         CResult_ProbabilisticScorerDecodeErrorZ& operator=(CResult_ProbabilisticScorerDecodeErrorZ&& o) { CResult_ProbabilisticScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScorerDecodeErrorZ)); return *this; }
4598         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() { return &self; }
4599         LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() { return &self; }
4600         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator &() const { return &self; }
4601         const LDKCResult_ProbabilisticScorerDecodeErrorZ* operator ->() const { return &self; }
4602 };
4603 class CResult_SecretKeyErrorZ {
4604 private:
4605         LDKCResult_SecretKeyErrorZ self;
4606 public:
4607         CResult_SecretKeyErrorZ(const CResult_SecretKeyErrorZ&) = delete;
4608         CResult_SecretKeyErrorZ(CResult_SecretKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); }
4609         CResult_SecretKeyErrorZ(LDKCResult_SecretKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); }
4610         operator LDKCResult_SecretKeyErrorZ() && { LDKCResult_SecretKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); return res; }
4611         ~CResult_SecretKeyErrorZ() { CResult_SecretKeyErrorZ_free(self); }
4612         CResult_SecretKeyErrorZ& operator=(CResult_SecretKeyErrorZ&& o) { CResult_SecretKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); return *this; }
4613         LDKCResult_SecretKeyErrorZ* operator &() { return &self; }
4614         LDKCResult_SecretKeyErrorZ* operator ->() { return &self; }
4615         const LDKCResult_SecretKeyErrorZ* operator &() const { return &self; }
4616         const LDKCResult_SecretKeyErrorZ* operator ->() const { return &self; }
4617 };
4618 class CResult_ShutdownScriptDecodeErrorZ {
4619 private:
4620         LDKCResult_ShutdownScriptDecodeErrorZ self;
4621 public:
4622         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
4623         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
4624         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
4625         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
4626         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
4627         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
4628         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
4629         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
4630         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
4631         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
4632 };
4633 class CResult_QueryChannelRangeDecodeErrorZ {
4634 private:
4635         LDKCResult_QueryChannelRangeDecodeErrorZ self;
4636 public:
4637         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
4638         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
4639         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
4640         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
4641         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
4642         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
4643         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
4644         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
4645         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
4646         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4647 };
4648 class CResult_TxCreationKeysDecodeErrorZ {
4649 private:
4650         LDKCResult_TxCreationKeysDecodeErrorZ self;
4651 public:
4652         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
4653         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
4654         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
4655         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
4656         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
4657         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
4658         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
4659         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
4660         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
4661         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
4662 };
4663 class C2Tuple_usizeTransactionZ {
4664 private:
4665         LDKC2Tuple_usizeTransactionZ self;
4666 public:
4667         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
4668         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
4669         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
4670         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
4671         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
4672         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
4673         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
4674         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
4675         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
4676         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
4677 };
4678 class CResult_ChannelFeaturesDecodeErrorZ {
4679 private:
4680         LDKCResult_ChannelFeaturesDecodeErrorZ self;
4681 public:
4682         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
4683         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
4684         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
4685         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
4686         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
4687         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
4688         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
4689         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
4690         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
4691         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
4692 };
4693 class CVec_ChannelMonitorZ {
4694 private:
4695         LDKCVec_ChannelMonitorZ self;
4696 public:
4697         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
4698         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
4699         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
4700         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
4701         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
4702         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
4703         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
4704         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
4705         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
4706         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
4707 };
4708 class CVec_TransactionZ {
4709 private:
4710         LDKCVec_TransactionZ self;
4711 public:
4712         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
4713         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
4714         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
4715         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
4716         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
4717         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
4718         LDKCVec_TransactionZ* operator &() { return &self; }
4719         LDKCVec_TransactionZ* operator ->() { return &self; }
4720         const LDKCVec_TransactionZ* operator &() const { return &self; }
4721         const LDKCVec_TransactionZ* operator ->() const { return &self; }
4722 };
4723 class CResult_ChannelReadyDecodeErrorZ {
4724 private:
4725         LDKCResult_ChannelReadyDecodeErrorZ self;
4726 public:
4727         CResult_ChannelReadyDecodeErrorZ(const CResult_ChannelReadyDecodeErrorZ&) = delete;
4728         CResult_ChannelReadyDecodeErrorZ(CResult_ChannelReadyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); }
4729         CResult_ChannelReadyDecodeErrorZ(LDKCResult_ChannelReadyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); }
4730         operator LDKCResult_ChannelReadyDecodeErrorZ() && { LDKCResult_ChannelReadyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReadyDecodeErrorZ)); return res; }
4731         ~CResult_ChannelReadyDecodeErrorZ() { CResult_ChannelReadyDecodeErrorZ_free(self); }
4732         CResult_ChannelReadyDecodeErrorZ& operator=(CResult_ChannelReadyDecodeErrorZ&& o) { CResult_ChannelReadyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReadyDecodeErrorZ)); return *this; }
4733         LDKCResult_ChannelReadyDecodeErrorZ* operator &() { return &self; }
4734         LDKCResult_ChannelReadyDecodeErrorZ* operator ->() { return &self; }
4735         const LDKCResult_ChannelReadyDecodeErrorZ* operator &() const { return &self; }
4736         const LDKCResult_ChannelReadyDecodeErrorZ* operator ->() const { return &self; }
4737 };
4738 class CResult_RouteHopDecodeErrorZ {
4739 private:
4740         LDKCResult_RouteHopDecodeErrorZ self;
4741 public:
4742         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
4743         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
4744         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
4745         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
4746         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
4747         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
4748         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
4749         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
4750         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
4751         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
4752 };
4753 class CResult_UpdateFeeDecodeErrorZ {
4754 private:
4755         LDKCResult_UpdateFeeDecodeErrorZ self;
4756 public:
4757         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
4758         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
4759         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
4760         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
4761         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
4762         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
4763         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
4764         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
4765         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
4766         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
4767 };
4768 class CResult_NodeAnnouncementDecodeErrorZ {
4769 private:
4770         LDKCResult_NodeAnnouncementDecodeErrorZ self;
4771 public:
4772         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
4773         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
4774         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
4775         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
4776         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
4777         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
4778         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4779         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4780         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4781         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4782 };
4783 class CVec_BalanceZ {
4784 private:
4785         LDKCVec_BalanceZ self;
4786 public:
4787         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
4788         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
4789         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
4790         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
4791         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
4792         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
4793         LDKCVec_BalanceZ* operator &() { return &self; }
4794         LDKCVec_BalanceZ* operator ->() { return &self; }
4795         const LDKCVec_BalanceZ* operator &() const { return &self; }
4796         const LDKCVec_BalanceZ* operator ->() const { return &self; }
4797 };
4798 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
4799 private:
4800         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
4801 public:
4802         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
4803         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4804         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4805         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
4806         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
4807         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
4808         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
4809         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
4810         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
4811         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
4812 };
4813 class CResult_boolLightningErrorZ {
4814 private:
4815         LDKCResult_boolLightningErrorZ self;
4816 public:
4817         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
4818         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
4819         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
4820         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
4821         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
4822         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
4823         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
4824         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
4825         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
4826         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
4827 };
4828 class CResult_TxCreationKeysErrorZ {
4829 private:
4830         LDKCResult_TxCreationKeysErrorZ self;
4831 public:
4832         CResult_TxCreationKeysErrorZ(const CResult_TxCreationKeysErrorZ&) = delete;
4833         CResult_TxCreationKeysErrorZ(CResult_TxCreationKeysErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); }
4834         CResult_TxCreationKeysErrorZ(LDKCResult_TxCreationKeysErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); }
4835         operator LDKCResult_TxCreationKeysErrorZ() && { LDKCResult_TxCreationKeysErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); return res; }
4836         ~CResult_TxCreationKeysErrorZ() { CResult_TxCreationKeysErrorZ_free(self); }
4837         CResult_TxCreationKeysErrorZ& operator=(CResult_TxCreationKeysErrorZ&& o) { CResult_TxCreationKeysErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); return *this; }
4838         LDKCResult_TxCreationKeysErrorZ* operator &() { return &self; }
4839         LDKCResult_TxCreationKeysErrorZ* operator ->() { return &self; }
4840         const LDKCResult_TxCreationKeysErrorZ* operator &() const { return &self; }
4841         const LDKCResult_TxCreationKeysErrorZ* operator ->() const { return &self; }
4842 };
4843 class CResult_NodeIdDecodeErrorZ {
4844 private:
4845         LDKCResult_NodeIdDecodeErrorZ self;
4846 public:
4847         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
4848         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
4849         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
4850         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
4851         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
4852         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
4853         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
4854         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
4855         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
4856         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
4857 };
4858 class C2Tuple_BlockHashChannelMonitorZ {
4859 private:
4860         LDKC2Tuple_BlockHashChannelMonitorZ self;
4861 public:
4862         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
4863         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
4864         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
4865         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
4866         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
4867         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
4868         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
4869         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
4870         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
4871         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
4872 };
4873 class CResult_ShutdownScriptInvalidShutdownScriptZ {
4874 private:
4875         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
4876 public:
4877         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
4878         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
4879         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
4880         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
4881         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
4882         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
4883         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
4884         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
4885         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
4886         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
4887 };
4888 class CResult_NodeAnnouncementInfoDecodeErrorZ {
4889 private:
4890         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
4891 public:
4892         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
4893         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
4894         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
4895         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
4896         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
4897         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
4898         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
4899         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
4900         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
4901         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
4902 };
4903 class CResult_COption_NetworkUpdateZDecodeErrorZ {
4904 private:
4905         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
4906 public:
4907         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
4908         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
4909         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
4910         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
4911         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
4912         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; }
4913         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
4914         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
4915         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
4916         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
4917 };
4918 class CResult_RecoverableSignatureNoneZ {
4919 private:
4920         LDKCResult_RecoverableSignatureNoneZ self;
4921 public:
4922         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
4923         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
4924         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
4925         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
4926         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
4927         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
4928         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
4929         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
4930         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
4931         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
4932 };
4933 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
4934 private:
4935         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
4936 public:
4937         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
4938         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
4939         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
4940         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
4941         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
4942         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; }
4943         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
4944         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
4945         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
4946         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
4947 };
4948 class CVec_UpdateFailMalformedHTLCZ {
4949 private:
4950         LDKCVec_UpdateFailMalformedHTLCZ self;
4951 public:
4952         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
4953         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
4954         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
4955         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
4956         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
4957         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
4958         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
4959         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
4960         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
4961         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
4962 };
4963 class CResult_FundingSignedDecodeErrorZ {
4964 private:
4965         LDKCResult_FundingSignedDecodeErrorZ self;
4966 public:
4967         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
4968         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
4969         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
4970         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
4971         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
4972         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
4973         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
4974         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
4975         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
4976         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
4977 };
4978 class CResult_NetworkGraphDecodeErrorZ {
4979 private:
4980         LDKCResult_NetworkGraphDecodeErrorZ self;
4981 public:
4982         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
4983         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
4984         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
4985         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
4986         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
4987         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
4988         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
4989         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
4990         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
4991         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
4992 };
4993 class CVec_RouteHopZ {
4994 private:
4995         LDKCVec_RouteHopZ self;
4996 public:
4997         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
4998         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
4999         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
5000         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
5001         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
5002         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
5003         LDKCVec_RouteHopZ* operator &() { return &self; }
5004         LDKCVec_RouteHopZ* operator ->() { return &self; }
5005         const LDKCVec_RouteHopZ* operator &() const { return &self; }
5006         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
5007 };
5008 class CResult_NodeInfoDecodeErrorZ {
5009 private:
5010         LDKCResult_NodeInfoDecodeErrorZ self;
5011 public:
5012         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
5013         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
5014         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
5015         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
5016         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
5017         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
5018         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
5019         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
5020         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
5021         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
5022 };
5023 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
5024 private:
5025         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
5026 public:
5027         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
5028         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5029         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
5030         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
5031         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
5032         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; }
5033         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
5034         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
5035         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
5036         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
5037 };
5038 class CResult_RouteLightningErrorZ {
5039 private:
5040         LDKCResult_RouteLightningErrorZ self;
5041 public:
5042         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
5043         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
5044         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
5045         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
5046         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
5047         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
5048         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
5049         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
5050         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
5051         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
5052 };
5053 class CResult_ChannelPublicKeysDecodeErrorZ {
5054 private:
5055         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
5056 public:
5057         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
5058         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
5059         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
5060         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
5061         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
5062         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
5063         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
5064         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
5065         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
5066         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
5067 };
5068 class CVec_u8Z {
5069 private:
5070         LDKCVec_u8Z self;
5071 public:
5072         CVec_u8Z(const CVec_u8Z&) = delete;
5073         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
5074         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
5075         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
5076         ~CVec_u8Z() { CVec_u8Z_free(self); }
5077         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
5078         LDKCVec_u8Z* operator &() { return &self; }
5079         LDKCVec_u8Z* operator ->() { return &self; }
5080         const LDKCVec_u8Z* operator &() const { return &self; }
5081         const LDKCVec_u8Z* operator ->() const { return &self; }
5082 };
5083 class CResult_NonePaymentSendFailureZ {
5084 private:
5085         LDKCResult_NonePaymentSendFailureZ self;
5086 public:
5087         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
5088         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
5089         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
5090         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
5091         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
5092         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
5093         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
5094         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
5095         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
5096         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
5097 };
5098 class CResult_ClosingSignedDecodeErrorZ {
5099 private:
5100         LDKCResult_ClosingSignedDecodeErrorZ self;
5101 public:
5102         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
5103         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
5104         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
5105         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
5106         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
5107         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
5108         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
5109         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
5110         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
5111         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
5112 };
5113 class CResult_HolderCommitmentTransactionDecodeErrorZ {
5114 private:
5115         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
5116 public:
5117         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
5118         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
5119         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
5120         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
5121         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
5122         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
5123         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
5124         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
5125         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
5126         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
5127 };
5128 class CVec_CResult_NoneAPIErrorZZ {
5129 private:
5130         LDKCVec_CResult_NoneAPIErrorZZ self;
5131 public:
5132         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
5133         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
5134         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
5135         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
5136         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
5137         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; }
5138         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
5139         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
5140         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
5141         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
5142 };
5143 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
5144 private:
5145         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
5146 public:
5147         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
5148         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5149         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5150         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
5151         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
5152         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
5153         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
5154         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
5155         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
5156         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
5157 };
5158 class CResult_ChannelCounterpartyDecodeErrorZ {
5159 private:
5160         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
5161 public:
5162         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
5163         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
5164         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
5165         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
5166         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
5167         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
5168         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
5169         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
5170         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
5171         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
5172 };
5173 class CResult_WarningMessageDecodeErrorZ {
5174 private:
5175         LDKCResult_WarningMessageDecodeErrorZ self;
5176 public:
5177         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
5178         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
5179         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
5180         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
5181         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
5182         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
5183         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
5184         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
5185         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
5186         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
5187 };
5188 class CResult_SignatureNoneZ {
5189 private:
5190         LDKCResult_SignatureNoneZ self;
5191 public:
5192         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
5193         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
5194         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
5195         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
5196         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
5197         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
5198         LDKCResult_SignatureNoneZ* operator &() { return &self; }
5199         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
5200         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
5201         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
5202 };
5203 class CVec_RouteHintHopZ {
5204 private:
5205         LDKCVec_RouteHintHopZ self;
5206 public:
5207         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
5208         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
5209         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
5210         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
5211         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
5212         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
5213         LDKCVec_RouteHintHopZ* operator &() { return &self; }
5214         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
5215         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
5216         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
5217 };
5218 class CResult_SecretKeyNoneZ {
5219 private:
5220         LDKCResult_SecretKeyNoneZ self;
5221 public:
5222         CResult_SecretKeyNoneZ(const CResult_SecretKeyNoneZ&) = delete;
5223         CResult_SecretKeyNoneZ(CResult_SecretKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); }
5224         CResult_SecretKeyNoneZ(LDKCResult_SecretKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); }
5225         operator LDKCResult_SecretKeyNoneZ() && { LDKCResult_SecretKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); return res; }
5226         ~CResult_SecretKeyNoneZ() { CResult_SecretKeyNoneZ_free(self); }
5227         CResult_SecretKeyNoneZ& operator=(CResult_SecretKeyNoneZ&& o) { CResult_SecretKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); return *this; }
5228         LDKCResult_SecretKeyNoneZ* operator &() { return &self; }
5229         LDKCResult_SecretKeyNoneZ* operator ->() { return &self; }
5230         const LDKCResult_SecretKeyNoneZ* operator &() const { return &self; }
5231         const LDKCResult_SecretKeyNoneZ* operator ->() const { return &self; }
5232 };
5233 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
5234 private:
5235         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
5236 public:
5237         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
5238         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5239         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5240         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
5241         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
5242         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; }
5243         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
5244         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
5245         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
5246         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
5247 };
5248 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
5249 private:
5250         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
5251 public:
5252         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
5253         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5254         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5255         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
5256         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
5257         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; }
5258         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
5259         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
5260         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
5261         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
5262 };
5263 class CResult_PaymentParametersDecodeErrorZ {
5264 private:
5265         LDKCResult_PaymentParametersDecodeErrorZ self;
5266 public:
5267         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
5268         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
5269         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
5270         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
5271         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
5272         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
5273         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
5274         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
5275         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
5276         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
5277 };
5278 class CResult_PaymentPurposeDecodeErrorZ {
5279 private:
5280         LDKCResult_PaymentPurposeDecodeErrorZ self;
5281 public:
5282         CResult_PaymentPurposeDecodeErrorZ(const CResult_PaymentPurposeDecodeErrorZ&) = delete;
5283         CResult_PaymentPurposeDecodeErrorZ(CResult_PaymentPurposeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); }
5284         CResult_PaymentPurposeDecodeErrorZ(LDKCResult_PaymentPurposeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); }
5285         operator LDKCResult_PaymentPurposeDecodeErrorZ() && { LDKCResult_PaymentPurposeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPurposeDecodeErrorZ)); return res; }
5286         ~CResult_PaymentPurposeDecodeErrorZ() { CResult_PaymentPurposeDecodeErrorZ_free(self); }
5287         CResult_PaymentPurposeDecodeErrorZ& operator=(CResult_PaymentPurposeDecodeErrorZ&& o) { CResult_PaymentPurposeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPurposeDecodeErrorZ)); return *this; }
5288         LDKCResult_PaymentPurposeDecodeErrorZ* operator &() { return &self; }
5289         LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() { return &self; }
5290         const LDKCResult_PaymentPurposeDecodeErrorZ* operator &() const { return &self; }
5291         const LDKCResult_PaymentPurposeDecodeErrorZ* operator ->() const { return &self; }
5292 };
5293 class CResult_InitDecodeErrorZ {
5294 private:
5295         LDKCResult_InitDecodeErrorZ self;
5296 public:
5297         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
5298         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
5299         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
5300         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
5301         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
5302         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
5303         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
5304         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
5305         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
5306         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
5307 };
5308 class CResult_OutPointDecodeErrorZ {
5309 private:
5310         LDKCResult_OutPointDecodeErrorZ self;
5311 public:
5312         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
5313         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
5314         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
5315         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
5316         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
5317         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
5318         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
5319         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
5320         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
5321         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
5322 };
5323 class CVec_ChannelDetailsZ {
5324 private:
5325         LDKCVec_ChannelDetailsZ self;
5326 public:
5327         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
5328         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
5329         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
5330         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
5331         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
5332         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
5333         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
5334         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
5335         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
5336         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
5337 };
5338 class CResult_SignDecodeErrorZ {
5339 private:
5340         LDKCResult_SignDecodeErrorZ self;
5341 public:
5342         CResult_SignDecodeErrorZ(const CResult_SignDecodeErrorZ&) = delete;
5343         CResult_SignDecodeErrorZ(CResult_SignDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); }
5344         CResult_SignDecodeErrorZ(LDKCResult_SignDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); }
5345         operator LDKCResult_SignDecodeErrorZ() && { LDKCResult_SignDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); return res; }
5346         ~CResult_SignDecodeErrorZ() { CResult_SignDecodeErrorZ_free(self); }
5347         CResult_SignDecodeErrorZ& operator=(CResult_SignDecodeErrorZ&& o) { CResult_SignDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); return *this; }
5348         LDKCResult_SignDecodeErrorZ* operator &() { return &self; }
5349         LDKCResult_SignDecodeErrorZ* operator ->() { return &self; }
5350         const LDKCResult_SignDecodeErrorZ* operator &() const { return &self; }
5351         const LDKCResult_SignDecodeErrorZ* operator ->() const { return &self; }
5352 };
5353 class C2Tuple_OutPointCVec_MonitorEventZZ {
5354 private:
5355         LDKC2Tuple_OutPointCVec_MonitorEventZZ self;
5356 public:
5357         C2Tuple_OutPointCVec_MonitorEventZZ(const C2Tuple_OutPointCVec_MonitorEventZZ&) = delete;
5358         C2Tuple_OutPointCVec_MonitorEventZZ(C2Tuple_OutPointCVec_MonitorEventZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorEventZZ)); }
5359         C2Tuple_OutPointCVec_MonitorEventZZ(LDKC2Tuple_OutPointCVec_MonitorEventZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorEventZZ)); }
5360         operator LDKC2Tuple_OutPointCVec_MonitorEventZZ() && { LDKC2Tuple_OutPointCVec_MonitorEventZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointCVec_MonitorEventZZ)); return res; }
5361         ~C2Tuple_OutPointCVec_MonitorEventZZ() { C2Tuple_OutPointCVec_MonitorEventZZ_free(self); }
5362         C2Tuple_OutPointCVec_MonitorEventZZ& operator=(C2Tuple_OutPointCVec_MonitorEventZZ&& o) { C2Tuple_OutPointCVec_MonitorEventZZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointCVec_MonitorEventZZ)); return *this; }
5363         LDKC2Tuple_OutPointCVec_MonitorEventZZ* operator &() { return &self; }
5364         LDKC2Tuple_OutPointCVec_MonitorEventZZ* operator ->() { return &self; }
5365         const LDKC2Tuple_OutPointCVec_MonitorEventZZ* operator &() const { return &self; }
5366         const LDKC2Tuple_OutPointCVec_MonitorEventZZ* operator ->() const { return &self; }
5367 };
5368 class CVec_MessageSendEventZ {
5369 private:
5370         LDKCVec_MessageSendEventZ self;
5371 public:
5372         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
5373         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
5374         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
5375         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
5376         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
5377         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
5378         LDKCVec_MessageSendEventZ* operator &() { return &self; }
5379         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
5380         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
5381         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
5382 };
5383 class COption_NetAddressZ {
5384 private:
5385         LDKCOption_NetAddressZ self;
5386 public:
5387         COption_NetAddressZ(const COption_NetAddressZ&) = delete;
5388         COption_NetAddressZ(COption_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetAddressZ)); }
5389         COption_NetAddressZ(LDKCOption_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetAddressZ)); }
5390         operator LDKCOption_NetAddressZ() && { LDKCOption_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCOption_NetAddressZ)); return res; }
5391         ~COption_NetAddressZ() { COption_NetAddressZ_free(self); }
5392         COption_NetAddressZ& operator=(COption_NetAddressZ&& o) { COption_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetAddressZ)); return *this; }
5393         LDKCOption_NetAddressZ* operator &() { return &self; }
5394         LDKCOption_NetAddressZ* operator ->() { return &self; }
5395         const LDKCOption_NetAddressZ* operator &() const { return &self; }
5396         const LDKCOption_NetAddressZ* operator ->() const { return &self; }
5397 };
5398 class C2Tuple_OutPointScriptZ {
5399 private:
5400         LDKC2Tuple_OutPointScriptZ self;
5401 public:
5402         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
5403         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
5404         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
5405         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
5406         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
5407         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
5408         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
5409         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
5410         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
5411         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
5412 };
5413 class CResult_RouteHintHopDecodeErrorZ {
5414 private:
5415         LDKCResult_RouteHintHopDecodeErrorZ self;
5416 public:
5417         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
5418         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
5419         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
5420         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
5421         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
5422         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
5423         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
5424         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
5425         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
5426         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
5427 };
5428 class CResult_C2Tuple_SignatureSignatureZNoneZ {
5429 private:
5430         LDKCResult_C2Tuple_SignatureSignatureZNoneZ self;
5431 public:
5432         CResult_C2Tuple_SignatureSignatureZNoneZ(const CResult_C2Tuple_SignatureSignatureZNoneZ&) = delete;
5433         CResult_C2Tuple_SignatureSignatureZNoneZ(CResult_C2Tuple_SignatureSignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureSignatureZNoneZ)); }
5434         CResult_C2Tuple_SignatureSignatureZNoneZ(LDKCResult_C2Tuple_SignatureSignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); }
5435         operator LDKCResult_C2Tuple_SignatureSignatureZNoneZ() && { LDKCResult_C2Tuple_SignatureSignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); return res; }
5436         ~CResult_C2Tuple_SignatureSignatureZNoneZ() { CResult_C2Tuple_SignatureSignatureZNoneZ_free(self); }
5437         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; }
5438         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() { return &self; }
5439         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() { return &self; }
5440         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() const { return &self; }
5441         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() const { return &self; }
5442 };
5443 class CVec_NodeAnnouncementZ {
5444 private:
5445         LDKCVec_NodeAnnouncementZ self;
5446 public:
5447         CVec_NodeAnnouncementZ(const CVec_NodeAnnouncementZ&) = delete;
5448         CVec_NodeAnnouncementZ(CVec_NodeAnnouncementZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); }
5449         CVec_NodeAnnouncementZ(LDKCVec_NodeAnnouncementZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); }
5450         operator LDKCVec_NodeAnnouncementZ() && { LDKCVec_NodeAnnouncementZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); return res; }
5451         ~CVec_NodeAnnouncementZ() { CVec_NodeAnnouncementZ_free(self); }
5452         CVec_NodeAnnouncementZ& operator=(CVec_NodeAnnouncementZ&& o) { CVec_NodeAnnouncementZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); return *this; }
5453         LDKCVec_NodeAnnouncementZ* operator &() { return &self; }
5454         LDKCVec_NodeAnnouncementZ* operator ->() { return &self; }
5455         const LDKCVec_NodeAnnouncementZ* operator &() const { return &self; }
5456         const LDKCVec_NodeAnnouncementZ* operator ->() const { return &self; }
5457 };
5458 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
5459 private:
5460         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
5461 public:
5462         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
5463         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
5464         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
5465         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
5466         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
5467         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
5468         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
5469         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
5470         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
5471         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
5472 };
5473 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
5474 private:
5475         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
5476 public:
5477         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
5478         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5479         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5480         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
5481         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
5482         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
5483         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
5484         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
5485         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
5486         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
5487 };
5488 class CVec_TxidZ {
5489 private:
5490         LDKCVec_TxidZ self;
5491 public:
5492         CVec_TxidZ(const CVec_TxidZ&) = delete;
5493         CVec_TxidZ(CVec_TxidZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxidZ)); }
5494         CVec_TxidZ(LDKCVec_TxidZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxidZ)); }
5495         operator LDKCVec_TxidZ() && { LDKCVec_TxidZ res = self; memset(&self, 0, sizeof(LDKCVec_TxidZ)); return res; }
5496         ~CVec_TxidZ() { CVec_TxidZ_free(self); }
5497         CVec_TxidZ& operator=(CVec_TxidZ&& o) { CVec_TxidZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxidZ)); return *this; }
5498         LDKCVec_TxidZ* operator &() { return &self; }
5499         LDKCVec_TxidZ* operator ->() { return &self; }
5500         const LDKCVec_TxidZ* operator &() const { return &self; }
5501         const LDKCVec_TxidZ* operator ->() const { return &self; }
5502 };
5503 class COption_AccessZ {
5504 private:
5505         LDKCOption_AccessZ self;
5506 public:
5507         COption_AccessZ(const COption_AccessZ&) = delete;
5508         COption_AccessZ(COption_AccessZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AccessZ)); }
5509         COption_AccessZ(LDKCOption_AccessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AccessZ)); }
5510         operator LDKCOption_AccessZ() && { LDKCOption_AccessZ res = self; memset(&self, 0, sizeof(LDKCOption_AccessZ)); return res; }
5511         ~COption_AccessZ() { COption_AccessZ_free(self); }
5512         COption_AccessZ& operator=(COption_AccessZ&& o) { COption_AccessZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AccessZ)); return *this; }
5513         LDKCOption_AccessZ* operator &() { return &self; }
5514         LDKCOption_AccessZ* operator ->() { return &self; }
5515         const LDKCOption_AccessZ* operator &() const { return &self; }
5516         const LDKCOption_AccessZ* operator ->() const { return &self; }
5517 };
5518 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
5519 private:
5520         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
5521 public:
5522         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
5523         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
5524         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
5525         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
5526         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
5527         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; }
5528         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
5529         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
5530         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
5531         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
5532 };
5533 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
5534 private:
5535         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
5536 public:
5537         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
5538         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5539         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5540         operator LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
5541         ~CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
5542         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; }
5543         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
5544         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
5545         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
5546         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
5547 };
5548 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
5549 private:
5550         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
5551 public:
5552         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
5553         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5554         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5555         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
5556         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
5557         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; }
5558         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
5559         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
5560         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
5561         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
5562 };
5563 class CResult_CVec_CVec_u8ZZNoneZ {
5564 private:
5565         LDKCResult_CVec_CVec_u8ZZNoneZ self;
5566 public:
5567         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
5568         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
5569         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
5570         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
5571         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
5572         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; }
5573         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
5574         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
5575         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
5576         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
5577 };
5578 class C2Tuple_SignatureSignatureZ {
5579 private:
5580         LDKC2Tuple_SignatureSignatureZ self;
5581 public:
5582         C2Tuple_SignatureSignatureZ(const C2Tuple_SignatureSignatureZ&) = delete;
5583         C2Tuple_SignatureSignatureZ(C2Tuple_SignatureSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); }
5584         C2Tuple_SignatureSignatureZ(LDKC2Tuple_SignatureSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); }
5585         operator LDKC2Tuple_SignatureSignatureZ() && { LDKC2Tuple_SignatureSignatureZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); return res; }
5586         ~C2Tuple_SignatureSignatureZ() { C2Tuple_SignatureSignatureZ_free(self); }
5587         C2Tuple_SignatureSignatureZ& operator=(C2Tuple_SignatureSignatureZ&& o) { C2Tuple_SignatureSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); return *this; }
5588         LDKC2Tuple_SignatureSignatureZ* operator &() { return &self; }
5589         LDKC2Tuple_SignatureSignatureZ* operator ->() { return &self; }
5590         const LDKC2Tuple_SignatureSignatureZ* operator &() const { return &self; }
5591         const LDKC2Tuple_SignatureSignatureZ* operator ->() const { return &self; }
5592 };
5593 class C2Tuple_PaymentHashPaymentSecretZ {
5594 private:
5595         LDKC2Tuple_PaymentHashPaymentSecretZ self;
5596 public:
5597         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
5598         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
5599         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
5600         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
5601         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
5602         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
5603         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
5604         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
5605         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
5606         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
5607 };
5608 class C2Tuple_BlockHashChannelManagerZ {
5609 private:
5610         LDKC2Tuple_BlockHashChannelManagerZ self;
5611 public:
5612         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
5613         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
5614         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
5615         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
5616         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
5617         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
5618         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
5619         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
5620         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
5621         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
5622 };
5623 class CResult_ChannelTransactionParametersDecodeErrorZ {
5624 private:
5625         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
5626 public:
5627         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
5628         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
5629         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
5630         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
5631         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
5632         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
5633         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
5634         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
5635         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
5636         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
5637 };
5638 class CResult_AcceptChannelDecodeErrorZ {
5639 private:
5640         LDKCResult_AcceptChannelDecodeErrorZ self;
5641 public:
5642         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
5643         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
5644         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
5645         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
5646         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
5647         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
5648         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
5649         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
5650         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
5651         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
5652 };
5653 class CVec_SignatureZ {
5654 private:
5655         LDKCVec_SignatureZ self;
5656 public:
5657         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
5658         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
5659         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
5660         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
5661         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
5662         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
5663         LDKCVec_SignatureZ* operator &() { return &self; }
5664         LDKCVec_SignatureZ* operator ->() { return &self; }
5665         const LDKCVec_SignatureZ* operator &() const { return &self; }
5666         const LDKCVec_SignatureZ* operator ->() const { return &self; }
5667 };
5668 class CVec_u64Z {
5669 private:
5670         LDKCVec_u64Z self;
5671 public:
5672         CVec_u64Z(const CVec_u64Z&) = delete;
5673         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
5674         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
5675         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
5676         ~CVec_u64Z() { CVec_u64Z_free(self); }
5677         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
5678         LDKCVec_u64Z* operator &() { return &self; }
5679         LDKCVec_u64Z* operator ->() { return &self; }
5680         const LDKCVec_u64Z* operator &() const { return &self; }
5681         const LDKCVec_u64Z* operator ->() const { return &self; }
5682 };
5683 class CResult_PongDecodeErrorZ {
5684 private:
5685         LDKCResult_PongDecodeErrorZ self;
5686 public:
5687         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
5688         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
5689         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
5690         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
5691         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
5692         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
5693         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
5694         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
5695         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
5696         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
5697 };
5698 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
5699 private:
5700         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
5701 public:
5702         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
5703         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5704         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5705         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
5706         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
5707         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
5708         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5709         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5710         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5711         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5712 };
5713 class C2Tuple_PaymentHashPaymentIdZ {
5714 private:
5715         LDKC2Tuple_PaymentHashPaymentIdZ self;
5716 public:
5717         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
5718         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
5719         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
5720         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
5721         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
5722         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
5723         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
5724         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
5725         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
5726         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
5727 };
5728 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
5729 private:
5730         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ self;
5731 public:
5732         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(const CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&) = delete;
5733         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5734         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5735         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return res; }
5736         ~CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); }
5737         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; }
5738         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() { return &self; }
5739         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() { return &self; }
5740         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() const { return &self; }
5741         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() const { return &self; }
5742 };
5743 class CResult_NoneErrorZ {
5744 private:
5745         LDKCResult_NoneErrorZ self;
5746 public:
5747         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
5748         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
5749         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
5750         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
5751         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
5752         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
5753         LDKCResult_NoneErrorZ* operator &() { return &self; }
5754         LDKCResult_NoneErrorZ* operator ->() { return &self; }
5755         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
5756         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
5757 };
5758 class CResult_StringErrorZ {
5759 private:
5760         LDKCResult_StringErrorZ self;
5761 public:
5762         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
5763         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
5764         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
5765         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
5766         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
5767         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
5768         LDKCResult_StringErrorZ* operator &() { return &self; }
5769         LDKCResult_StringErrorZ* operator ->() { return &self; }
5770         const LDKCResult_StringErrorZ* operator &() const { return &self; }
5771         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
5772 };
5773 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
5774 private:
5775         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
5776 public:
5777         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
5778         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
5779         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
5780         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
5781         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
5782         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; }
5783         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
5784         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
5785         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
5786         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
5787 };
5788 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
5789 private:
5790         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
5791 public:
5792         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
5793         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
5794         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
5795         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
5796         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
5797         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; }
5798         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
5799         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
5800         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
5801         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
5802 };
5803 class COption_EventZ {
5804 private:
5805         LDKCOption_EventZ self;
5806 public:
5807         COption_EventZ(const COption_EventZ&) = delete;
5808         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
5809         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
5810         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
5811         ~COption_EventZ() { COption_EventZ_free(self); }
5812         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
5813         LDKCOption_EventZ* operator &() { return &self; }
5814         LDKCOption_EventZ* operator ->() { return &self; }
5815         const LDKCOption_EventZ* operator &() const { return &self; }
5816         const LDKCOption_EventZ* operator ->() const { return &self; }
5817 };
5818 class CResult_ChannelTypeFeaturesDecodeErrorZ {
5819 private:
5820         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
5821 public:
5822         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
5823         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
5824         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
5825         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
5826         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
5827         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
5828         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
5829         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
5830         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
5831         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
5832 };
5833 class CResult_SiPrefixParseErrorZ {
5834 private:
5835         LDKCResult_SiPrefixParseErrorZ self;
5836 public:
5837         CResult_SiPrefixParseErrorZ(const CResult_SiPrefixParseErrorZ&) = delete;
5838         CResult_SiPrefixParseErrorZ(CResult_SiPrefixParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); }
5839         CResult_SiPrefixParseErrorZ(LDKCResult_SiPrefixParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); }
5840         operator LDKCResult_SiPrefixParseErrorZ() && { LDKCResult_SiPrefixParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixParseErrorZ)); return res; }
5841         ~CResult_SiPrefixParseErrorZ() { CResult_SiPrefixParseErrorZ_free(self); }
5842         CResult_SiPrefixParseErrorZ& operator=(CResult_SiPrefixParseErrorZ&& o) { CResult_SiPrefixParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixParseErrorZ)); return *this; }
5843         LDKCResult_SiPrefixParseErrorZ* operator &() { return &self; }
5844         LDKCResult_SiPrefixParseErrorZ* operator ->() { return &self; }
5845         const LDKCResult_SiPrefixParseErrorZ* operator &() const { return &self; }
5846         const LDKCResult_SiPrefixParseErrorZ* operator ->() const { return &self; }
5847 };
5848 class CVec_RouteHintZ {
5849 private:
5850         LDKCVec_RouteHintZ self;
5851 public:
5852         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
5853         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
5854         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
5855         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
5856         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
5857         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
5858         LDKCVec_RouteHintZ* operator &() { return &self; }
5859         LDKCVec_RouteHintZ* operator ->() { return &self; }
5860         const LDKCVec_RouteHintZ* operator &() const { return &self; }
5861         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
5862 };
5863 class COption_u16Z {
5864 private:
5865         LDKCOption_u16Z self;
5866 public:
5867         COption_u16Z(const COption_u16Z&) = delete;
5868         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
5869         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
5870         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
5871         ~COption_u16Z() { COption_u16Z_free(self); }
5872         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
5873         LDKCOption_u16Z* operator &() { return &self; }
5874         LDKCOption_u16Z* operator ->() { return &self; }
5875         const LDKCOption_u16Z* operator &() const { return &self; }
5876         const LDKCOption_u16Z* operator ->() const { return &self; }
5877 };
5878 class CVec_CVec_RouteHopZZ {
5879 private:
5880         LDKCVec_CVec_RouteHopZZ self;
5881 public:
5882         CVec_CVec_RouteHopZZ(const CVec_CVec_RouteHopZZ&) = delete;
5883         CVec_CVec_RouteHopZZ(CVec_CVec_RouteHopZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); }
5884         CVec_CVec_RouteHopZZ(LDKCVec_CVec_RouteHopZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); }
5885         operator LDKCVec_CVec_RouteHopZZ() && { LDKCVec_CVec_RouteHopZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); return res; }
5886         ~CVec_CVec_RouteHopZZ() { CVec_CVec_RouteHopZZ_free(self); }
5887         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; }
5888         LDKCVec_CVec_RouteHopZZ* operator &() { return &self; }
5889         LDKCVec_CVec_RouteHopZZ* operator ->() { return &self; }
5890         const LDKCVec_CVec_RouteHopZZ* operator &() const { return &self; }
5891         const LDKCVec_CVec_RouteHopZZ* operator ->() const { return &self; }
5892 };
5893 class CResult_TrustedCommitmentTransactionNoneZ {
5894 private:
5895         LDKCResult_TrustedCommitmentTransactionNoneZ self;
5896 public:
5897         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
5898         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
5899         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
5900         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
5901         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
5902         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
5903         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
5904         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
5905         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
5906         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
5907 };
5908 class CResult_FixedPenaltyScorerDecodeErrorZ {
5909 private:
5910         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
5911 public:
5912         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
5913         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
5914         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
5915         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
5916         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
5917         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
5918         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
5919         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
5920         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
5921         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
5922 };
5923 class CResult_NoneLightningErrorZ {
5924 private:
5925         LDKCResult_NoneLightningErrorZ self;
5926 public:
5927         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
5928         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
5929         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
5930         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
5931         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
5932         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
5933         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
5934         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
5935         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
5936         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
5937 };
5938 class CResult_NonePeerHandleErrorZ {
5939 private:
5940         LDKCResult_NonePeerHandleErrorZ self;
5941 public:
5942         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
5943         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
5944         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
5945         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
5946         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
5947         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
5948         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
5949         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
5950         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
5951         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
5952 };
5953 class CResult_COption_EventZDecodeErrorZ {
5954 private:
5955         LDKCResult_COption_EventZDecodeErrorZ self;
5956 public:
5957         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
5958         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
5959         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
5960         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
5961         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
5962         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; }
5963         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
5964         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
5965         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
5966         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
5967 };
5968 class CResult_CVec_SignatureZNoneZ {
5969 private:
5970         LDKCResult_CVec_SignatureZNoneZ self;
5971 public:
5972         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
5973         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
5974         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
5975         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
5976         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
5977         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; }
5978         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
5979         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
5980         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
5981         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
5982 };
5983 class COption_CVec_NetAddressZZ {
5984 private:
5985         LDKCOption_CVec_NetAddressZZ self;
5986 public:
5987         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
5988         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
5989         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
5990         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
5991         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
5992         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; }
5993         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
5994         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
5995         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
5996         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
5997 };
5998 class CResult__u832APIErrorZ {
5999 private:
6000         LDKCResult__u832APIErrorZ self;
6001 public:
6002         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
6003         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
6004         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
6005         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
6006         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
6007         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
6008         LDKCResult__u832APIErrorZ* operator &() { return &self; }
6009         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
6010         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
6011         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
6012 };
6013 class CResult_PaymentIdPaymentErrorZ {
6014 private:
6015         LDKCResult_PaymentIdPaymentErrorZ self;
6016 public:
6017         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
6018         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
6019         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
6020         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
6021         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
6022         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
6023         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
6024         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
6025         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
6026         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
6027 };
6028 class CResult_DescriptionCreationErrorZ {
6029 private:
6030         LDKCResult_DescriptionCreationErrorZ self;
6031 public:
6032         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
6033         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
6034         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
6035         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
6036         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
6037         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
6038         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
6039         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
6040         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
6041         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
6042 };
6043 class CResult_RoutingFeesDecodeErrorZ {
6044 private:
6045         LDKCResult_RoutingFeesDecodeErrorZ self;
6046 public:
6047         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
6048         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
6049         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
6050         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
6051         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
6052         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
6053         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
6054         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
6055         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
6056         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
6057 };
6058 class CResult_PayeePubKeyErrorZ {
6059 private:
6060         LDKCResult_PayeePubKeyErrorZ self;
6061 public:
6062         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
6063         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
6064         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
6065         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
6066         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
6067         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
6068         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
6069         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
6070         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
6071         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
6072 };
6073 class CResult_COption_MonitorEventZDecodeErrorZ {
6074 private:
6075         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
6076 public:
6077         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
6078         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
6079         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
6080         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
6081         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
6082         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; }
6083         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
6084         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
6085         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
6086         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
6087 };
6088 class CVec_C2Tuple_PublicKeyTypeZZ {
6089 private:
6090         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
6091 public:
6092         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
6093         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
6094         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
6095         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
6096         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
6097         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; }
6098         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
6099         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
6100         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
6101         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
6102 };
6103 class CResult_u32GraphSyncErrorZ {
6104 private:
6105         LDKCResult_u32GraphSyncErrorZ self;
6106 public:
6107         CResult_u32GraphSyncErrorZ(const CResult_u32GraphSyncErrorZ&) = delete;
6108         CResult_u32GraphSyncErrorZ(CResult_u32GraphSyncErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); }
6109         CResult_u32GraphSyncErrorZ(LDKCResult_u32GraphSyncErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); }
6110         operator LDKCResult_u32GraphSyncErrorZ() && { LDKCResult_u32GraphSyncErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_u32GraphSyncErrorZ)); return res; }
6111         ~CResult_u32GraphSyncErrorZ() { CResult_u32GraphSyncErrorZ_free(self); }
6112         CResult_u32GraphSyncErrorZ& operator=(CResult_u32GraphSyncErrorZ&& o) { CResult_u32GraphSyncErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_u32GraphSyncErrorZ)); return *this; }
6113         LDKCResult_u32GraphSyncErrorZ* operator &() { return &self; }
6114         LDKCResult_u32GraphSyncErrorZ* operator ->() { return &self; }
6115         const LDKCResult_u32GraphSyncErrorZ* operator &() const { return &self; }
6116         const LDKCResult_u32GraphSyncErrorZ* operator ->() const { return &self; }
6117 };
6118 class CResult_InvoiceSemanticErrorZ {
6119 private:
6120         LDKCResult_InvoiceSemanticErrorZ self;
6121 public:
6122         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
6123         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
6124         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
6125         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
6126         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
6127         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
6128         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
6129         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
6130         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
6131         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
6132 };
6133 class CResult_UpdateAddHTLCDecodeErrorZ {
6134 private:
6135         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
6136 public:
6137         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
6138         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
6139         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
6140         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
6141         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
6142         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
6143         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
6144         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
6145         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
6146         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
6147 };
6148 class CResult_QueryShortChannelIdsDecodeErrorZ {
6149 private:
6150         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
6151 public:
6152         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
6153         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
6154         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
6155         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
6156         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
6157         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
6158         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
6159         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
6160         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
6161         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
6162 };
6163 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
6164 private:
6165         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
6166 public:
6167         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
6168         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
6169         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
6170         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
6171         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
6172         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
6173         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
6174         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
6175         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
6176         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
6177 };
6178 class CResult_NoneAPIErrorZ {
6179 private:
6180         LDKCResult_NoneAPIErrorZ self;
6181 public:
6182         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
6183         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
6184         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
6185         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
6186         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
6187         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
6188         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
6189         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
6190         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
6191         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
6192 };
6193 class CVec_NetAddressZ {
6194 private:
6195         LDKCVec_NetAddressZ self;
6196 public:
6197         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
6198         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
6199         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
6200         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
6201         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
6202         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
6203         LDKCVec_NetAddressZ* operator &() { return &self; }
6204         LDKCVec_NetAddressZ* operator ->() { return &self; }
6205         const LDKCVec_NetAddressZ* operator &() const { return &self; }
6206         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
6207 };
6208 class CResult_ChannelDetailsDecodeErrorZ {
6209 private:
6210         LDKCResult_ChannelDetailsDecodeErrorZ self;
6211 public:
6212         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
6213         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
6214         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
6215         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
6216         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
6217         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
6218         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
6219         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
6220         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
6221         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
6222 };
6223 class CVec_PublicKeyZ {
6224 private:
6225         LDKCVec_PublicKeyZ self;
6226 public:
6227         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
6228         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
6229         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
6230         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
6231         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
6232         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
6233         LDKCVec_PublicKeyZ* operator &() { return &self; }
6234         LDKCVec_PublicKeyZ* operator ->() { return &self; }
6235         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
6236         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
6237 };
6238 class CVec_C2Tuple_usizeTransactionZZ {
6239 private:
6240         LDKCVec_C2Tuple_usizeTransactionZZ self;
6241 public:
6242         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
6243         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
6244         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
6245         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
6246         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
6247         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; }
6248         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
6249         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
6250         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
6251         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
6252 };
6253 class CVec_PhantomRouteHintsZ {
6254 private:
6255         LDKCVec_PhantomRouteHintsZ self;
6256 public:
6257         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
6258         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
6259         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
6260         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
6261         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
6262         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
6263         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
6264         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
6265         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
6266         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
6267 };
6268 class COption_MonitorEventZ {
6269 private:
6270         LDKCOption_MonitorEventZ self;
6271 public:
6272         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
6273         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
6274         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
6275         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
6276         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
6277         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
6278         LDKCOption_MonitorEventZ* operator &() { return &self; }
6279         LDKCOption_MonitorEventZ* operator ->() { return &self; }
6280         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
6281         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
6282 };
6283 class COption_TypeZ {
6284 private:
6285         LDKCOption_TypeZ self;
6286 public:
6287         COption_TypeZ(const COption_TypeZ&) = delete;
6288         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
6289         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
6290         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
6291         ~COption_TypeZ() { COption_TypeZ_free(self); }
6292         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
6293         LDKCOption_TypeZ* operator &() { return &self; }
6294         LDKCOption_TypeZ* operator ->() { return &self; }
6295         const LDKCOption_TypeZ* operator &() const { return &self; }
6296         const LDKCOption_TypeZ* operator ->() const { return &self; }
6297 };
6298 class CResult_COption_TypeZDecodeErrorZ {
6299 private:
6300         LDKCResult_COption_TypeZDecodeErrorZ self;
6301 public:
6302         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
6303         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
6304         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
6305         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
6306         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
6307         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; }
6308         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
6309         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
6310         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
6311         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
6312 };
6313 class C2Tuple_u32TxOutZ {
6314 private:
6315         LDKC2Tuple_u32TxOutZ self;
6316 public:
6317         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
6318         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
6319         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
6320         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
6321         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
6322         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
6323         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
6324         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
6325         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
6326         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
6327 };
6328 class CResult_UpdateFailHTLCDecodeErrorZ {
6329 private:
6330         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
6331 public:
6332         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
6333         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
6334         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
6335         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
6336         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
6337         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
6338         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
6339         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
6340         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
6341         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
6342 };
6343 class CResult_InvoiceParseOrSemanticErrorZ {
6344 private:
6345         LDKCResult_InvoiceParseOrSemanticErrorZ self;
6346 public:
6347         CResult_InvoiceParseOrSemanticErrorZ(const CResult_InvoiceParseOrSemanticErrorZ&) = delete;
6348         CResult_InvoiceParseOrSemanticErrorZ(CResult_InvoiceParseOrSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); }
6349         CResult_InvoiceParseOrSemanticErrorZ(LDKCResult_InvoiceParseOrSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); }
6350         operator LDKCResult_InvoiceParseOrSemanticErrorZ() && { LDKCResult_InvoiceParseOrSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceParseOrSemanticErrorZ)); return res; }
6351         ~CResult_InvoiceParseOrSemanticErrorZ() { CResult_InvoiceParseOrSemanticErrorZ_free(self); }
6352         CResult_InvoiceParseOrSemanticErrorZ& operator=(CResult_InvoiceParseOrSemanticErrorZ&& o) { CResult_InvoiceParseOrSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceParseOrSemanticErrorZ)); return *this; }
6353         LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() { return &self; }
6354         LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() { return &self; }
6355         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator &() const { return &self; }
6356         const LDKCResult_InvoiceParseOrSemanticErrorZ* operator ->() const { return &self; }
6357 };
6358 class CResult_PaymentSecretNoneZ {
6359 private:
6360         LDKCResult_PaymentSecretNoneZ self;
6361 public:
6362         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
6363         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
6364         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
6365         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
6366         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
6367         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
6368         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
6369         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
6370         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
6371         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
6372 };
6373 class CResult_ChannelConfigDecodeErrorZ {
6374 private:
6375         LDKCResult_ChannelConfigDecodeErrorZ self;
6376 public:
6377         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
6378         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
6379         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
6380         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
6381         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
6382         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
6383         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
6384         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
6385         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
6386         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
6387 };
6388 class CVec_PrivateRouteZ {
6389 private:
6390         LDKCVec_PrivateRouteZ self;
6391 public:
6392         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
6393         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
6394         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
6395         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
6396         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
6397         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
6398         LDKCVec_PrivateRouteZ* operator &() { return &self; }
6399         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
6400         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
6401         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
6402 };
6403 class CResult_SpendableOutputDescriptorDecodeErrorZ {
6404 private:
6405         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
6406 public:
6407         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
6408         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
6409         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
6410         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
6411         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
6412         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
6413         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6414         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6415         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6416         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6417 };
6418 class CResult_RevokeAndACKDecodeErrorZ {
6419 private:
6420         LDKCResult_RevokeAndACKDecodeErrorZ self;
6421 public:
6422         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
6423         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
6424         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
6425         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
6426         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
6427         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
6428         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
6429         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
6430         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
6431         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
6432 };
6433 class CResult_UnsignedChannelUpdateDecodeErrorZ {
6434 private:
6435         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
6436 public:
6437         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
6438         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
6439         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
6440         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
6441         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
6442         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
6443         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
6444         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6445         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6446         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6447 };
6448 class CResult_ShutdownDecodeErrorZ {
6449 private:
6450         LDKCResult_ShutdownDecodeErrorZ self;
6451 public:
6452         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
6453         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
6454         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
6455         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
6456         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
6457         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
6458         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
6459         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
6460         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
6461         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
6462 };
6463 class CVec_EventZ {
6464 private:
6465         LDKCVec_EventZ self;
6466 public:
6467         CVec_EventZ(const CVec_EventZ&) = delete;
6468         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
6469         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
6470         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
6471         ~CVec_EventZ() { CVec_EventZ_free(self); }
6472         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
6473         LDKCVec_EventZ* operator &() { return &self; }
6474         LDKCVec_EventZ* operator ->() { return &self; }
6475         const LDKCVec_EventZ* operator &() const { return &self; }
6476         const LDKCVec_EventZ* operator ->() const { return &self; }
6477 };
6478 class CResult_NoneSemanticErrorZ {
6479 private:
6480         LDKCResult_NoneSemanticErrorZ self;
6481 public:
6482         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
6483         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
6484         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
6485         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
6486         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
6487         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
6488         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
6489         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
6490         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
6491         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
6492 };
6493 class CVec_MonitorEventZ {
6494 private:
6495         LDKCVec_MonitorEventZ self;
6496 public:
6497         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
6498         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
6499         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
6500         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
6501         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
6502         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
6503         LDKCVec_MonitorEventZ* operator &() { return &self; }
6504         LDKCVec_MonitorEventZ* operator ->() { return &self; }
6505         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
6506         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
6507 };
6508 class CVec_PaymentPreimageZ {
6509 private:
6510         LDKCVec_PaymentPreimageZ self;
6511 public:
6512         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
6513         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
6514         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
6515         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
6516         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
6517         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
6518         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
6519         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
6520         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
6521         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
6522 };
6523 class CVec_C2Tuple_u32ScriptZZ {
6524 private:
6525         LDKCVec_C2Tuple_u32ScriptZZ self;
6526 public:
6527         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
6528         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
6529         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
6530         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
6531         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
6532         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; }
6533         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
6534         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
6535         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
6536         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
6537 };
6538 class CResult_NoneChannelMonitorUpdateErrZ {
6539 private:
6540         LDKCResult_NoneChannelMonitorUpdateErrZ self;
6541 public:
6542         CResult_NoneChannelMonitorUpdateErrZ(const CResult_NoneChannelMonitorUpdateErrZ&) = delete;
6543         CResult_NoneChannelMonitorUpdateErrZ(CResult_NoneChannelMonitorUpdateErrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); }
6544         CResult_NoneChannelMonitorUpdateErrZ(LDKCResult_NoneChannelMonitorUpdateErrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); }
6545         operator LDKCResult_NoneChannelMonitorUpdateErrZ() && { LDKCResult_NoneChannelMonitorUpdateErrZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); return res; }
6546         ~CResult_NoneChannelMonitorUpdateErrZ() { CResult_NoneChannelMonitorUpdateErrZ_free(self); }
6547         CResult_NoneChannelMonitorUpdateErrZ& operator=(CResult_NoneChannelMonitorUpdateErrZ&& o) { CResult_NoneChannelMonitorUpdateErrZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); return *this; }
6548         LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() { return &self; }
6549         LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() { return &self; }
6550         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() const { return &self; }
6551         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() const { return &self; }
6552 };
6553 class CResult_COption_ClosureReasonZDecodeErrorZ {
6554 private:
6555         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
6556 public:
6557         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
6558         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
6559         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
6560         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
6561         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
6562         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; }
6563         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
6564         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
6565         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
6566         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
6567 };
6568 class CResult_PublicKeyErrorZ {
6569 private:
6570         LDKCResult_PublicKeyErrorZ self;
6571 public:
6572         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
6573         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
6574         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
6575         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
6576         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
6577         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
6578         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
6579         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
6580         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
6581         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
6582 };
6583 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
6584 private:
6585         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
6586 public:
6587         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
6588         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6589         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6590         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
6591         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
6592         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
6593         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
6594         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
6595         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
6596         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
6597 };
6598 class CResult_NoneNoneZ {
6599 private:
6600         LDKCResult_NoneNoneZ self;
6601 public:
6602         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
6603         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
6604         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
6605         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
6606         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
6607         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
6608         LDKCResult_NoneNoneZ* operator &() { return &self; }
6609         LDKCResult_NoneNoneZ* operator ->() { return &self; }
6610         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
6611         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
6612 };
6613 class CResult_RouteParametersDecodeErrorZ {
6614 private:
6615         LDKCResult_RouteParametersDecodeErrorZ self;
6616 public:
6617         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
6618         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
6619         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
6620         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
6621         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
6622         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
6623         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
6624         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
6625         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
6626         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
6627 };
6628 class COption_ClosureReasonZ {
6629 private:
6630         LDKCOption_ClosureReasonZ self;
6631 public:
6632         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
6633         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
6634         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
6635         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
6636         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
6637         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
6638         LDKCOption_ClosureReasonZ* operator &() { return &self; }
6639         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
6640         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
6641         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
6642 };
6643 class CVec_APIErrorZ {
6644 private:
6645         LDKCVec_APIErrorZ self;
6646 public:
6647         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
6648         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
6649         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
6650         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
6651         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
6652         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
6653         LDKCVec_APIErrorZ* operator &() { return &self; }
6654         LDKCVec_APIErrorZ* operator ->() { return &self; }
6655         const LDKCVec_APIErrorZ* operator &() const { return &self; }
6656         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
6657 };
6658 class CResult_PrivateRouteCreationErrorZ {
6659 private:
6660         LDKCResult_PrivateRouteCreationErrorZ self;
6661 public:
6662         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
6663         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
6664         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
6665         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
6666         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
6667         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
6668         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
6669         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
6670         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
6671         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
6672 };
6673 class CResult_boolPeerHandleErrorZ {
6674 private:
6675         LDKCResult_boolPeerHandleErrorZ self;
6676 public:
6677         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
6678         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
6679         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
6680         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
6681         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
6682         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
6683         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
6684         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
6685         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
6686         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
6687 };
6688 class CResult_ChannelUpdateDecodeErrorZ {
6689 private:
6690         LDKCResult_ChannelUpdateDecodeErrorZ self;
6691 public:
6692         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
6693         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
6694         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
6695         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
6696         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
6697         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
6698         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
6699         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6700         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6701         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6702 };
6703 class CVec_UpdateFulfillHTLCZ {
6704 private:
6705         LDKCVec_UpdateFulfillHTLCZ self;
6706 public:
6707         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
6708         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
6709         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
6710         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
6711         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
6712         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
6713         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
6714         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
6715         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
6716         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
6717 };
6718 class CResult_AnnouncementSignaturesDecodeErrorZ {
6719 private:
6720         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
6721 public:
6722         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
6723         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
6724         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
6725         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
6726         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
6727         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
6728         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
6729         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
6730         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
6731         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
6732 };
6733 class CResult_UpdateFulfillHTLCDecodeErrorZ {
6734 private:
6735         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
6736 public:
6737         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
6738         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
6739         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
6740         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
6741         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
6742         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
6743         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
6744         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
6745         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
6746         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
6747 };
6748 class CResult_NodeFeaturesDecodeErrorZ {
6749 private:
6750         LDKCResult_NodeFeaturesDecodeErrorZ self;
6751 public:
6752         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
6753         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
6754         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
6755         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
6756         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
6757         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
6758         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
6759         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
6760         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
6761         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
6762 };
6763 class CVec_u5Z {
6764 private:
6765         LDKCVec_u5Z self;
6766 public:
6767         CVec_u5Z(const CVec_u5Z&) = delete;
6768         CVec_u5Z(CVec_u5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u5Z)); }
6769         CVec_u5Z(LDKCVec_u5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u5Z)); }
6770         operator LDKCVec_u5Z() && { LDKCVec_u5Z res = self; memset(&self, 0, sizeof(LDKCVec_u5Z)); return res; }
6771         ~CVec_u5Z() { CVec_u5Z_free(self); }
6772         CVec_u5Z& operator=(CVec_u5Z&& o) { CVec_u5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u5Z)); return *this; }
6773         LDKCVec_u5Z* operator &() { return &self; }
6774         LDKCVec_u5Z* operator ->() { return &self; }
6775         const LDKCVec_u5Z* operator &() const { return &self; }
6776         const LDKCVec_u5Z* operator ->() const { return &self; }
6777 };
6778 class CResult_InMemorySignerDecodeErrorZ {
6779 private:
6780         LDKCResult_InMemorySignerDecodeErrorZ self;
6781 public:
6782         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
6783         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
6784         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
6785         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
6786         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
6787         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
6788         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
6789         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
6790         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
6791         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
6792 };
6793 class CResult_PaymentSecretAPIErrorZ {
6794 private:
6795         LDKCResult_PaymentSecretAPIErrorZ self;
6796 public:
6797         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
6798         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
6799         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
6800         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
6801         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
6802         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
6803         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
6804         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
6805         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
6806         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
6807 };
6808 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
6809 private:
6810         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
6811 public:
6812         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
6813         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
6814         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
6815         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
6816         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
6817         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
6818         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
6819         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
6820         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
6821         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
6822 };
6823 class CResult_SignedRawInvoiceParseErrorZ {
6824 private:
6825         LDKCResult_SignedRawInvoiceParseErrorZ self;
6826 public:
6827         CResult_SignedRawInvoiceParseErrorZ(const CResult_SignedRawInvoiceParseErrorZ&) = delete;
6828         CResult_SignedRawInvoiceParseErrorZ(CResult_SignedRawInvoiceParseErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); }
6829         CResult_SignedRawInvoiceParseErrorZ(LDKCResult_SignedRawInvoiceParseErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); }
6830         operator LDKCResult_SignedRawInvoiceParseErrorZ() && { LDKCResult_SignedRawInvoiceParseErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceParseErrorZ)); return res; }
6831         ~CResult_SignedRawInvoiceParseErrorZ() { CResult_SignedRawInvoiceParseErrorZ_free(self); }
6832         CResult_SignedRawInvoiceParseErrorZ& operator=(CResult_SignedRawInvoiceParseErrorZ&& o) { CResult_SignedRawInvoiceParseErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceParseErrorZ)); return *this; }
6833         LDKCResult_SignedRawInvoiceParseErrorZ* operator &() { return &self; }
6834         LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() { return &self; }
6835         const LDKCResult_SignedRawInvoiceParseErrorZ* operator &() const { return &self; }
6836         const LDKCResult_SignedRawInvoiceParseErrorZ* operator ->() const { return &self; }
6837 };
6838 class C2Tuple_u32ScriptZ {
6839 private:
6840         LDKC2Tuple_u32ScriptZ self;
6841 public:
6842         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
6843         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
6844         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
6845         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
6846         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
6847         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
6848         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
6849         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
6850         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
6851         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
6852 };
6853 class CResult_RouteDecodeErrorZ {
6854 private:
6855         LDKCResult_RouteDecodeErrorZ self;
6856 public:
6857         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
6858         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
6859         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
6860         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
6861         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
6862         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
6863         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
6864         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
6865         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
6866         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
6867 };
6868 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
6869 private:
6870         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
6871 public:
6872         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
6873         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6874         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6875         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
6876         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
6877         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
6878         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
6879         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
6880         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
6881         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
6882 };
6883 class COption_NoneZ {
6884 private:
6885         LDKCOption_NoneZ self;
6886 public:
6887         COption_NoneZ(const COption_NoneZ&) = delete;
6888         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
6889         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
6890         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
6891         ~COption_NoneZ() { COption_NoneZ_free(self); }
6892         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
6893         LDKCOption_NoneZ* operator &() { return &self; }
6894         LDKCOption_NoneZ* operator ->() { return &self; }
6895         const LDKCOption_NoneZ* operator &() const { return &self; }
6896         const LDKCOption_NoneZ* operator ->() const { return &self; }
6897 };
6898 class CVec_TxOutZ {
6899 private:
6900         LDKCVec_TxOutZ self;
6901 public:
6902         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
6903         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
6904         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
6905         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
6906         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
6907         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
6908         LDKCVec_TxOutZ* operator &() { return &self; }
6909         LDKCVec_TxOutZ* operator ->() { return &self; }
6910         const LDKCVec_TxOutZ* operator &() const { return &self; }
6911         const LDKCVec_TxOutZ* operator ->() const { return &self; }
6912 };
6913 class CResult_ChannelUpdateInfoDecodeErrorZ {
6914 private:
6915         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
6916 public:
6917         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
6918         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
6919         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
6920         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
6921         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
6922         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
6923         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
6924         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
6925         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
6926         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
6927 };
6928 class CVec_C2Tuple_OutPointCVec_MonitorEventZZZ {
6929 private:
6930         LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ self;
6931 public:
6932         CVec_C2Tuple_OutPointCVec_MonitorEventZZZ(const CVec_C2Tuple_OutPointCVec_MonitorEventZZZ&) = delete;
6933         CVec_C2Tuple_OutPointCVec_MonitorEventZZZ(CVec_C2Tuple_OutPointCVec_MonitorEventZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorEventZZZ)); }
6934         CVec_C2Tuple_OutPointCVec_MonitorEventZZZ(LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ)); }
6935         operator LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ() && { LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ)); return res; }
6936         ~CVec_C2Tuple_OutPointCVec_MonitorEventZZZ() { CVec_C2Tuple_OutPointCVec_MonitorEventZZZ_free(self); }
6937         CVec_C2Tuple_OutPointCVec_MonitorEventZZZ& operator=(CVec_C2Tuple_OutPointCVec_MonitorEventZZZ&& o) { CVec_C2Tuple_OutPointCVec_MonitorEventZZZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_C2Tuple_OutPointCVec_MonitorEventZZZ)); return *this; }
6938         LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ* operator &() { return &self; }
6939         LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ* operator ->() { return &self; }
6940         const LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ* operator &() const { return &self; }
6941         const LDKCVec_C2Tuple_OutPointCVec_MonitorEventZZZ* operator ->() const { return &self; }
6942 };
6943 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
6944 private:
6945         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
6946 public:
6947         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
6948         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6949         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6950         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
6951         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
6952         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; }
6953         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
6954         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
6955         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
6956         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
6957 };
6958 class CVec_UpdateFailHTLCZ {
6959 private:
6960         LDKCVec_UpdateFailHTLCZ self;
6961 public:
6962         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
6963         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
6964         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
6965         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
6966         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
6967         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
6968         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
6969         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
6970         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
6971         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
6972 };
6973 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
6974 private:
6975         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
6976 public:
6977         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
6978         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6979         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6980         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
6981         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
6982         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
6983         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
6984         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
6985         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
6986         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
6987 };
6988
6989 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
6990         (self.broadcast_transaction)(self.this_arg, tx);
6991 }
6992 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
6993         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
6994         return ret;
6995 }
6996 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
6997         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
6998         return ret;
6999 }
7000 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
7001         (self.process_pending_events)(self.this_arg, handler);
7002 }
7003 inline void EventHandler::handle_event(const struct LDKEvent *NONNULL_PTR event) {
7004         (self.handle_event)(self.this_arg, event);
7005 }
7006 inline LDK::CResult_TxOutAccessErrorZ Access::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
7007         LDK::CResult_TxOutAccessErrorZ ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
7008         return ret;
7009 }
7010 inline void Listen::filtered_block_connected(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7011         (self.filtered_block_connected)(self.this_arg, header, txdata, height);
7012 }
7013 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
7014         (self.block_connected)(self.this_arg, block, height);
7015 }
7016 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
7017         (self.block_disconnected)(self.this_arg, header, height);
7018 }
7019 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
7020         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
7021 }
7022 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
7023         (self.transaction_unconfirmed)(self.this_arg, txid);
7024 }
7025 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
7026         (self.best_block_updated)(self.this_arg, header, height);
7027 }
7028 inline LDK::CVec_TxidZ Confirm::get_relevant_txids() {
7029         LDK::CVec_TxidZ ret = (self.get_relevant_txids)(self.this_arg);
7030         return ret;
7031 }
7032 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
7033         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
7034         return ret;
7035 }
7036 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update) {
7037         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_channel)(self.this_arg, funding_txo, update);
7038         return ret;
7039 }
7040 inline LDK::CVec_C2Tuple_OutPointCVec_MonitorEventZZZ Watch::release_pending_monitor_events() {
7041         LDK::CVec_C2Tuple_OutPointCVec_MonitorEventZZZ ret = (self.release_pending_monitor_events)(self.this_arg);
7042         return ret;
7043 }
7044 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
7045         (self.register_tx)(self.this_arg, txid, script_pubkey);
7046 }
7047 inline LDK::COption_C2Tuple_usizeTransactionZZ Filter::register_output(struct LDKWatchedOutput output) {
7048         LDK::COption_C2Tuple_usizeTransactionZZ ret = (self.register_output)(self.this_arg, output);
7049         return ret;
7050 }
7051 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) {
7052         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, source, target, usage);
7053         return ret;
7054 }
7055 inline void Score::payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
7056         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
7057 }
7058 inline void Score::payment_path_successful(struct LDKCVec_RouteHopZ path) {
7059         (self.payment_path_successful)(self.this_arg, path);
7060 }
7061 inline LDK::Score LockableScore::lock() {
7062         LDK::Score ret = (self.lock)(self.this_arg);
7063         return ret;
7064 }
7065 inline LDKPublicKey BaseSign::get_per_commitment_point(uint64_t idx) {
7066         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
7067         return ret;
7068 }
7069 inline LDKThirtyTwoBytes BaseSign::release_commitment_secret(uint64_t idx) {
7070         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
7071         return ret;
7072 }
7073 inline LDK::CResult_NoneNoneZ BaseSign::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
7074         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
7075         return ret;
7076 }
7077 inline LDKThirtyTwoBytes BaseSign::channel_keys_id() {
7078         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
7079         return ret;
7080 }
7081 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
7082         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
7083         return ret;
7084 }
7085 inline LDK::CResult_NoneNoneZ BaseSign::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
7086         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
7087         return ret;
7088 }
7089 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
7090         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
7091         return ret;
7092 }
7093 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]) {
7094         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
7095         return ret;
7096 }
7097 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) {
7098         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
7099         return ret;
7100 }
7101 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) {
7102         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
7103         return ret;
7104 }
7105 inline LDK::CResult_SignatureNoneZ BaseSign::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
7106         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
7107         return ret;
7108 }
7109 inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ BaseSign::sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
7110         LDK::CResult_C2Tuple_SignatureSignatureZNoneZ ret = (self.sign_channel_announcement)(self.this_arg, msg);
7111         return ret;
7112 }
7113 inline void BaseSign::ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
7114         (self.ready_channel)(self.this_arg, channel_parameters);
7115 }
7116 inline LDK::CResult_SecretKeyNoneZ KeysInterface::get_node_secret(enum LDKRecipient recipient) {
7117         LDK::CResult_SecretKeyNoneZ ret = (self.get_node_secret)(self.this_arg, recipient);
7118         return ret;
7119 }
7120 inline LDK::CVec_u8Z KeysInterface::get_destination_script() {
7121         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
7122         return ret;
7123 }
7124 inline LDK::ShutdownScript KeysInterface::get_shutdown_scriptpubkey() {
7125         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
7126         return ret;
7127 }
7128 inline LDK::Sign KeysInterface::get_channel_signer(bool inbound, uint64_t channel_value_satoshis) {
7129         LDK::Sign ret = (self.get_channel_signer)(self.this_arg, inbound, channel_value_satoshis);
7130         return ret;
7131 }
7132 inline LDKThirtyTwoBytes KeysInterface::get_secure_random_bytes() {
7133         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
7134         return ret;
7135 }
7136 inline LDK::CResult_SignDecodeErrorZ KeysInterface::read_chan_signer(struct LDKu8slice reader) {
7137         LDK::CResult_SignDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
7138         return ret;
7139 }
7140 inline LDK::CResult_RecoverableSignatureNoneZ KeysInterface::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient) {
7141         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, receipient);
7142         return ret;
7143 }
7144 inline LDKThirtyTwoBytes KeysInterface::get_inbound_payment_key_material() {
7145         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
7146         return ret;
7147 }
7148 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
7149         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
7150         return ret;
7151 }
7152 inline uint16_t Type::type_id() {
7153         uint16_t ret = (self.type_id)(self.this_arg);
7154         return ret;
7155 }
7156 inline LDK::Str Type::debug_str() {
7157         LDK::Str ret = (self.debug_str)(self.this_arg);
7158         return ret;
7159 }
7160 inline LDKPublicKey Payer::node_id() {
7161         LDKPublicKey ret = (self.node_id)(self.this_arg);
7162         return ret;
7163 }
7164 inline LDK::CVec_ChannelDetailsZ Payer::first_hops() {
7165         LDK::CVec_ChannelDetailsZ ret = (self.first_hops)(self.this_arg);
7166         return ret;
7167 }
7168 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret) {
7169         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_payment)(self.this_arg, route, payment_hash, payment_secret);
7170         return ret;
7171 }
7172 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage) {
7173         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_spontaneous_payment)(self.this_arg, route, payment_preimage);
7174         return ret;
7175 }
7176 inline LDK::CResult_NonePaymentSendFailureZ Payer::retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id) {
7177         LDK::CResult_NonePaymentSendFailureZ ret = (self.retry_payment)(self.this_arg, route, payment_id);
7178         return ret;
7179 }
7180 inline void Payer::abandon_payment(struct LDKThirtyTwoBytes payment_id) {
7181         (self.abandon_payment)(self.this_arg, payment_id);
7182 }
7183 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) {
7184         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, payment_hash, first_hops, scorer);
7185         return ret;
7186 }
7187 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
7188         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
7189         return ret;
7190 }
7191 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
7192         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
7193         return ret;
7194 }
7195 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
7196         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
7197         return ret;
7198 }
7199 inline void SocketDescriptor::disconnect_socket() {
7200         (self.disconnect_socket)(self.this_arg);
7201 }
7202 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
7203         bool ret = (self.eq)(self.this_arg, other_arg);
7204         return ret;
7205 }
7206 inline uint64_t SocketDescriptor::hash() {
7207         uint64_t ret = (self.hash)(self.this_arg);
7208         return ret;
7209 }
7210 inline LDK::CResult_NoneErrorZ Persister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
7211         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
7212         return ret;
7213 }
7214 inline LDK::CResult_NoneErrorZ Persister::persist_graph(const struct LDKNetworkGraph *NONNULL_PTR network_graph) {
7215         LDK::CResult_NoneErrorZ ret = (self.persist_graph)(self.this_arg, network_graph);
7216         return ret;
7217 }
7218 inline LDK::CResult_NoneErrorZ Persister::persist_scorer(const struct LDKWriteableScore *NONNULL_PTR scorer) {
7219         LDK::CResult_NoneErrorZ ret = (self.persist_scorer)(self.this_arg, scorer);
7220         return ret;
7221 }
7222 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg) {
7223         (self.handle_open_channel)(self.this_arg, their_node_id, their_features, msg);
7224 }
7225 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg) {
7226         (self.handle_accept_channel)(self.this_arg, their_node_id, their_features, msg);
7227 }
7228 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
7229         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
7230 }
7231 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
7232         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
7233 }
7234 inline void ChannelMessageHandler::handle_channel_ready(struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg) {
7235         (self.handle_channel_ready)(self.this_arg, their_node_id, msg);
7236 }
7237 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg) {
7238         (self.handle_shutdown)(self.this_arg, their_node_id, their_features, msg);
7239 }
7240 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
7241         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
7242 }
7243 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
7244         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
7245 }
7246 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
7247         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
7248 }
7249 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
7250         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
7251 }
7252 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
7253         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
7254 }
7255 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
7256         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
7257 }
7258 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
7259         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
7260 }
7261 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
7262         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
7263 }
7264 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
7265         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
7266 }
7267 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
7268         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
7269 }
7270 inline void ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg) {
7271         (self.peer_connected)(self.this_arg, their_node_id, msg);
7272 }
7273 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
7274         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
7275 }
7276 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
7277         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
7278 }
7279 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
7280         (self.handle_error)(self.this_arg, their_node_id, msg);
7281 }
7282 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
7283         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
7284         return ret;
7285 }
7286 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
7287         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
7288         return ret;
7289 }
7290 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
7291         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
7292         return ret;
7293 }
7294 inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount) {
7295         LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcements)(self.this_arg, starting_point, batch_amount);
7296         return ret;
7297 }
7298 inline LDK::CVec_NodeAnnouncementZ RoutingMessageHandler::get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount) {
7299         LDK::CVec_NodeAnnouncementZ ret = (self.get_next_node_announcements)(self.this_arg, starting_point, batch_amount);
7300         return ret;
7301 }
7302 inline void RoutingMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
7303         (self.peer_connected)(self.this_arg, their_node_id, init);
7304 }
7305 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
7306         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
7307         return ret;
7308 }
7309 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
7310         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
7311         return ret;
7312 }
7313 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
7314         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
7315         return ret;
7316 }
7317 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
7318         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
7319         return ret;
7320 }
7321 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
7322         (self.log)(self.this_arg, record);
7323 }
7324 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
7325         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
7326         return ret;
7327 }
7328 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) {
7329         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
7330         return ret;
7331 }
7332 }