5092728b2d5dd7985eb7dfd0c7a8a99eca37e43a
[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 ChannelManagerPersister;
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 BestBlock;
32 class AccessError;
33 class Access;
34 class Listen;
35 class Confirm;
36 class ChannelMonitorUpdateErr;
37 class Watch;
38 class Filter;
39 class WatchedOutput;
40 class PaymentPurpose;
41 class ClosureReason;
42 class Event;
43 class MessageSendEvent;
44 class MessageSendEventsProvider;
45 class EventsProvider;
46 class EventHandler;
47 class Score;
48 class LockableScore;
49 class MultiThreadedLockableScore;
50 class FixedPenaltyScorer;
51 class Scorer;
52 class ScoringParameters;
53 class ProbabilisticScoringParameters;
54 class InitFeatures;
55 class NodeFeatures;
56 class ChannelFeatures;
57 class InvoiceFeatures;
58 class ChannelTypeFeatures;
59 class DelayedPaymentOutputDescriptor;
60 class StaticPaymentOutputDescriptor;
61 class SpendableOutputDescriptor;
62 class BaseSign;
63 class Sign;
64 class Recipient;
65 class KeysInterface;
66 class InMemorySigner;
67 class KeysManager;
68 class PhantomKeysManager;
69 class FilesystemPersister;
70 class ChannelManager;
71 class ChainParameters;
72 class CounterpartyForwardingInfo;
73 class ChannelCounterparty;
74 class ChannelDetails;
75 class PaymentSendFailure;
76 class PhantomRouteHints;
77 class ChannelManagerReadArgs;
78 class ChannelHandshakeConfig;
79 class ChannelHandshakeLimits;
80 class ChannelConfig;
81 class UserConfig;
82 class APIError;
83 class OutPoint;
84 class CustomMessageReader;
85 class Type;
86 class InvoicePayer;
87 class Payer;
88 class Router;
89 class RetryAttempts;
90 class PaymentError;
91 class Invoice;
92 class SignedRawInvoice;
93 class RawInvoice;
94 class RawDataPart;
95 class PositiveTimestamp;
96 class SiPrefix;
97 class Currency;
98 class Sha256;
99 class Description;
100 class PayeePubKey;
101 class ExpiryTime;
102 class MinFinalCltvExpiry;
103 class Fallback;
104 class InvoiceSignature;
105 class PrivateRoute;
106 class CreationError;
107 class SemanticError;
108 class SignOrCreationError;
109 class ChannelMonitorUpdate;
110 class MonitorEvent;
111 class HTLCUpdate;
112 class Balance;
113 class ChannelMonitor;
114 class CustomMessageHandler;
115 class IgnoringMessageHandler;
116 class ErroringMessageHandler;
117 class MessageHandler;
118 class SocketDescriptor;
119 class PeerHandleError;
120 class PeerManager;
121 class NodeId;
122 class NetworkGraph;
123 class ReadOnlyNetworkGraph;
124 class NetworkUpdate;
125 class NetGraphMsgHandler;
126 class ChannelUpdateInfo;
127 class ChannelInfo;
128 class DirectedChannelInfo;
129 class EffectiveCapacity;
130 class RoutingFees;
131 class NodeAnnouncementInfo;
132 class NodeInfo;
133 class DecodeError;
134 class Init;
135 class ErrorMessage;
136 class WarningMessage;
137 class Ping;
138 class Pong;
139 class OpenChannel;
140 class AcceptChannel;
141 class FundingCreated;
142 class FundingSigned;
143 class FundingLocked;
144 class Shutdown;
145 class ClosingSignedFeeRange;
146 class ClosingSigned;
147 class UpdateAddHTLC;
148 class UpdateFulfillHTLC;
149 class UpdateFailHTLC;
150 class UpdateFailMalformedHTLC;
151 class CommitmentSigned;
152 class RevokeAndACK;
153 class UpdateFee;
154 class DataLossProtect;
155 class ChannelReestablish;
156 class AnnouncementSignatures;
157 class NetAddress;
158 class UnsignedNodeAnnouncement;
159 class NodeAnnouncement;
160 class UnsignedChannelAnnouncement;
161 class ChannelAnnouncement;
162 class UnsignedChannelUpdate;
163 class ChannelUpdate;
164 class QueryChannelRange;
165 class ReplyChannelRange;
166 class QueryShortChannelIds;
167 class ReplyShortChannelIdsEnd;
168 class GossipTimestampFilter;
169 class ErrorAction;
170 class LightningError;
171 class CommitmentUpdate;
172 class ChannelMessageHandler;
173 class RoutingMessageHandler;
174 class DefaultRouter;
175 class Level;
176 class Record;
177 class Logger;
178 class MonitorUpdateId;
179 class Persist;
180 class LockedChannelMonitor;
181 class ChainMonitor;
182 class CVec_SpendableOutputDescriptorZ;
183 class CResult_LockedChannelMonitorNoneZ;
184 class CResult_PhantomRouteHintsDecodeErrorZ;
185 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
186 class CResult_ScoringParametersDecodeErrorZ;
187 class CResult_HTLCUpdateDecodeErrorZ;
188 class C2Tuple_SignatureCVec_SignatureZZ;
189 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
190 class CVec_C2Tuple_u32TxOutZZ;
191 class CResult_ChannelInfoDecodeErrorZ;
192 class CResult_FundingCreatedDecodeErrorZ;
193 class CResult_ChannelAnnouncementDecodeErrorZ;
194 class CVec_OutPointZ;
195 class CResult_PositiveTimestampCreationErrorZ;
196 class CResult_CVec_u8ZPeerHandleErrorZ;
197 class CResult_InvoiceFeaturesDecodeErrorZ;
198 class COption_NetworkUpdateZ;
199 class COption_u64Z;
200 class CResult_TxOutAccessErrorZ;
201 class CResult_TrustedClosingTransactionNoneZ;
202 class CResult_PaymentPreimageAPIErrorZ;
203 class CResult_ChannelMonitorUpdateDecodeErrorZ;
204 class CResult_RouteHintDecodeErrorZ;
205 class C2Tuple_PublicKeyTypeZ;
206 class CResult_NetAddressDecodeErrorZ;
207 class CResult_ChannelReestablishDecodeErrorZ;
208 class CResult_CommitmentSignedDecodeErrorZ;
209 class CVec_UpdateAddHTLCZ;
210 class CResult_UnsignedNodeAnnouncementDecodeErrorZ;
211 class COption_u32Z;
212 class CResult_InitFeaturesDecodeErrorZ;
213 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ;
214 class CResult_PaymentIdPaymentSendFailureZ;
215 class CResult_ReplyChannelRangeDecodeErrorZ;
216 class CResult_CommitmentTransactionDecodeErrorZ;
217 class COption_C2Tuple_usizeTransactionZZ;
218 class CResult_TransactionNoneZ;
219 class CResult_SignedRawInvoiceNoneZ;
220 class CResult_ClosingSignedFeeRangeDecodeErrorZ;
221 class CResult_PingDecodeErrorZ;
222 class CResult_GossipTimestampFilterDecodeErrorZ;
223 class CResult_InvoiceSignOrCreationErrorZ;
224 class CVec_TransactionOutputsZ;
225 class CResult_ErrorMessageDecodeErrorZ;
226 class CResult_OpenChannelDecodeErrorZ;
227 class CVec_CVec_u8ZZ;
228 class COption_FilterZ;
229 class CResult_SecretKeyErrorZ;
230 class CResult_ShutdownScriptDecodeErrorZ;
231 class CResult_InvoiceNoneZ;
232 class CResult_QueryChannelRangeDecodeErrorZ;
233 class CResult_TxCreationKeysDecodeErrorZ;
234 class C2Tuple_usizeTransactionZ;
235 class CResult_ChannelFeaturesDecodeErrorZ;
236 class CVec_ChannelMonitorZ;
237 class CVec_TransactionZ;
238 class CResult_UpdateFeeDecodeErrorZ;
239 class CResult_RouteHopDecodeErrorZ;
240 class CResult_NodeAnnouncementDecodeErrorZ;
241 class CVec_BalanceZ;
242 class CResult_HTLCOutputInCommitmentDecodeErrorZ;
243 class CResult_boolLightningErrorZ;
244 class CResult_TxCreationKeysErrorZ;
245 class C2Tuple_BlockHashChannelMonitorZ;
246 class CResult_NodeIdDecodeErrorZ;
247 class CResult_ShutdownScriptInvalidShutdownScriptZ;
248 class CResult_RecoverableSignatureNoneZ;
249 class CResult_COption_NetworkUpdateZDecodeErrorZ;
250 class CResult_NodeAnnouncementInfoDecodeErrorZ;
251 class C3Tuple_RawInvoice_u832InvoiceSignatureZ;
252 class CVec_UpdateFailMalformedHTLCZ;
253 class CResult_FundingSignedDecodeErrorZ;
254 class CResult_NetworkGraphDecodeErrorZ;
255 class CVec_RouteHopZ;
256 class CVec_C2Tuple_BlockHashChannelMonitorZZ;
257 class CResult_NonePaymentSendFailureZ;
258 class CResult_RouteLightningErrorZ;
259 class CResult_ChannelPublicKeysDecodeErrorZ;
260 class CVec_u8Z;
261 class CResult_NodeInfoDecodeErrorZ;
262 class CResult_ClosingSignedDecodeErrorZ;
263 class CResult_HolderCommitmentTransactionDecodeErrorZ;
264 class CVec_CResult_NoneAPIErrorZZ;
265 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ;
266 class CResult_ChannelCounterpartyDecodeErrorZ;
267 class CResult_WarningMessageDecodeErrorZ;
268 class CResult_SignatureNoneZ;
269 class CVec_RouteHintHopZ;
270 class CResult_SecretKeyNoneZ;
271 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
272 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
273 class CResult_PaymentParametersDecodeErrorZ;
274 class CResult_InitDecodeErrorZ;
275 class CResult_OutPointDecodeErrorZ;
276 class CVec_ChannelDetailsZ;
277 class CResult_SignDecodeErrorZ;
278 class CVec_MessageSendEventZ;
279 class C2Tuple_OutPointScriptZ;
280 class CResult_RouteHintHopDecodeErrorZ;
281 class CResult_C2Tuple_SignatureSignatureZNoneZ;
282 class CVec_NodeAnnouncementZ;
283 class CResult_UpdateFailMalformedHTLCDecodeErrorZ;
284 class CResult_UnsignedChannelAnnouncementDecodeErrorZ;
285 class CVec_TxidZ;
286 class COption_AccessZ;
287 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
288 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
289 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
290 class CResult_CVec_CVec_u8ZZNoneZ;
291 class C2Tuple_SignatureSignatureZ;
292 class C2Tuple_PaymentHashPaymentSecretZ;
293 class C2Tuple_BlockHashChannelManagerZ;
294 class CResult_ChannelTransactionParametersDecodeErrorZ;
295 class CResult_AcceptChannelDecodeErrorZ;
296 class CVec_SignatureZ;
297 class CVec_u64Z;
298 class CResult_ScorerDecodeErrorZ;
299 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
300 class C2Tuple_PaymentHashPaymentIdZ;
301 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
302 class CResult_NoneErrorZ;
303 class CResult_StringErrorZ;
304 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
305 class CResult_PongDecodeErrorZ;
306 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
307 class COption_EventZ;
308 class CResult_ChannelTypeFeaturesDecodeErrorZ;
309 class CVec_RouteHintZ;
310 class COption_u16Z;
311 class CVec_CVec_RouteHopZZ;
312 class CResult_TrustedCommitmentTransactionNoneZ;
313 class CResult_FixedPenaltyScorerDecodeErrorZ;
314 class CResult_NoneLightningErrorZ;
315 class CResult_NonePeerHandleErrorZ;
316 class CResult_COption_EventZDecodeErrorZ;
317 class CResult_CVec_SignatureZNoneZ;
318 class COption_CVec_NetAddressZZ;
319 class CResult__u832APIErrorZ;
320 class CResult_PaymentIdPaymentErrorZ;
321 class CResult_DescriptionCreationErrorZ;
322 class CResult_COption_MonitorEventZDecodeErrorZ;
323 class CResult_PayeePubKeyErrorZ;
324 class CVec_C2Tuple_PublicKeyTypeZZ;
325 class CResult_RoutingFeesDecodeErrorZ;
326 class CResult_QueryShortChannelIdsDecodeErrorZ;
327 class CResult_InvoiceSemanticErrorZ;
328 class CResult_UpdateAddHTLCDecodeErrorZ;
329 class CVec_PhantomRouteHintsZ;
330 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
331 class CResult_NoneAPIErrorZ;
332 class CVec_NetAddressZ;
333 class CResult_ChannelDetailsDecodeErrorZ;
334 class CVec_C2Tuple_usizeTransactionZZ;
335 class CVec_PublicKeyZ;
336 class COption_MonitorEventZ;
337 class COption_TypeZ;
338 class CResult_COption_TypeZDecodeErrorZ;
339 class C2Tuple_u32TxOutZ;
340 class CResult_UpdateFailHTLCDecodeErrorZ;
341 class CResult_PaymentSecretNoneZ;
342 class CResult_ChannelConfigDecodeErrorZ;
343 class CVec_PrivateRouteZ;
344 class CResult_SpendableOutputDescriptorDecodeErrorZ;
345 class CResult_RevokeAndACKDecodeErrorZ;
346 class CResult_UnsignedChannelUpdateDecodeErrorZ;
347 class CResult_ShutdownDecodeErrorZ;
348 class CVec_EventZ;
349 class CResult_NoneSemanticErrorZ;
350 class CVec_MonitorEventZ;
351 class CVec_PaymentPreimageZ;
352 class CVec_C2Tuple_u32ScriptZZ;
353 class CResult_NoneChannelMonitorUpdateErrZ;
354 class CResult_COption_ClosureReasonZDecodeErrorZ;
355 class CResult_SiPrefixNoneZ;
356 class CResult_PublicKeyErrorZ;
357 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
358 class CResult_NoneNoneZ;
359 class CResult_RouteParametersDecodeErrorZ;
360 class COption_ClosureReasonZ;
361 class CVec_APIErrorZ;
362 class CResult_PrivateRouteCreationErrorZ;
363 class CResult_boolPeerHandleErrorZ;
364 class CResult_ChannelUpdateDecodeErrorZ;
365 class CVec_UpdateFulfillHTLCZ;
366 class CResult_AnnouncementSignaturesDecodeErrorZ;
367 class CResult_UpdateFulfillHTLCDecodeErrorZ;
368 class CResult_NodeFeaturesDecodeErrorZ;
369 class CVec_u5Z;
370 class CResult_InMemorySignerDecodeErrorZ;
371 class CResult_PaymentSecretAPIErrorZ;
372 class CResult_CounterpartyForwardingInfoDecodeErrorZ;
373 class C2Tuple_u32ScriptZ;
374 class CResult_ReplyShortChannelIdsEndDecodeErrorZ;
375 class CResult_RouteDecodeErrorZ;
376 class CResult_BuiltCommitmentTransactionDecodeErrorZ;
377 class COption_NoneZ;
378 class CVec_TxOutZ;
379 class CResult_ProbabilisticScoringParametersDecodeErrorZ;
380 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
381 class CResult_ChannelUpdateInfoDecodeErrorZ;
382 class CVec_UpdateFailHTLCZ;
383 class CResult_FundingLockedDecodeErrorZ;
384
385 class Str {
386 private:
387         LDKStr self;
388 public:
389         Str(const Str&) = delete;
390         Str(Str&& o) : self(o.self) { memset(&o, 0, sizeof(Str)); }
391         Str(LDKStr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStr)); }
392         operator LDKStr() && { LDKStr res = self; memset(&self, 0, sizeof(LDKStr)); return res; }
393         ~Str() { Str_free(self); }
394         Str& operator=(Str&& o) { Str_free(self); self = o.self; memset(&o, 0, sizeof(Str)); return *this; }
395         LDKStr* operator &() { return &self; }
396         LDKStr* operator ->() { return &self; }
397         const LDKStr* operator &() const { return &self; }
398         const LDKStr* operator ->() const { return &self; }
399 };
400 class CounterpartyCommitmentSecrets {
401 private:
402         LDKCounterpartyCommitmentSecrets self;
403 public:
404         CounterpartyCommitmentSecrets(const CounterpartyCommitmentSecrets&) = delete;
405         CounterpartyCommitmentSecrets(CounterpartyCommitmentSecrets&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); }
406         CounterpartyCommitmentSecrets(LDKCounterpartyCommitmentSecrets&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); }
407         operator LDKCounterpartyCommitmentSecrets() && { LDKCounterpartyCommitmentSecrets res = self; memset(&self, 0, sizeof(LDKCounterpartyCommitmentSecrets)); return res; }
408         ~CounterpartyCommitmentSecrets() { CounterpartyCommitmentSecrets_free(self); }
409         CounterpartyCommitmentSecrets& operator=(CounterpartyCommitmentSecrets&& o) { CounterpartyCommitmentSecrets_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyCommitmentSecrets)); return *this; }
410         LDKCounterpartyCommitmentSecrets* operator &() { return &self; }
411         LDKCounterpartyCommitmentSecrets* operator ->() { return &self; }
412         const LDKCounterpartyCommitmentSecrets* operator &() const { return &self; }
413         const LDKCounterpartyCommitmentSecrets* operator ->() const { return &self; }
414 };
415 class TxCreationKeys {
416 private:
417         LDKTxCreationKeys self;
418 public:
419         TxCreationKeys(const TxCreationKeys&) = delete;
420         TxCreationKeys(TxCreationKeys&& o) : self(o.self) { memset(&o, 0, sizeof(TxCreationKeys)); }
421         TxCreationKeys(LDKTxCreationKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTxCreationKeys)); }
422         operator LDKTxCreationKeys() && { LDKTxCreationKeys res = self; memset(&self, 0, sizeof(LDKTxCreationKeys)); return res; }
423         ~TxCreationKeys() { TxCreationKeys_free(self); }
424         TxCreationKeys& operator=(TxCreationKeys&& o) { TxCreationKeys_free(self); self = o.self; memset(&o, 0, sizeof(TxCreationKeys)); return *this; }
425         LDKTxCreationKeys* operator &() { return &self; }
426         LDKTxCreationKeys* operator ->() { return &self; }
427         const LDKTxCreationKeys* operator &() const { return &self; }
428         const LDKTxCreationKeys* operator ->() const { return &self; }
429 };
430 class ChannelPublicKeys {
431 private:
432         LDKChannelPublicKeys self;
433 public:
434         ChannelPublicKeys(const ChannelPublicKeys&) = delete;
435         ChannelPublicKeys(ChannelPublicKeys&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelPublicKeys)); }
436         ChannelPublicKeys(LDKChannelPublicKeys&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelPublicKeys)); }
437         operator LDKChannelPublicKeys() && { LDKChannelPublicKeys res = self; memset(&self, 0, sizeof(LDKChannelPublicKeys)); return res; }
438         ~ChannelPublicKeys() { ChannelPublicKeys_free(self); }
439         ChannelPublicKeys& operator=(ChannelPublicKeys&& o) { ChannelPublicKeys_free(self); self = o.self; memset(&o, 0, sizeof(ChannelPublicKeys)); return *this; }
440         LDKChannelPublicKeys* operator &() { return &self; }
441         LDKChannelPublicKeys* operator ->() { return &self; }
442         const LDKChannelPublicKeys* operator &() const { return &self; }
443         const LDKChannelPublicKeys* operator ->() const { return &self; }
444 };
445 class HTLCOutputInCommitment {
446 private:
447         LDKHTLCOutputInCommitment self;
448 public:
449         HTLCOutputInCommitment(const HTLCOutputInCommitment&) = delete;
450         HTLCOutputInCommitment(HTLCOutputInCommitment&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCOutputInCommitment)); }
451         HTLCOutputInCommitment(LDKHTLCOutputInCommitment&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCOutputInCommitment)); }
452         operator LDKHTLCOutputInCommitment() && { LDKHTLCOutputInCommitment res = self; memset(&self, 0, sizeof(LDKHTLCOutputInCommitment)); return res; }
453         ~HTLCOutputInCommitment() { HTLCOutputInCommitment_free(self); }
454         HTLCOutputInCommitment& operator=(HTLCOutputInCommitment&& o) { HTLCOutputInCommitment_free(self); self = o.self; memset(&o, 0, sizeof(HTLCOutputInCommitment)); return *this; }
455         LDKHTLCOutputInCommitment* operator &() { return &self; }
456         LDKHTLCOutputInCommitment* operator ->() { return &self; }
457         const LDKHTLCOutputInCommitment* operator &() const { return &self; }
458         const LDKHTLCOutputInCommitment* operator ->() const { return &self; }
459 };
460 class ChannelTransactionParameters {
461 private:
462         LDKChannelTransactionParameters self;
463 public:
464         ChannelTransactionParameters(const ChannelTransactionParameters&) = delete;
465         ChannelTransactionParameters(ChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTransactionParameters)); }
466         ChannelTransactionParameters(LDKChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTransactionParameters)); }
467         operator LDKChannelTransactionParameters() && { LDKChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKChannelTransactionParameters)); return res; }
468         ~ChannelTransactionParameters() { ChannelTransactionParameters_free(self); }
469         ChannelTransactionParameters& operator=(ChannelTransactionParameters&& o) { ChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTransactionParameters)); return *this; }
470         LDKChannelTransactionParameters* operator &() { return &self; }
471         LDKChannelTransactionParameters* operator ->() { return &self; }
472         const LDKChannelTransactionParameters* operator &() const { return &self; }
473         const LDKChannelTransactionParameters* operator ->() const { return &self; }
474 };
475 class CounterpartyChannelTransactionParameters {
476 private:
477         LDKCounterpartyChannelTransactionParameters self;
478 public:
479         CounterpartyChannelTransactionParameters(const CounterpartyChannelTransactionParameters&) = delete;
480         CounterpartyChannelTransactionParameters(CounterpartyChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); }
481         CounterpartyChannelTransactionParameters(LDKCounterpartyChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); }
482         operator LDKCounterpartyChannelTransactionParameters() && { LDKCounterpartyChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKCounterpartyChannelTransactionParameters)); return res; }
483         ~CounterpartyChannelTransactionParameters() { CounterpartyChannelTransactionParameters_free(self); }
484         CounterpartyChannelTransactionParameters& operator=(CounterpartyChannelTransactionParameters&& o) { CounterpartyChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyChannelTransactionParameters)); return *this; }
485         LDKCounterpartyChannelTransactionParameters* operator &() { return &self; }
486         LDKCounterpartyChannelTransactionParameters* operator ->() { return &self; }
487         const LDKCounterpartyChannelTransactionParameters* operator &() const { return &self; }
488         const LDKCounterpartyChannelTransactionParameters* operator ->() const { return &self; }
489 };
490 class DirectedChannelTransactionParameters {
491 private:
492         LDKDirectedChannelTransactionParameters self;
493 public:
494         DirectedChannelTransactionParameters(const DirectedChannelTransactionParameters&) = delete;
495         DirectedChannelTransactionParameters(DirectedChannelTransactionParameters&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); }
496         DirectedChannelTransactionParameters(LDKDirectedChannelTransactionParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelTransactionParameters)); }
497         operator LDKDirectedChannelTransactionParameters() && { LDKDirectedChannelTransactionParameters res = self; memset(&self, 0, sizeof(LDKDirectedChannelTransactionParameters)); return res; }
498         ~DirectedChannelTransactionParameters() { DirectedChannelTransactionParameters_free(self); }
499         DirectedChannelTransactionParameters& operator=(DirectedChannelTransactionParameters&& o) { DirectedChannelTransactionParameters_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelTransactionParameters)); return *this; }
500         LDKDirectedChannelTransactionParameters* operator &() { return &self; }
501         LDKDirectedChannelTransactionParameters* operator ->() { return &self; }
502         const LDKDirectedChannelTransactionParameters* operator &() const { return &self; }
503         const LDKDirectedChannelTransactionParameters* operator ->() const { return &self; }
504 };
505 class HolderCommitmentTransaction {
506 private:
507         LDKHolderCommitmentTransaction self;
508 public:
509         HolderCommitmentTransaction(const HolderCommitmentTransaction&) = delete;
510         HolderCommitmentTransaction(HolderCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(HolderCommitmentTransaction)); }
511         HolderCommitmentTransaction(LDKHolderCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHolderCommitmentTransaction)); }
512         operator LDKHolderCommitmentTransaction() && { LDKHolderCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKHolderCommitmentTransaction)); return res; }
513         ~HolderCommitmentTransaction() { HolderCommitmentTransaction_free(self); }
514         HolderCommitmentTransaction& operator=(HolderCommitmentTransaction&& o) { HolderCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(HolderCommitmentTransaction)); return *this; }
515         LDKHolderCommitmentTransaction* operator &() { return &self; }
516         LDKHolderCommitmentTransaction* operator ->() { return &self; }
517         const LDKHolderCommitmentTransaction* operator &() const { return &self; }
518         const LDKHolderCommitmentTransaction* operator ->() const { return &self; }
519 };
520 class BuiltCommitmentTransaction {
521 private:
522         LDKBuiltCommitmentTransaction self;
523 public:
524         BuiltCommitmentTransaction(const BuiltCommitmentTransaction&) = delete;
525         BuiltCommitmentTransaction(BuiltCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(BuiltCommitmentTransaction)); }
526         BuiltCommitmentTransaction(LDKBuiltCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBuiltCommitmentTransaction)); }
527         operator LDKBuiltCommitmentTransaction() && { LDKBuiltCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKBuiltCommitmentTransaction)); return res; }
528         ~BuiltCommitmentTransaction() { BuiltCommitmentTransaction_free(self); }
529         BuiltCommitmentTransaction& operator=(BuiltCommitmentTransaction&& o) { BuiltCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(BuiltCommitmentTransaction)); return *this; }
530         LDKBuiltCommitmentTransaction* operator &() { return &self; }
531         LDKBuiltCommitmentTransaction* operator ->() { return &self; }
532         const LDKBuiltCommitmentTransaction* operator &() const { return &self; }
533         const LDKBuiltCommitmentTransaction* operator ->() const { return &self; }
534 };
535 class ClosingTransaction {
536 private:
537         LDKClosingTransaction self;
538 public:
539         ClosingTransaction(const ClosingTransaction&) = delete;
540         ClosingTransaction(ClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingTransaction)); }
541         ClosingTransaction(LDKClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingTransaction)); }
542         operator LDKClosingTransaction() && { LDKClosingTransaction res = self; memset(&self, 0, sizeof(LDKClosingTransaction)); return res; }
543         ~ClosingTransaction() { ClosingTransaction_free(self); }
544         ClosingTransaction& operator=(ClosingTransaction&& o) { ClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(ClosingTransaction)); return *this; }
545         LDKClosingTransaction* operator &() { return &self; }
546         LDKClosingTransaction* operator ->() { return &self; }
547         const LDKClosingTransaction* operator &() const { return &self; }
548         const LDKClosingTransaction* operator ->() const { return &self; }
549 };
550 class TrustedClosingTransaction {
551 private:
552         LDKTrustedClosingTransaction self;
553 public:
554         TrustedClosingTransaction(const TrustedClosingTransaction&) = delete;
555         TrustedClosingTransaction(TrustedClosingTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedClosingTransaction)); }
556         TrustedClosingTransaction(LDKTrustedClosingTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedClosingTransaction)); }
557         operator LDKTrustedClosingTransaction() && { LDKTrustedClosingTransaction res = self; memset(&self, 0, sizeof(LDKTrustedClosingTransaction)); return res; }
558         ~TrustedClosingTransaction() { TrustedClosingTransaction_free(self); }
559         TrustedClosingTransaction& operator=(TrustedClosingTransaction&& o) { TrustedClosingTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedClosingTransaction)); return *this; }
560         LDKTrustedClosingTransaction* operator &() { return &self; }
561         LDKTrustedClosingTransaction* operator ->() { return &self; }
562         const LDKTrustedClosingTransaction* operator &() const { return &self; }
563         const LDKTrustedClosingTransaction* operator ->() const { return &self; }
564 };
565 class CommitmentTransaction {
566 private:
567         LDKCommitmentTransaction self;
568 public:
569         CommitmentTransaction(const CommitmentTransaction&) = delete;
570         CommitmentTransaction(CommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentTransaction)); }
571         CommitmentTransaction(LDKCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentTransaction)); }
572         operator LDKCommitmentTransaction() && { LDKCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKCommitmentTransaction)); return res; }
573         ~CommitmentTransaction() { CommitmentTransaction_free(self); }
574         CommitmentTransaction& operator=(CommitmentTransaction&& o) { CommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentTransaction)); return *this; }
575         LDKCommitmentTransaction* operator &() { return &self; }
576         LDKCommitmentTransaction* operator ->() { return &self; }
577         const LDKCommitmentTransaction* operator &() const { return &self; }
578         const LDKCommitmentTransaction* operator ->() const { return &self; }
579 };
580 class TrustedCommitmentTransaction {
581 private:
582         LDKTrustedCommitmentTransaction self;
583 public:
584         TrustedCommitmentTransaction(const TrustedCommitmentTransaction&) = delete;
585         TrustedCommitmentTransaction(TrustedCommitmentTransaction&& o) : self(o.self) { memset(&o, 0, sizeof(TrustedCommitmentTransaction)); }
586         TrustedCommitmentTransaction(LDKTrustedCommitmentTransaction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKTrustedCommitmentTransaction)); }
587         operator LDKTrustedCommitmentTransaction() && { LDKTrustedCommitmentTransaction res = self; memset(&self, 0, sizeof(LDKTrustedCommitmentTransaction)); return res; }
588         ~TrustedCommitmentTransaction() { TrustedCommitmentTransaction_free(self); }
589         TrustedCommitmentTransaction& operator=(TrustedCommitmentTransaction&& o) { TrustedCommitmentTransaction_free(self); self = o.self; memset(&o, 0, sizeof(TrustedCommitmentTransaction)); return *this; }
590         LDKTrustedCommitmentTransaction* operator &() { return &self; }
591         LDKTrustedCommitmentTransaction* operator ->() { return &self; }
592         const LDKTrustedCommitmentTransaction* operator &() const { return &self; }
593         const LDKTrustedCommitmentTransaction* operator ->() const { return &self; }
594 };
595 class ShutdownScript {
596 private:
597         LDKShutdownScript self;
598 public:
599         ShutdownScript(const ShutdownScript&) = delete;
600         ShutdownScript(ShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(ShutdownScript)); }
601         ShutdownScript(LDKShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdownScript)); }
602         operator LDKShutdownScript() && { LDKShutdownScript res = self; memset(&self, 0, sizeof(LDKShutdownScript)); return res; }
603         ~ShutdownScript() { ShutdownScript_free(self); }
604         ShutdownScript& operator=(ShutdownScript&& o) { ShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(ShutdownScript)); return *this; }
605         LDKShutdownScript* operator &() { return &self; }
606         LDKShutdownScript* operator ->() { return &self; }
607         const LDKShutdownScript* operator &() const { return &self; }
608         const LDKShutdownScript* operator ->() const { return &self; }
609 };
610 class InvalidShutdownScript {
611 private:
612         LDKInvalidShutdownScript self;
613 public:
614         InvalidShutdownScript(const InvalidShutdownScript&) = delete;
615         InvalidShutdownScript(InvalidShutdownScript&& o) : self(o.self) { memset(&o, 0, sizeof(InvalidShutdownScript)); }
616         InvalidShutdownScript(LDKInvalidShutdownScript&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvalidShutdownScript)); }
617         operator LDKInvalidShutdownScript() && { LDKInvalidShutdownScript res = self; memset(&self, 0, sizeof(LDKInvalidShutdownScript)); return res; }
618         ~InvalidShutdownScript() { InvalidShutdownScript_free(self); }
619         InvalidShutdownScript& operator=(InvalidShutdownScript&& o) { InvalidShutdownScript_free(self); self = o.self; memset(&o, 0, sizeof(InvalidShutdownScript)); return *this; }
620         LDKInvalidShutdownScript* operator &() { return &self; }
621         LDKInvalidShutdownScript* operator ->() { return &self; }
622         const LDKInvalidShutdownScript* operator &() const { return &self; }
623         const LDKInvalidShutdownScript* operator ->() const { return &self; }
624 };
625 class BackgroundProcessor {
626 private:
627         LDKBackgroundProcessor self;
628 public:
629         BackgroundProcessor(const BackgroundProcessor&) = delete;
630         BackgroundProcessor(BackgroundProcessor&& o) : self(o.self) { memset(&o, 0, sizeof(BackgroundProcessor)); }
631         BackgroundProcessor(LDKBackgroundProcessor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBackgroundProcessor)); }
632         operator LDKBackgroundProcessor() && { LDKBackgroundProcessor res = self; memset(&self, 0, sizeof(LDKBackgroundProcessor)); return res; }
633         ~BackgroundProcessor() { BackgroundProcessor_free(self); }
634         BackgroundProcessor& operator=(BackgroundProcessor&& o) { BackgroundProcessor_free(self); self = o.self; memset(&o, 0, sizeof(BackgroundProcessor)); return *this; }
635         LDKBackgroundProcessor* operator &() { return &self; }
636         LDKBackgroundProcessor* operator ->() { return &self; }
637         const LDKBackgroundProcessor* operator &() const { return &self; }
638         const LDKBackgroundProcessor* operator ->() const { return &self; }
639 };
640 class ChannelManagerPersister {
641 private:
642         LDKChannelManagerPersister self;
643 public:
644         ChannelManagerPersister(const ChannelManagerPersister&) = delete;
645         ChannelManagerPersister(ChannelManagerPersister&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerPersister)); }
646         ChannelManagerPersister(LDKChannelManagerPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerPersister)); }
647         operator LDKChannelManagerPersister() && { LDKChannelManagerPersister res = self; memset(&self, 0, sizeof(LDKChannelManagerPersister)); return res; }
648         ~ChannelManagerPersister() { ChannelManagerPersister_free(self); }
649         ChannelManagerPersister& operator=(ChannelManagerPersister&& o) { ChannelManagerPersister_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerPersister)); return *this; }
650         LDKChannelManagerPersister* operator &() { return &self; }
651         LDKChannelManagerPersister* operator ->() { return &self; }
652         const LDKChannelManagerPersister* operator &() const { return &self; }
653         const LDKChannelManagerPersister* operator ->() const { return &self; }
654         /**
655          *  Persist the given [`ChannelManager`] to disk, returning an error if persistence failed
656          *  (which will cause the [`BackgroundProcessor`] which called this method to exit.
657          * 
658          *  [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
659          */
660         inline LDK::CResult_NoneErrorZ persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager);
661 };
662 class RouteHop {
663 private:
664         LDKRouteHop self;
665 public:
666         RouteHop(const RouteHop&) = delete;
667         RouteHop(RouteHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHop)); }
668         RouteHop(LDKRouteHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHop)); }
669         operator LDKRouteHop() && { LDKRouteHop res = self; memset(&self, 0, sizeof(LDKRouteHop)); return res; }
670         ~RouteHop() { RouteHop_free(self); }
671         RouteHop& operator=(RouteHop&& o) { RouteHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHop)); return *this; }
672         LDKRouteHop* operator &() { return &self; }
673         LDKRouteHop* operator ->() { return &self; }
674         const LDKRouteHop* operator &() const { return &self; }
675         const LDKRouteHop* operator ->() const { return &self; }
676 };
677 class Route {
678 private:
679         LDKRoute self;
680 public:
681         Route(const Route&) = delete;
682         Route(Route&& o) : self(o.self) { memset(&o, 0, sizeof(Route)); }
683         Route(LDKRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoute)); }
684         operator LDKRoute() && { LDKRoute res = self; memset(&self, 0, sizeof(LDKRoute)); return res; }
685         ~Route() { Route_free(self); }
686         Route& operator=(Route&& o) { Route_free(self); self = o.self; memset(&o, 0, sizeof(Route)); return *this; }
687         LDKRoute* operator &() { return &self; }
688         LDKRoute* operator ->() { return &self; }
689         const LDKRoute* operator &() const { return &self; }
690         const LDKRoute* operator ->() const { return &self; }
691 };
692 class RouteParameters {
693 private:
694         LDKRouteParameters self;
695 public:
696         RouteParameters(const RouteParameters&) = delete;
697         RouteParameters(RouteParameters&& o) : self(o.self) { memset(&o, 0, sizeof(RouteParameters)); }
698         RouteParameters(LDKRouteParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteParameters)); }
699         operator LDKRouteParameters() && { LDKRouteParameters res = self; memset(&self, 0, sizeof(LDKRouteParameters)); return res; }
700         ~RouteParameters() { RouteParameters_free(self); }
701         RouteParameters& operator=(RouteParameters&& o) { RouteParameters_free(self); self = o.self; memset(&o, 0, sizeof(RouteParameters)); return *this; }
702         LDKRouteParameters* operator &() { return &self; }
703         LDKRouteParameters* operator ->() { return &self; }
704         const LDKRouteParameters* operator &() const { return &self; }
705         const LDKRouteParameters* operator ->() const { return &self; }
706 };
707 class PaymentParameters {
708 private:
709         LDKPaymentParameters self;
710 public:
711         PaymentParameters(const PaymentParameters&) = delete;
712         PaymentParameters(PaymentParameters&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentParameters)); }
713         PaymentParameters(LDKPaymentParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentParameters)); }
714         operator LDKPaymentParameters() && { LDKPaymentParameters res = self; memset(&self, 0, sizeof(LDKPaymentParameters)); return res; }
715         ~PaymentParameters() { PaymentParameters_free(self); }
716         PaymentParameters& operator=(PaymentParameters&& o) { PaymentParameters_free(self); self = o.self; memset(&o, 0, sizeof(PaymentParameters)); return *this; }
717         LDKPaymentParameters* operator &() { return &self; }
718         LDKPaymentParameters* operator ->() { return &self; }
719         const LDKPaymentParameters* operator &() const { return &self; }
720         const LDKPaymentParameters* operator ->() const { return &self; }
721 };
722 class RouteHint {
723 private:
724         LDKRouteHint self;
725 public:
726         RouteHint(const RouteHint&) = delete;
727         RouteHint(RouteHint&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHint)); }
728         RouteHint(LDKRouteHint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHint)); }
729         operator LDKRouteHint() && { LDKRouteHint res = self; memset(&self, 0, sizeof(LDKRouteHint)); return res; }
730         ~RouteHint() { RouteHint_free(self); }
731         RouteHint& operator=(RouteHint&& o) { RouteHint_free(self); self = o.self; memset(&o, 0, sizeof(RouteHint)); return *this; }
732         LDKRouteHint* operator &() { return &self; }
733         LDKRouteHint* operator ->() { return &self; }
734         const LDKRouteHint* operator &() const { return &self; }
735         const LDKRouteHint* operator ->() const { return &self; }
736 };
737 class RouteHintHop {
738 private:
739         LDKRouteHintHop self;
740 public:
741         RouteHintHop(const RouteHintHop&) = delete;
742         RouteHintHop(RouteHintHop&& o) : self(o.self) { memset(&o, 0, sizeof(RouteHintHop)); }
743         RouteHintHop(LDKRouteHintHop&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouteHintHop)); }
744         operator LDKRouteHintHop() && { LDKRouteHintHop res = self; memset(&self, 0, sizeof(LDKRouteHintHop)); return res; }
745         ~RouteHintHop() { RouteHintHop_free(self); }
746         RouteHintHop& operator=(RouteHintHop&& o) { RouteHintHop_free(self); self = o.self; memset(&o, 0, sizeof(RouteHintHop)); return *this; }
747         LDKRouteHintHop* operator &() { return &self; }
748         LDKRouteHintHop* operator ->() { return &self; }
749         const LDKRouteHintHop* operator &() const { return &self; }
750         const LDKRouteHintHop* operator ->() const { return &self; }
751 };
752 class BroadcasterInterface {
753 private:
754         LDKBroadcasterInterface self;
755 public:
756         BroadcasterInterface(const BroadcasterInterface&) = delete;
757         BroadcasterInterface(BroadcasterInterface&& o) : self(o.self) { memset(&o, 0, sizeof(BroadcasterInterface)); }
758         BroadcasterInterface(LDKBroadcasterInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBroadcasterInterface)); }
759         operator LDKBroadcasterInterface() && { LDKBroadcasterInterface res = self; memset(&self, 0, sizeof(LDKBroadcasterInterface)); return res; }
760         ~BroadcasterInterface() { BroadcasterInterface_free(self); }
761         BroadcasterInterface& operator=(BroadcasterInterface&& o) { BroadcasterInterface_free(self); self = o.self; memset(&o, 0, sizeof(BroadcasterInterface)); return *this; }
762         LDKBroadcasterInterface* operator &() { return &self; }
763         LDKBroadcasterInterface* operator ->() { return &self; }
764         const LDKBroadcasterInterface* operator &() const { return &self; }
765         const LDKBroadcasterInterface* operator ->() const { return &self; }
766         /**
767          *  Sends a transaction out to (hopefully) be mined.
768          */
769         inline void broadcast_transaction(struct LDKTransaction tx);
770 };
771 class ConfirmationTarget {
772 private:
773         LDKConfirmationTarget self;
774 public:
775         ConfirmationTarget(const ConfirmationTarget&) = delete;
776         ConfirmationTarget(ConfirmationTarget&& o) : self(o.self) { memset(&o, 0, sizeof(ConfirmationTarget)); }
777         ConfirmationTarget(LDKConfirmationTarget&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirmationTarget)); }
778         operator LDKConfirmationTarget() && { LDKConfirmationTarget res = self; memset(&self, 0, sizeof(LDKConfirmationTarget)); return res; }
779         ConfirmationTarget& operator=(ConfirmationTarget&& o) { self = o.self; memset(&o, 0, sizeof(ConfirmationTarget)); return *this; }
780         LDKConfirmationTarget* operator &() { return &self; }
781         LDKConfirmationTarget* operator ->() { return &self; }
782         const LDKConfirmationTarget* operator &() const { return &self; }
783         const LDKConfirmationTarget* operator ->() const { return &self; }
784 };
785 class FeeEstimator {
786 private:
787         LDKFeeEstimator self;
788 public:
789         FeeEstimator(const FeeEstimator&) = delete;
790         FeeEstimator(FeeEstimator&& o) : self(o.self) { memset(&o, 0, sizeof(FeeEstimator)); }
791         FeeEstimator(LDKFeeEstimator&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFeeEstimator)); }
792         operator LDKFeeEstimator() && { LDKFeeEstimator res = self; memset(&self, 0, sizeof(LDKFeeEstimator)); return res; }
793         ~FeeEstimator() { FeeEstimator_free(self); }
794         FeeEstimator& operator=(FeeEstimator&& o) { FeeEstimator_free(self); self = o.self; memset(&o, 0, sizeof(FeeEstimator)); return *this; }
795         LDKFeeEstimator* operator &() { return &self; }
796         LDKFeeEstimator* operator ->() { return &self; }
797         const LDKFeeEstimator* operator &() const { return &self; }
798         const LDKFeeEstimator* operator ->() const { return &self; }
799         /**
800          *  Gets estimated satoshis of fee required per 1000 Weight-Units.
801          * 
802          *  Must return a value no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later
803          *  round-downs don't put us below 1 satoshi-per-byte).
804          * 
805          *  This method can be implemented with the following unit conversions:
806          *   * max(satoshis-per-byte * 250, 253)
807          *   * max(satoshis-per-kbyte / 4, 253)
808          */
809         inline uint32_t get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target);
810 };
811 class BestBlock {
812 private:
813         LDKBestBlock self;
814 public:
815         BestBlock(const BestBlock&) = delete;
816         BestBlock(BestBlock&& o) : self(o.self) { memset(&o, 0, sizeof(BestBlock)); }
817         BestBlock(LDKBestBlock&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBestBlock)); }
818         operator LDKBestBlock() && { LDKBestBlock res = self; memset(&self, 0, sizeof(LDKBestBlock)); return res; }
819         ~BestBlock() { BestBlock_free(self); }
820         BestBlock& operator=(BestBlock&& o) { BestBlock_free(self); self = o.self; memset(&o, 0, sizeof(BestBlock)); return *this; }
821         LDKBestBlock* operator &() { return &self; }
822         LDKBestBlock* operator ->() { return &self; }
823         const LDKBestBlock* operator &() const { return &self; }
824         const LDKBestBlock* operator ->() const { return &self; }
825 };
826 class AccessError {
827 private:
828         LDKAccessError self;
829 public:
830         AccessError(const AccessError&) = delete;
831         AccessError(AccessError&& o) : self(o.self) { memset(&o, 0, sizeof(AccessError)); }
832         AccessError(LDKAccessError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccessError)); }
833         operator LDKAccessError() && { LDKAccessError res = self; memset(&self, 0, sizeof(LDKAccessError)); return res; }
834         AccessError& operator=(AccessError&& o) { self = o.self; memset(&o, 0, sizeof(AccessError)); return *this; }
835         LDKAccessError* operator &() { return &self; }
836         LDKAccessError* operator ->() { return &self; }
837         const LDKAccessError* operator &() const { return &self; }
838         const LDKAccessError* operator ->() const { return &self; }
839 };
840 class Access {
841 private:
842         LDKAccess self;
843 public:
844         Access(const Access&) = delete;
845         Access(Access&& o) : self(o.self) { memset(&o, 0, sizeof(Access)); }
846         Access(LDKAccess&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAccess)); }
847         operator LDKAccess() && { LDKAccess res = self; memset(&self, 0, sizeof(LDKAccess)); return res; }
848         ~Access() { Access_free(self); }
849         Access& operator=(Access&& o) { Access_free(self); self = o.self; memset(&o, 0, sizeof(Access)); return *this; }
850         LDKAccess* operator &() { return &self; }
851         LDKAccess* operator ->() { return &self; }
852         const LDKAccess* operator &() const { return &self; }
853         const LDKAccess* operator ->() const { return &self; }
854         /**
855          *  Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
856          *  Returns an error if `genesis_hash` is for a different chain or if such a transaction output
857          *  is unknown.
858          * 
859          *  [`short_channel_id`]: https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#definition-of-short_channel_id
860          */
861         inline LDK::CResult_TxOutAccessErrorZ get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
862 };
863 class Listen {
864 private:
865         LDKListen self;
866 public:
867         Listen(const Listen&) = delete;
868         Listen(Listen&& o) : self(o.self) { memset(&o, 0, sizeof(Listen)); }
869         Listen(LDKListen&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKListen)); }
870         operator LDKListen() && { LDKListen res = self; memset(&self, 0, sizeof(LDKListen)); return res; }
871         ~Listen() { Listen_free(self); }
872         Listen& operator=(Listen&& o) { Listen_free(self); self = o.self; memset(&o, 0, sizeof(Listen)); return *this; }
873         LDKListen* operator &() { return &self; }
874         LDKListen* operator ->() { return &self; }
875         const LDKListen* operator &() const { return &self; }
876         const LDKListen* operator ->() const { return &self; }
877         /**
878          *  Notifies the listener that a block was added at the given height.
879          */
880         inline void block_connected(struct LDKu8slice block, uint32_t height);
881         /**
882          *  Notifies the listener that a block was removed at the given height.
883          */
884         inline void block_disconnected(const uint8_t (*header)[80], uint32_t height);
885 };
886 class Confirm {
887 private:
888         LDKConfirm self;
889 public:
890         Confirm(const Confirm&) = delete;
891         Confirm(Confirm&& o) : self(o.self) { memset(&o, 0, sizeof(Confirm)); }
892         Confirm(LDKConfirm&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKConfirm)); }
893         operator LDKConfirm() && { LDKConfirm res = self; memset(&self, 0, sizeof(LDKConfirm)); return res; }
894         ~Confirm() { Confirm_free(self); }
895         Confirm& operator=(Confirm&& o) { Confirm_free(self); self = o.self; memset(&o, 0, sizeof(Confirm)); return *this; }
896         LDKConfirm* operator &() { return &self; }
897         LDKConfirm* operator ->() { return &self; }
898         const LDKConfirm* operator &() const { return &self; }
899         const LDKConfirm* operator ->() const { return &self; }
900         /**
901          *  Processes transactions confirmed in a block with a given header and height.
902          * 
903          *  Should be called for any transactions registered by [`Filter::register_tx`] or any
904          *  transactions spending an output registered by [`Filter::register_output`]. Such transactions
905          *  appearing in the same block do not need to be included in the same call; instead, multiple
906          *  calls with additional transactions may be made so long as they are made in [chain order].
907          * 
908          *  May be called before or after [`best_block_updated`] for the corresponding block. However,
909          *  in the event of a chain reorganization, it must not be called with a `header` that is no
910          *  longer in the chain as of the last call to [`best_block_updated`].
911          * 
912          *  [chain order]: Confirm#Order
913          *  [`best_block_updated`]: Self::best_block_updated
914          */
915         inline void transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
916         /**
917          *  Processes a transaction that is no longer confirmed as result of a chain reorganization.
918          * 
919          *  Should be called for any transaction returned by [`get_relevant_txids`] if it has been
920          *  reorganized out of the best chain. Once called, the given transaction should not be returned
921          *  by [`get_relevant_txids`] unless it has been reconfirmed via [`transactions_confirmed`].
922          * 
923          *  [`get_relevant_txids`]: Self::get_relevant_txids
924          *  [`transactions_confirmed`]: Self::transactions_confirmed
925          */
926         inline void transaction_unconfirmed(const uint8_t (*txid)[32]);
927         /**
928          *  Processes an update to the best header connected at the given height.
929          * 
930          *  Should be called when a new header is available but may be skipped for intermediary blocks
931          *  if they become available at the same time.
932          */
933         inline void best_block_updated(const uint8_t (*header)[80], uint32_t height);
934         /**
935          *  Returns transactions that should be monitored for reorganization out of the chain.
936          * 
937          *  Should include any transactions passed to [`transactions_confirmed`] that have insufficient
938          *  confirmations to be safe from a chain reorganization. Should not include any transactions
939          *  passed to [`transaction_unconfirmed`] unless later reconfirmed.
940          * 
941          *  May be called to determine the subset of transactions that must still be monitored for
942          *  reorganization. Will be idempotent between calls but may change as a result of calls to the
943          *  other interface methods. Thus, this is useful to determine which transactions may need to be
944          *  given to [`transaction_unconfirmed`].
945          * 
946          *  [`transactions_confirmed`]: Self::transactions_confirmed
947          *  [`transaction_unconfirmed`]: Self::transaction_unconfirmed
948          */
949         inline LDK::CVec_TxidZ get_relevant_txids();
950 };
951 class ChannelMonitorUpdateErr {
952 private:
953         LDKChannelMonitorUpdateErr self;
954 public:
955         ChannelMonitorUpdateErr(const ChannelMonitorUpdateErr&) = delete;
956         ChannelMonitorUpdateErr(ChannelMonitorUpdateErr&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); }
957         ChannelMonitorUpdateErr(LDKChannelMonitorUpdateErr&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdateErr)); }
958         operator LDKChannelMonitorUpdateErr() && { LDKChannelMonitorUpdateErr res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdateErr)); return res; }
959         ChannelMonitorUpdateErr& operator=(ChannelMonitorUpdateErr&& o) { self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdateErr)); return *this; }
960         LDKChannelMonitorUpdateErr* operator &() { return &self; }
961         LDKChannelMonitorUpdateErr* operator ->() { return &self; }
962         const LDKChannelMonitorUpdateErr* operator &() const { return &self; }
963         const LDKChannelMonitorUpdateErr* operator ->() const { return &self; }
964 };
965 class Watch {
966 private:
967         LDKWatch self;
968 public:
969         Watch(const Watch&) = delete;
970         Watch(Watch&& o) : self(o.self) { memset(&o, 0, sizeof(Watch)); }
971         Watch(LDKWatch&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatch)); }
972         operator LDKWatch() && { LDKWatch res = self; memset(&self, 0, sizeof(LDKWatch)); return res; }
973         ~Watch() { Watch_free(self); }
974         Watch& operator=(Watch&& o) { Watch_free(self); self = o.self; memset(&o, 0, sizeof(Watch)); return *this; }
975         LDKWatch* operator &() { return &self; }
976         LDKWatch* operator ->() { return &self; }
977         const LDKWatch* operator &() const { return &self; }
978         const LDKWatch* operator ->() const { return &self; }
979         /**
980          *  Watches a channel identified by `funding_txo` using `monitor`.
981          * 
982          *  Implementations are responsible for watching the chain for the funding transaction along
983          *  with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
984          *  calling [`block_connected`] and [`block_disconnected`] on the monitor.
985          * 
986          *  Note: this interface MUST error with `ChannelMonitorUpdateErr::PermanentFailure` if
987          *  the given `funding_txo` has previously been registered via `watch_channel`.
988          * 
989          *  [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
990          *  [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
991          *  [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
992          */
993         inline LDK::CResult_NoneChannelMonitorUpdateErrZ watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
994         /**
995          *  Updates a channel identified by `funding_txo` by applying `update` to its monitor.
996          * 
997          *  Implementations must call [`update_monitor`] with the given update. See
998          *  [`ChannelMonitorUpdateErr`] for invariants around returning an error.
999          * 
1000          *  [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
1001          */
1002         inline LDK::CResult_NoneChannelMonitorUpdateErrZ update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
1003         /**
1004          *  Returns any monitor events since the last call. Subsequent calls must only return new
1005          *  events.
1006          * 
1007          *  Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
1008          *  further events may be returned here until the [`ChannelMonitor`] has been fully persisted
1009          *  to disk.
1010          * 
1011          *  For details on asynchronous [`ChannelMonitor`] updating and returning
1012          *  [`MonitorEvent::UpdateCompleted`] here, see [`ChannelMonitorUpdateErr::TemporaryFailure`].
1013          */
1014         inline LDK::CVec_MonitorEventZ release_pending_monitor_events();
1015 };
1016 class Filter {
1017 private:
1018         LDKFilter self;
1019 public:
1020         Filter(const Filter&) = delete;
1021         Filter(Filter&& o) : self(o.self) { memset(&o, 0, sizeof(Filter)); }
1022         Filter(LDKFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilter)); }
1023         operator LDKFilter() && { LDKFilter res = self; memset(&self, 0, sizeof(LDKFilter)); return res; }
1024         ~Filter() { Filter_free(self); }
1025         Filter& operator=(Filter&& o) { Filter_free(self); self = o.self; memset(&o, 0, sizeof(Filter)); return *this; }
1026         LDKFilter* operator &() { return &self; }
1027         LDKFilter* operator ->() { return &self; }
1028         const LDKFilter* operator &() const { return &self; }
1029         const LDKFilter* operator ->() const { return &self; }
1030         /**
1031          *  Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
1032          *  a spending condition.
1033          */
1034         inline void register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
1035         /**
1036          *  Registers interest in spends of a transaction output.
1037          * 
1038          *  Optionally, when `output.block_hash` is set, should return any transaction spending the
1039          *  output that is found in the corresponding block along with its index.
1040          * 
1041          *  This return value is useful for Electrum clients in order to supply in-block descendant
1042          *  transactions which otherwise were not included. This is not necessary for other clients if
1043          *  such descendant transactions were already included (e.g., when a BIP 157 client provides the
1044          *  full block).
1045          */
1046         inline LDK::COption_C2Tuple_usizeTransactionZZ register_output(struct LDKWatchedOutput output);
1047 };
1048 class WatchedOutput {
1049 private:
1050         LDKWatchedOutput self;
1051 public:
1052         WatchedOutput(const WatchedOutput&) = delete;
1053         WatchedOutput(WatchedOutput&& o) : self(o.self) { memset(&o, 0, sizeof(WatchedOutput)); }
1054         WatchedOutput(LDKWatchedOutput&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWatchedOutput)); }
1055         operator LDKWatchedOutput() && { LDKWatchedOutput res = self; memset(&self, 0, sizeof(LDKWatchedOutput)); return res; }
1056         ~WatchedOutput() { WatchedOutput_free(self); }
1057         WatchedOutput& operator=(WatchedOutput&& o) { WatchedOutput_free(self); self = o.self; memset(&o, 0, sizeof(WatchedOutput)); return *this; }
1058         LDKWatchedOutput* operator &() { return &self; }
1059         LDKWatchedOutput* operator ->() { return &self; }
1060         const LDKWatchedOutput* operator &() const { return &self; }
1061         const LDKWatchedOutput* operator ->() const { return &self; }
1062 };
1063 class PaymentPurpose {
1064 private:
1065         LDKPaymentPurpose self;
1066 public:
1067         PaymentPurpose(const PaymentPurpose&) = delete;
1068         PaymentPurpose(PaymentPurpose&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentPurpose)); }
1069         PaymentPurpose(LDKPaymentPurpose&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentPurpose)); }
1070         operator LDKPaymentPurpose() && { LDKPaymentPurpose res = self; memset(&self, 0, sizeof(LDKPaymentPurpose)); return res; }
1071         ~PaymentPurpose() { PaymentPurpose_free(self); }
1072         PaymentPurpose& operator=(PaymentPurpose&& o) { PaymentPurpose_free(self); self = o.self; memset(&o, 0, sizeof(PaymentPurpose)); return *this; }
1073         LDKPaymentPurpose* operator &() { return &self; }
1074         LDKPaymentPurpose* operator ->() { return &self; }
1075         const LDKPaymentPurpose* operator &() const { return &self; }
1076         const LDKPaymentPurpose* operator ->() const { return &self; }
1077 };
1078 class ClosureReason {
1079 private:
1080         LDKClosureReason self;
1081 public:
1082         ClosureReason(const ClosureReason&) = delete;
1083         ClosureReason(ClosureReason&& o) : self(o.self) { memset(&o, 0, sizeof(ClosureReason)); }
1084         ClosureReason(LDKClosureReason&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosureReason)); }
1085         operator LDKClosureReason() && { LDKClosureReason res = self; memset(&self, 0, sizeof(LDKClosureReason)); return res; }
1086         ~ClosureReason() { ClosureReason_free(self); }
1087         ClosureReason& operator=(ClosureReason&& o) { ClosureReason_free(self); self = o.self; memset(&o, 0, sizeof(ClosureReason)); return *this; }
1088         LDKClosureReason* operator &() { return &self; }
1089         LDKClosureReason* operator ->() { return &self; }
1090         const LDKClosureReason* operator &() const { return &self; }
1091         const LDKClosureReason* operator ->() const { return &self; }
1092 };
1093 class Event {
1094 private:
1095         LDKEvent self;
1096 public:
1097         Event(const Event&) = delete;
1098         Event(Event&& o) : self(o.self) { memset(&o, 0, sizeof(Event)); }
1099         Event(LDKEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEvent)); }
1100         operator LDKEvent() && { LDKEvent res = self; memset(&self, 0, sizeof(LDKEvent)); return res; }
1101         ~Event() { Event_free(self); }
1102         Event& operator=(Event&& o) { Event_free(self); self = o.self; memset(&o, 0, sizeof(Event)); return *this; }
1103         LDKEvent* operator &() { return &self; }
1104         LDKEvent* operator ->() { return &self; }
1105         const LDKEvent* operator &() const { return &self; }
1106         const LDKEvent* operator ->() const { return &self; }
1107 };
1108 class MessageSendEvent {
1109 private:
1110         LDKMessageSendEvent self;
1111 public:
1112         MessageSendEvent(const MessageSendEvent&) = delete;
1113         MessageSendEvent(MessageSendEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEvent)); }
1114         MessageSendEvent(LDKMessageSendEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEvent)); }
1115         operator LDKMessageSendEvent() && { LDKMessageSendEvent res = self; memset(&self, 0, sizeof(LDKMessageSendEvent)); return res; }
1116         ~MessageSendEvent() { MessageSendEvent_free(self); }
1117         MessageSendEvent& operator=(MessageSendEvent&& o) { MessageSendEvent_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEvent)); return *this; }
1118         LDKMessageSendEvent* operator &() { return &self; }
1119         LDKMessageSendEvent* operator ->() { return &self; }
1120         const LDKMessageSendEvent* operator &() const { return &self; }
1121         const LDKMessageSendEvent* operator ->() const { return &self; }
1122 };
1123 class MessageSendEventsProvider {
1124 private:
1125         LDKMessageSendEventsProvider self;
1126 public:
1127         MessageSendEventsProvider(const MessageSendEventsProvider&) = delete;
1128         MessageSendEventsProvider(MessageSendEventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(MessageSendEventsProvider)); }
1129         MessageSendEventsProvider(LDKMessageSendEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageSendEventsProvider)); }
1130         operator LDKMessageSendEventsProvider() && { LDKMessageSendEventsProvider res = self; memset(&self, 0, sizeof(LDKMessageSendEventsProvider)); return res; }
1131         ~MessageSendEventsProvider() { MessageSendEventsProvider_free(self); }
1132         MessageSendEventsProvider& operator=(MessageSendEventsProvider&& o) { MessageSendEventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(MessageSendEventsProvider)); return *this; }
1133         LDKMessageSendEventsProvider* operator &() { return &self; }
1134         LDKMessageSendEventsProvider* operator ->() { return &self; }
1135         const LDKMessageSendEventsProvider* operator &() const { return &self; }
1136         const LDKMessageSendEventsProvider* operator ->() const { return &self; }
1137         /**
1138          *  Gets the list of pending events which were generated by previous actions, clearing the list
1139          *  in the process.
1140          */
1141         inline LDK::CVec_MessageSendEventZ get_and_clear_pending_msg_events();
1142 };
1143 class EventsProvider {
1144 private:
1145         LDKEventsProvider self;
1146 public:
1147         EventsProvider(const EventsProvider&) = delete;
1148         EventsProvider(EventsProvider&& o) : self(o.self) { memset(&o, 0, sizeof(EventsProvider)); }
1149         EventsProvider(LDKEventsProvider&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventsProvider)); }
1150         operator LDKEventsProvider() && { LDKEventsProvider res = self; memset(&self, 0, sizeof(LDKEventsProvider)); return res; }
1151         ~EventsProvider() { EventsProvider_free(self); }
1152         EventsProvider& operator=(EventsProvider&& o) { EventsProvider_free(self); self = o.self; memset(&o, 0, sizeof(EventsProvider)); return *this; }
1153         LDKEventsProvider* operator &() { return &self; }
1154         LDKEventsProvider* operator ->() { return &self; }
1155         const LDKEventsProvider* operator &() const { return &self; }
1156         const LDKEventsProvider* operator ->() const { return &self; }
1157         /**
1158          *  Processes any events generated since the last call using the given event handler.
1159          * 
1160          *  Subsequent calls must only process new events. However, handlers must be capable of handling
1161          *  duplicate events across process restarts. This may occur if the provider was recovered from
1162          *  an old state (i.e., it hadn't been successfully persisted after processing pending events).
1163          */
1164         inline void process_pending_events(struct LDKEventHandler handler);
1165 };
1166 class EventHandler {
1167 private:
1168         LDKEventHandler self;
1169 public:
1170         EventHandler(const EventHandler&) = delete;
1171         EventHandler(EventHandler&& o) : self(o.self) { memset(&o, 0, sizeof(EventHandler)); }
1172         EventHandler(LDKEventHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEventHandler)); }
1173         operator LDKEventHandler() && { LDKEventHandler res = self; memset(&self, 0, sizeof(LDKEventHandler)); return res; }
1174         ~EventHandler() { EventHandler_free(self); }
1175         EventHandler& operator=(EventHandler&& o) { EventHandler_free(self); self = o.self; memset(&o, 0, sizeof(EventHandler)); return *this; }
1176         LDKEventHandler* operator &() { return &self; }
1177         LDKEventHandler* operator ->() { return &self; }
1178         const LDKEventHandler* operator &() const { return &self; }
1179         const LDKEventHandler* operator ->() const { return &self; }
1180         /**
1181          *  Handles the given [`Event`].
1182          * 
1183          *  See [`EventsProvider`] for details that must be considered when implementing this method.
1184          */
1185         inline void handle_event(const struct LDKEvent *NONNULL_PTR event);
1186 };
1187 class Score {
1188 private:
1189         LDKScore self;
1190 public:
1191         Score(const Score&) = delete;
1192         Score(Score&& o) : self(o.self) { memset(&o, 0, sizeof(Score)); }
1193         Score(LDKScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScore)); }
1194         operator LDKScore() && { LDKScore res = self; memset(&self, 0, sizeof(LDKScore)); return res; }
1195         ~Score() { Score_free(self); }
1196         Score& operator=(Score&& o) { Score_free(self); self = o.self; memset(&o, 0, sizeof(Score)); return *this; }
1197         LDKScore* operator &() { return &self; }
1198         LDKScore* operator ->() { return &self; }
1199         const LDKScore* operator &() const { return &self; }
1200         const LDKScore* operator ->() const { return &self; }
1201         /**
1202          *  Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1203          *  given channel in the direction from `source` to `target`.
1204          * 
1205          *  The channel's capacity (less any other MPP parts that are also being considered for use in
1206          *  the same payment) is given by `capacity_msat`. It may be determined from various sources
1207          *  such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1208          *  [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1209          *  Thus, implementations should be overflow-safe.
1210          */
1211         inline uint64_t channel_penalty_msat(uint64_t short_channel_id, uint64_t send_amt_msat, uint64_t capacity_msat, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target);
1212         /**
1213          *  Handles updating channel penalties after failing to route through a channel.
1214          */
1215         inline void payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1216         /**
1217          *  Handles updating channel penalties after successfully routing along a path.
1218          */
1219         inline void payment_path_successful(struct LDKCVec_RouteHopZ path);
1220 };
1221 class LockableScore {
1222 private:
1223         LDKLockableScore self;
1224 public:
1225         LockableScore(const LockableScore&) = delete;
1226         LockableScore(LockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(LockableScore)); }
1227         LockableScore(LDKLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockableScore)); }
1228         operator LDKLockableScore() && { LDKLockableScore res = self; memset(&self, 0, sizeof(LDKLockableScore)); return res; }
1229         ~LockableScore() { LockableScore_free(self); }
1230         LockableScore& operator=(LockableScore&& o) { LockableScore_free(self); self = o.self; memset(&o, 0, sizeof(LockableScore)); return *this; }
1231         LDKLockableScore* operator &() { return &self; }
1232         LDKLockableScore* operator ->() { return &self; }
1233         const LDKLockableScore* operator &() const { return &self; }
1234         const LDKLockableScore* operator ->() const { return &self; }
1235         /**
1236          *  Returns the locked scorer.
1237          */
1238         inline LDK::Score lock();
1239 };
1240 class MultiThreadedLockableScore {
1241 private:
1242         LDKMultiThreadedLockableScore self;
1243 public:
1244         MultiThreadedLockableScore(const MultiThreadedLockableScore&) = delete;
1245         MultiThreadedLockableScore(MultiThreadedLockableScore&& o) : self(o.self) { memset(&o, 0, sizeof(MultiThreadedLockableScore)); }
1246         MultiThreadedLockableScore(LDKMultiThreadedLockableScore&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMultiThreadedLockableScore)); }
1247         operator LDKMultiThreadedLockableScore() && { LDKMultiThreadedLockableScore res = self; memset(&self, 0, sizeof(LDKMultiThreadedLockableScore)); return res; }
1248         ~MultiThreadedLockableScore() { MultiThreadedLockableScore_free(self); }
1249         MultiThreadedLockableScore& operator=(MultiThreadedLockableScore&& o) { MultiThreadedLockableScore_free(self); self = o.self; memset(&o, 0, sizeof(MultiThreadedLockableScore)); return *this; }
1250         LDKMultiThreadedLockableScore* operator &() { return &self; }
1251         LDKMultiThreadedLockableScore* operator ->() { return &self; }
1252         const LDKMultiThreadedLockableScore* operator &() const { return &self; }
1253         const LDKMultiThreadedLockableScore* operator ->() const { return &self; }
1254 };
1255 class FixedPenaltyScorer {
1256 private:
1257         LDKFixedPenaltyScorer self;
1258 public:
1259         FixedPenaltyScorer(const FixedPenaltyScorer&) = delete;
1260         FixedPenaltyScorer(FixedPenaltyScorer&& o) : self(o.self) { memset(&o, 0, sizeof(FixedPenaltyScorer)); }
1261         FixedPenaltyScorer(LDKFixedPenaltyScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFixedPenaltyScorer)); }
1262         operator LDKFixedPenaltyScorer() && { LDKFixedPenaltyScorer res = self; memset(&self, 0, sizeof(LDKFixedPenaltyScorer)); return res; }
1263         ~FixedPenaltyScorer() { FixedPenaltyScorer_free(self); }
1264         FixedPenaltyScorer& operator=(FixedPenaltyScorer&& o) { FixedPenaltyScorer_free(self); self = o.self; memset(&o, 0, sizeof(FixedPenaltyScorer)); return *this; }
1265         LDKFixedPenaltyScorer* operator &() { return &self; }
1266         LDKFixedPenaltyScorer* operator ->() { return &self; }
1267         const LDKFixedPenaltyScorer* operator &() const { return &self; }
1268         const LDKFixedPenaltyScorer* operator ->() const { return &self; }
1269 };
1270 class Scorer {
1271 private:
1272         LDKScorer self;
1273 public:
1274         Scorer(const Scorer&) = delete;
1275         Scorer(Scorer&& o) : self(o.self) { memset(&o, 0, sizeof(Scorer)); }
1276         Scorer(LDKScorer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScorer)); }
1277         operator LDKScorer() && { LDKScorer res = self; memset(&self, 0, sizeof(LDKScorer)); return res; }
1278         ~Scorer() { Scorer_free(self); }
1279         Scorer& operator=(Scorer&& o) { Scorer_free(self); self = o.self; memset(&o, 0, sizeof(Scorer)); return *this; }
1280         LDKScorer* operator &() { return &self; }
1281         LDKScorer* operator ->() { return &self; }
1282         const LDKScorer* operator &() const { return &self; }
1283         const LDKScorer* operator ->() const { return &self; }
1284 };
1285 class ScoringParameters {
1286 private:
1287         LDKScoringParameters self;
1288 public:
1289         ScoringParameters(const ScoringParameters&) = delete;
1290         ScoringParameters(ScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ScoringParameters)); }
1291         ScoringParameters(LDKScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKScoringParameters)); }
1292         operator LDKScoringParameters() && { LDKScoringParameters res = self; memset(&self, 0, sizeof(LDKScoringParameters)); return res; }
1293         ~ScoringParameters() { ScoringParameters_free(self); }
1294         ScoringParameters& operator=(ScoringParameters&& o) { ScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ScoringParameters)); return *this; }
1295         LDKScoringParameters* operator &() { return &self; }
1296         LDKScoringParameters* operator ->() { return &self; }
1297         const LDKScoringParameters* operator &() const { return &self; }
1298         const LDKScoringParameters* operator ->() const { return &self; }
1299 };
1300 class ProbabilisticScoringParameters {
1301 private:
1302         LDKProbabilisticScoringParameters self;
1303 public:
1304         ProbabilisticScoringParameters(const ProbabilisticScoringParameters&) = delete;
1305         ProbabilisticScoringParameters(ProbabilisticScoringParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ProbabilisticScoringParameters)); }
1306         ProbabilisticScoringParameters(LDKProbabilisticScoringParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKProbabilisticScoringParameters)); }
1307         operator LDKProbabilisticScoringParameters() && { LDKProbabilisticScoringParameters res = self; memset(&self, 0, sizeof(LDKProbabilisticScoringParameters)); return res; }
1308         ~ProbabilisticScoringParameters() { ProbabilisticScoringParameters_free(self); }
1309         ProbabilisticScoringParameters& operator=(ProbabilisticScoringParameters&& o) { ProbabilisticScoringParameters_free(self); self = o.self; memset(&o, 0, sizeof(ProbabilisticScoringParameters)); return *this; }
1310         LDKProbabilisticScoringParameters* operator &() { return &self; }
1311         LDKProbabilisticScoringParameters* operator ->() { return &self; }
1312         const LDKProbabilisticScoringParameters* operator &() const { return &self; }
1313         const LDKProbabilisticScoringParameters* operator ->() const { return &self; }
1314 };
1315 class InitFeatures {
1316 private:
1317         LDKInitFeatures self;
1318 public:
1319         InitFeatures(const InitFeatures&) = delete;
1320         InitFeatures(InitFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InitFeatures)); }
1321         InitFeatures(LDKInitFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInitFeatures)); }
1322         operator LDKInitFeatures() && { LDKInitFeatures res = self; memset(&self, 0, sizeof(LDKInitFeatures)); return res; }
1323         ~InitFeatures() { InitFeatures_free(self); }
1324         InitFeatures& operator=(InitFeatures&& o) { InitFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InitFeatures)); return *this; }
1325         LDKInitFeatures* operator &() { return &self; }
1326         LDKInitFeatures* operator ->() { return &self; }
1327         const LDKInitFeatures* operator &() const { return &self; }
1328         const LDKInitFeatures* operator ->() const { return &self; }
1329 };
1330 class NodeFeatures {
1331 private:
1332         LDKNodeFeatures self;
1333 public:
1334         NodeFeatures(const NodeFeatures&) = delete;
1335         NodeFeatures(NodeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(NodeFeatures)); }
1336         NodeFeatures(LDKNodeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeFeatures)); }
1337         operator LDKNodeFeatures() && { LDKNodeFeatures res = self; memset(&self, 0, sizeof(LDKNodeFeatures)); return res; }
1338         ~NodeFeatures() { NodeFeatures_free(self); }
1339         NodeFeatures& operator=(NodeFeatures&& o) { NodeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(NodeFeatures)); return *this; }
1340         LDKNodeFeatures* operator &() { return &self; }
1341         LDKNodeFeatures* operator ->() { return &self; }
1342         const LDKNodeFeatures* operator &() const { return &self; }
1343         const LDKNodeFeatures* operator ->() const { return &self; }
1344 };
1345 class ChannelFeatures {
1346 private:
1347         LDKChannelFeatures self;
1348 public:
1349         ChannelFeatures(const ChannelFeatures&) = delete;
1350         ChannelFeatures(ChannelFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelFeatures)); }
1351         ChannelFeatures(LDKChannelFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelFeatures)); }
1352         operator LDKChannelFeatures() && { LDKChannelFeatures res = self; memset(&self, 0, sizeof(LDKChannelFeatures)); return res; }
1353         ~ChannelFeatures() { ChannelFeatures_free(self); }
1354         ChannelFeatures& operator=(ChannelFeatures&& o) { ChannelFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelFeatures)); return *this; }
1355         LDKChannelFeatures* operator &() { return &self; }
1356         LDKChannelFeatures* operator ->() { return &self; }
1357         const LDKChannelFeatures* operator &() const { return &self; }
1358         const LDKChannelFeatures* operator ->() const { return &self; }
1359 };
1360 class InvoiceFeatures {
1361 private:
1362         LDKInvoiceFeatures self;
1363 public:
1364         InvoiceFeatures(const InvoiceFeatures&) = delete;
1365         InvoiceFeatures(InvoiceFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceFeatures)); }
1366         InvoiceFeatures(LDKInvoiceFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceFeatures)); }
1367         operator LDKInvoiceFeatures() && { LDKInvoiceFeatures res = self; memset(&self, 0, sizeof(LDKInvoiceFeatures)); return res; }
1368         ~InvoiceFeatures() { InvoiceFeatures_free(self); }
1369         InvoiceFeatures& operator=(InvoiceFeatures&& o) { InvoiceFeatures_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceFeatures)); return *this; }
1370         LDKInvoiceFeatures* operator &() { return &self; }
1371         LDKInvoiceFeatures* operator ->() { return &self; }
1372         const LDKInvoiceFeatures* operator &() const { return &self; }
1373         const LDKInvoiceFeatures* operator ->() const { return &self; }
1374 };
1375 class ChannelTypeFeatures {
1376 private:
1377         LDKChannelTypeFeatures self;
1378 public:
1379         ChannelTypeFeatures(const ChannelTypeFeatures&) = delete;
1380         ChannelTypeFeatures(ChannelTypeFeatures&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelTypeFeatures)); }
1381         ChannelTypeFeatures(LDKChannelTypeFeatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelTypeFeatures)); }
1382         operator LDKChannelTypeFeatures() && { LDKChannelTypeFeatures res = self; memset(&self, 0, sizeof(LDKChannelTypeFeatures)); return res; }
1383         ~ChannelTypeFeatures() { ChannelTypeFeatures_free(self); }
1384         ChannelTypeFeatures& operator=(ChannelTypeFeatures&& o) { ChannelTypeFeatures_free(self); self = o.self; memset(&o, 0, sizeof(ChannelTypeFeatures)); return *this; }
1385         LDKChannelTypeFeatures* operator &() { return &self; }
1386         LDKChannelTypeFeatures* operator ->() { return &self; }
1387         const LDKChannelTypeFeatures* operator &() const { return &self; }
1388         const LDKChannelTypeFeatures* operator ->() const { return &self; }
1389 };
1390 class DelayedPaymentOutputDescriptor {
1391 private:
1392         LDKDelayedPaymentOutputDescriptor self;
1393 public:
1394         DelayedPaymentOutputDescriptor(const DelayedPaymentOutputDescriptor&) = delete;
1395         DelayedPaymentOutputDescriptor(DelayedPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); }
1396         DelayedPaymentOutputDescriptor(LDKDelayedPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); }
1397         operator LDKDelayedPaymentOutputDescriptor() && { LDKDelayedPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKDelayedPaymentOutputDescriptor)); return res; }
1398         ~DelayedPaymentOutputDescriptor() { DelayedPaymentOutputDescriptor_free(self); }
1399         DelayedPaymentOutputDescriptor& operator=(DelayedPaymentOutputDescriptor&& o) { DelayedPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(DelayedPaymentOutputDescriptor)); return *this; }
1400         LDKDelayedPaymentOutputDescriptor* operator &() { return &self; }
1401         LDKDelayedPaymentOutputDescriptor* operator ->() { return &self; }
1402         const LDKDelayedPaymentOutputDescriptor* operator &() const { return &self; }
1403         const LDKDelayedPaymentOutputDescriptor* operator ->() const { return &self; }
1404 };
1405 class StaticPaymentOutputDescriptor {
1406 private:
1407         LDKStaticPaymentOutputDescriptor self;
1408 public:
1409         StaticPaymentOutputDescriptor(const StaticPaymentOutputDescriptor&) = delete;
1410         StaticPaymentOutputDescriptor(StaticPaymentOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); }
1411         StaticPaymentOutputDescriptor(LDKStaticPaymentOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); }
1412         operator LDKStaticPaymentOutputDescriptor() && { LDKStaticPaymentOutputDescriptor res = self; memset(&self, 0, sizeof(LDKStaticPaymentOutputDescriptor)); return res; }
1413         ~StaticPaymentOutputDescriptor() { StaticPaymentOutputDescriptor_free(self); }
1414         StaticPaymentOutputDescriptor& operator=(StaticPaymentOutputDescriptor&& o) { StaticPaymentOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(StaticPaymentOutputDescriptor)); return *this; }
1415         LDKStaticPaymentOutputDescriptor* operator &() { return &self; }
1416         LDKStaticPaymentOutputDescriptor* operator ->() { return &self; }
1417         const LDKStaticPaymentOutputDescriptor* operator &() const { return &self; }
1418         const LDKStaticPaymentOutputDescriptor* operator ->() const { return &self; }
1419 };
1420 class SpendableOutputDescriptor {
1421 private:
1422         LDKSpendableOutputDescriptor self;
1423 public:
1424         SpendableOutputDescriptor(const SpendableOutputDescriptor&) = delete;
1425         SpendableOutputDescriptor(SpendableOutputDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SpendableOutputDescriptor)); }
1426         SpendableOutputDescriptor(LDKSpendableOutputDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSpendableOutputDescriptor)); }
1427         operator LDKSpendableOutputDescriptor() && { LDKSpendableOutputDescriptor res = self; memset(&self, 0, sizeof(LDKSpendableOutputDescriptor)); return res; }
1428         ~SpendableOutputDescriptor() { SpendableOutputDescriptor_free(self); }
1429         SpendableOutputDescriptor& operator=(SpendableOutputDescriptor&& o) { SpendableOutputDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SpendableOutputDescriptor)); return *this; }
1430         LDKSpendableOutputDescriptor* operator &() { return &self; }
1431         LDKSpendableOutputDescriptor* operator ->() { return &self; }
1432         const LDKSpendableOutputDescriptor* operator &() const { return &self; }
1433         const LDKSpendableOutputDescriptor* operator ->() const { return &self; }
1434 };
1435 class BaseSign {
1436 private:
1437         LDKBaseSign self;
1438 public:
1439         BaseSign(const BaseSign&) = delete;
1440         BaseSign(BaseSign&& o) : self(o.self) { memset(&o, 0, sizeof(BaseSign)); }
1441         BaseSign(LDKBaseSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBaseSign)); }
1442         operator LDKBaseSign() && { LDKBaseSign res = self; memset(&self, 0, sizeof(LDKBaseSign)); return res; }
1443         ~BaseSign() { BaseSign_free(self); }
1444         BaseSign& operator=(BaseSign&& o) { BaseSign_free(self); self = o.self; memset(&o, 0, sizeof(BaseSign)); return *this; }
1445         LDKBaseSign* operator &() { return &self; }
1446         LDKBaseSign* operator ->() { return &self; }
1447         const LDKBaseSign* operator &() const { return &self; }
1448         const LDKBaseSign* operator ->() const { return &self; }
1449         /**
1450          *  Gets the per-commitment point for a specific commitment number
1451          * 
1452          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1453          */
1454         inline LDKPublicKey get_per_commitment_point(uint64_t idx);
1455         /**
1456          *  Gets the commitment secret for a specific commitment number as part of the revocation process
1457          * 
1458          *  An external signer implementation should error here if the commitment was already signed
1459          *  and should refuse to sign it in the future.
1460          * 
1461          *  May be called more than once for the same index.
1462          * 
1463          *  Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
1464          */
1465         inline LDKThirtyTwoBytes release_commitment_secret(uint64_t idx);
1466         /**
1467          *  Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
1468          * 
1469          *  This is required in order for the signer to make sure that releasing a commitment
1470          *  secret won't leave us without a broadcastable holder transaction.
1471          *  Policy checks should be implemented in this function, including checking the amount
1472          *  sent to us and checking the HTLCs.
1473          * 
1474          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1475          *  A validating signer should ensure that an HTLC output is removed only when the matching
1476          *  preimage is provided, or when the value to holder is restored.
1477          * 
1478          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1479          *  irrelevant or duplicate preimages.
1480          */
1481         inline LDK::CResult_NoneNoneZ validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
1482         /**
1483          *  Gets an arbitrary identifier describing the set of keys which are provided back to you in
1484          *  some SpendableOutputDescriptor types. This should be sufficient to identify this
1485          *  Sign object uniquely and lookup or re-derive its keys.
1486          */
1487         inline LDKThirtyTwoBytes channel_keys_id();
1488         /**
1489          *  Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
1490          * 
1491          *  Note that if signing fails or is rejected, the channel will be force-closed.
1492          * 
1493          *  Policy checks should be implemented in this function, including checking the amount
1494          *  sent to us and checking the HTLCs.
1495          * 
1496          *  The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
1497          *  A validating signer should ensure that an HTLC output is removed only when the matching
1498          *  preimage is provided, or when the value to holder is restored.
1499          * 
1500          *  NOTE: all the relevant preimages will be provided, but there may also be additional
1501          *  irrelevant or duplicate preimages.
1502          */
1503         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
1504         /**
1505          *  Validate the counterparty's revocation.
1506          * 
1507          *  This is required in order for the signer to make sure that the state has moved
1508          *  forward and it is safe to sign the next counterparty commitment.
1509          */
1510         inline LDK::CResult_NoneNoneZ validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]);
1511         /**
1512          *  Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
1513          *  This will only ever be called with a non-revoked commitment_tx.  This will be called with the
1514          *  latest commitment_tx when we initiate a force-close.
1515          *  This will be called with the previous latest, just to get claiming HTLC signatures, if we are
1516          *  reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
1517          *  the latest.
1518          *  This may be called multiple times for the same transaction.
1519          * 
1520          *  An external signer implementation should check that the commitment has not been revoked.
1521          * 
1522          *  May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
1523          */
1524         inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
1525         /**
1526          *  Create a signature for the given input in a transaction spending an HTLC transaction output
1527          *  or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
1528          * 
1529          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1530          *  similar, but only a signature for the input at index `input` should be signed for here.
1531          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1532          *  to an upcoming timelock expiration.
1533          * 
1534          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1535          * 
1536          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1537          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1538          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1539          *  so).
1540          */
1541         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]);
1542         /**
1543          *  Create a signature for the given input in a transaction spending a commitment transaction
1544          *  HTLC output when our counterparty broadcasts an old state.
1545          * 
1546          *  A justice transaction may claim multiple outputs at the same time if timelocks are
1547          *  similar, but only a signature for the input at index `input` should be signed for here.
1548          *  It may be called multiple times for same output(s) if a fee-bump is needed with regards
1549          *  to an upcoming timelock expiration.
1550          * 
1551          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1552          * 
1553          *  per_commitment_key is revocation secret which was provided by our counterparty when they
1554          *  revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
1555          *  not allow the spending of any funds by itself (you need our holder revocation_secret to do
1556          *  so).
1557          * 
1558          *  htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
1559          *  (which is committed to in the BIP 143 signatures).
1560          */
1561         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);
1562         /**
1563          *  Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
1564          *  transaction, either offered or received.
1565          * 
1566          *  Such a transaction may claim multiples offered outputs at same time if we know the
1567          *  preimage for each when we create it, but only the input at index `input` should be
1568          *  signed for here. It may be called multiple times for same output(s) if a fee-bump is
1569          *  needed with regards to an upcoming timelock expiration.
1570          * 
1571          *  Witness_script is either a offered or received script as defined in BOLT3 for HTLC
1572          *  outputs.
1573          * 
1574          *  Amount is value of the output spent by this input, committed to in the BIP 143 signature.
1575          * 
1576          *  Per_commitment_point is the dynamic point corresponding to the channel state
1577          *  detected onchain. It has been generated by our counterparty and is used to derive
1578          *  channel state keys, which are then included in the witness script and committed to in the
1579          *  BIP 143 signature.
1580          */
1581         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);
1582         /**
1583          *  Create a signature for a (proposed) closing transaction.
1584          * 
1585          *  Note that, due to rounding, there may be one "missing" satoshi, and either party may have
1586          *  chosen to forgo their output as dust.
1587          */
1588         inline LDK::CResult_SignatureNoneZ sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
1589         /**
1590          *  Signs a channel announcement message with our funding key and our node secret key (aka
1591          *  node_id or network_key), proving it comes from one of the channel participants.
1592          * 
1593          *  The first returned signature should be from our node secret key, the second from our
1594          *  funding key.
1595          * 
1596          *  Note that if this fails or is rejected, the channel will not be publicly announced and
1597          *  our counterparty may (though likely will not) close the channel on us for violating the
1598          *  protocol.
1599          */
1600         inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
1601         /**
1602          *  Set the counterparty static channel data, including basepoints,
1603          *  counterparty_selected/holder_selected_contest_delay and funding outpoint.
1604          *  This is done as soon as the funding outpoint is known.  Since these are static channel data,
1605          *  they MUST NOT be allowed to change to different values once set.
1606          * 
1607          *  channel_parameters.is_populated() MUST be true.
1608          * 
1609          *  We bind holder_selected_contest_delay late here for API convenience.
1610          * 
1611          *  Will be called before any signatures are applied.
1612          */
1613         inline void ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
1614 };
1615 class Sign {
1616 private:
1617         LDKSign self;
1618 public:
1619         Sign(const Sign&) = delete;
1620         Sign(Sign&& o) : self(o.self) { memset(&o, 0, sizeof(Sign)); }
1621         Sign(LDKSign&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSign)); }
1622         operator LDKSign() && { LDKSign res = self; memset(&self, 0, sizeof(LDKSign)); return res; }
1623         ~Sign() { Sign_free(self); }
1624         Sign& operator=(Sign&& o) { Sign_free(self); self = o.self; memset(&o, 0, sizeof(Sign)); return *this; }
1625         LDKSign* operator &() { return &self; }
1626         LDKSign* operator ->() { return &self; }
1627         const LDKSign* operator &() const { return &self; }
1628         const LDKSign* operator ->() const { return &self; }
1629 };
1630 class Recipient {
1631 private:
1632         LDKRecipient self;
1633 public:
1634         Recipient(const Recipient&) = delete;
1635         Recipient(Recipient&& o) : self(o.self) { memset(&o, 0, sizeof(Recipient)); }
1636         Recipient(LDKRecipient&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecipient)); }
1637         operator LDKRecipient() && { LDKRecipient res = self; memset(&self, 0, sizeof(LDKRecipient)); return res; }
1638         Recipient& operator=(Recipient&& o) { self = o.self; memset(&o, 0, sizeof(Recipient)); return *this; }
1639         LDKRecipient* operator &() { return &self; }
1640         LDKRecipient* operator ->() { return &self; }
1641         const LDKRecipient* operator &() const { return &self; }
1642         const LDKRecipient* operator ->() const { return &self; }
1643 };
1644 class KeysInterface {
1645 private:
1646         LDKKeysInterface self;
1647 public:
1648         KeysInterface(const KeysInterface&) = delete;
1649         KeysInterface(KeysInterface&& o) : self(o.self) { memset(&o, 0, sizeof(KeysInterface)); }
1650         KeysInterface(LDKKeysInterface&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysInterface)); }
1651         operator LDKKeysInterface() && { LDKKeysInterface res = self; memset(&self, 0, sizeof(LDKKeysInterface)); return res; }
1652         ~KeysInterface() { KeysInterface_free(self); }
1653         KeysInterface& operator=(KeysInterface&& o) { KeysInterface_free(self); self = o.self; memset(&o, 0, sizeof(KeysInterface)); return *this; }
1654         LDKKeysInterface* operator &() { return &self; }
1655         LDKKeysInterface* operator ->() { return &self; }
1656         const LDKKeysInterface* operator &() const { return &self; }
1657         const LDKKeysInterface* operator ->() const { return &self; }
1658         /**
1659          *  Get node secret key (aka node_id or network_key) based on the provided [`Recipient`].
1660          * 
1661          *  This method must return the same value each time it is called with a given `Recipient`
1662          *  parameter.
1663          */
1664         inline LDK::CResult_SecretKeyNoneZ get_node_secret(enum LDKRecipient recipient);
1665         /**
1666          *  Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
1667          * 
1668          *  This method should return a different value each time it is called, to avoid linking
1669          *  on-chain funds across channels as controlled to the same user.
1670          */
1671         inline LDK::CVec_u8Z get_destination_script();
1672         /**
1673          *  Get a script pubkey which we will send funds to when closing a channel.
1674          * 
1675          *  This method should return a different value each time it is called, to avoid linking
1676          *  on-chain funds across channels as controlled to the same user.
1677          */
1678         inline LDK::ShutdownScript get_shutdown_scriptpubkey();
1679         /**
1680          *  Get a new set of Sign for per-channel secrets. These MUST be unique even if you
1681          *  restarted with some stale data!
1682          * 
1683          *  This method must return a different value each time it is called.
1684          */
1685         inline LDK::Sign get_channel_signer(bool inbound, uint64_t channel_value_satoshis);
1686         /**
1687          *  Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
1688          *  onion packets and for temporary channel IDs. There is no requirement that these be
1689          *  persisted anywhere, though they must be unique across restarts.
1690          * 
1691          *  This method must return a different value each time it is called.
1692          */
1693         inline LDKThirtyTwoBytes get_secure_random_bytes();
1694         /**
1695          *  Reads a `Signer` for this `KeysInterface` from the given input stream.
1696          *  This is only called during deserialization of other objects which contain
1697          *  `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
1698          *  The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
1699          *  contain no versioning scheme. You may wish to include your own version prefix and ensure
1700          *  you've read all of the provided bytes to ensure no corruption occurred.
1701          */
1702         inline LDK::CResult_SignDecodeErrorZ read_chan_signer(struct LDKu8slice reader);
1703         /**
1704          *  Sign an invoice.
1705          *  By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
1706          *  this trait to parse the invoice and make sure they're signing what they expect, rather than
1707          *  blindly signing the hash.
1708          *  The hrp is ascii bytes, while the invoice data is base32.
1709          * 
1710          *  The secret key used to sign the invoice is dependent on the [`Recipient`].
1711          */
1712         inline LDK::CResult_RecoverableSignatureNoneZ sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient);
1713         /**
1714          *  Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
1715          * 
1716          *  If the implementor of this trait supports [phantom node payments], then every node that is
1717          *  intended to be included in the phantom invoice route hints must return the same value from
1718          *  this method.
1719          * 
1720          *  This method must return the same value each time it is called.
1721          * 
1722          *  [phantom node payments]: PhantomKeysManager
1723          */
1724         inline LDKThirtyTwoBytes get_inbound_payment_key_material();
1725 };
1726 class InMemorySigner {
1727 private:
1728         LDKInMemorySigner self;
1729 public:
1730         InMemorySigner(const InMemorySigner&) = delete;
1731         InMemorySigner(InMemorySigner&& o) : self(o.self) { memset(&o, 0, sizeof(InMemorySigner)); }
1732         InMemorySigner(LDKInMemorySigner&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInMemorySigner)); }
1733         operator LDKInMemorySigner() && { LDKInMemorySigner res = self; memset(&self, 0, sizeof(LDKInMemorySigner)); return res; }
1734         ~InMemorySigner() { InMemorySigner_free(self); }
1735         InMemorySigner& operator=(InMemorySigner&& o) { InMemorySigner_free(self); self = o.self; memset(&o, 0, sizeof(InMemorySigner)); return *this; }
1736         LDKInMemorySigner* operator &() { return &self; }
1737         LDKInMemorySigner* operator ->() { return &self; }
1738         const LDKInMemorySigner* operator &() const { return &self; }
1739         const LDKInMemorySigner* operator ->() const { return &self; }
1740 };
1741 class KeysManager {
1742 private:
1743         LDKKeysManager self;
1744 public:
1745         KeysManager(const KeysManager&) = delete;
1746         KeysManager(KeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(KeysManager)); }
1747         KeysManager(LDKKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKKeysManager)); }
1748         operator LDKKeysManager() && { LDKKeysManager res = self; memset(&self, 0, sizeof(LDKKeysManager)); return res; }
1749         ~KeysManager() { KeysManager_free(self); }
1750         KeysManager& operator=(KeysManager&& o) { KeysManager_free(self); self = o.self; memset(&o, 0, sizeof(KeysManager)); return *this; }
1751         LDKKeysManager* operator &() { return &self; }
1752         LDKKeysManager* operator ->() { return &self; }
1753         const LDKKeysManager* operator &() const { return &self; }
1754         const LDKKeysManager* operator ->() const { return &self; }
1755 };
1756 class PhantomKeysManager {
1757 private:
1758         LDKPhantomKeysManager self;
1759 public:
1760         PhantomKeysManager(const PhantomKeysManager&) = delete;
1761         PhantomKeysManager(PhantomKeysManager&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomKeysManager)); }
1762         PhantomKeysManager(LDKPhantomKeysManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomKeysManager)); }
1763         operator LDKPhantomKeysManager() && { LDKPhantomKeysManager res = self; memset(&self, 0, sizeof(LDKPhantomKeysManager)); return res; }
1764         ~PhantomKeysManager() { PhantomKeysManager_free(self); }
1765         PhantomKeysManager& operator=(PhantomKeysManager&& o) { PhantomKeysManager_free(self); self = o.self; memset(&o, 0, sizeof(PhantomKeysManager)); return *this; }
1766         LDKPhantomKeysManager* operator &() { return &self; }
1767         LDKPhantomKeysManager* operator ->() { return &self; }
1768         const LDKPhantomKeysManager* operator &() const { return &self; }
1769         const LDKPhantomKeysManager* operator ->() const { return &self; }
1770 };
1771 class FilesystemPersister {
1772 private:
1773         LDKFilesystemPersister self;
1774 public:
1775         FilesystemPersister(const FilesystemPersister&) = delete;
1776         FilesystemPersister(FilesystemPersister&& o) : self(o.self) { memset(&o, 0, sizeof(FilesystemPersister)); }
1777         FilesystemPersister(LDKFilesystemPersister&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFilesystemPersister)); }
1778         operator LDKFilesystemPersister() && { LDKFilesystemPersister res = self; memset(&self, 0, sizeof(LDKFilesystemPersister)); return res; }
1779         ~FilesystemPersister() { FilesystemPersister_free(self); }
1780         FilesystemPersister& operator=(FilesystemPersister&& o) { FilesystemPersister_free(self); self = o.self; memset(&o, 0, sizeof(FilesystemPersister)); return *this; }
1781         LDKFilesystemPersister* operator &() { return &self; }
1782         LDKFilesystemPersister* operator ->() { return &self; }
1783         const LDKFilesystemPersister* operator &() const { return &self; }
1784         const LDKFilesystemPersister* operator ->() const { return &self; }
1785 };
1786 class ChannelManager {
1787 private:
1788         LDKChannelManager self;
1789 public:
1790         ChannelManager(const ChannelManager&) = delete;
1791         ChannelManager(ChannelManager&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManager)); }
1792         ChannelManager(LDKChannelManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManager)); }
1793         operator LDKChannelManager() && { LDKChannelManager res = self; memset(&self, 0, sizeof(LDKChannelManager)); return res; }
1794         ~ChannelManager() { ChannelManager_free(self); }
1795         ChannelManager& operator=(ChannelManager&& o) { ChannelManager_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManager)); return *this; }
1796         LDKChannelManager* operator &() { return &self; }
1797         LDKChannelManager* operator ->() { return &self; }
1798         const LDKChannelManager* operator &() const { return &self; }
1799         const LDKChannelManager* operator ->() const { return &self; }
1800 };
1801 class ChainParameters {
1802 private:
1803         LDKChainParameters self;
1804 public:
1805         ChainParameters(const ChainParameters&) = delete;
1806         ChainParameters(ChainParameters&& o) : self(o.self) { memset(&o, 0, sizeof(ChainParameters)); }
1807         ChainParameters(LDKChainParameters&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainParameters)); }
1808         operator LDKChainParameters() && { LDKChainParameters res = self; memset(&self, 0, sizeof(LDKChainParameters)); return res; }
1809         ~ChainParameters() { ChainParameters_free(self); }
1810         ChainParameters& operator=(ChainParameters&& o) { ChainParameters_free(self); self = o.self; memset(&o, 0, sizeof(ChainParameters)); return *this; }
1811         LDKChainParameters* operator &() { return &self; }
1812         LDKChainParameters* operator ->() { return &self; }
1813         const LDKChainParameters* operator &() const { return &self; }
1814         const LDKChainParameters* operator ->() const { return &self; }
1815 };
1816 class CounterpartyForwardingInfo {
1817 private:
1818         LDKCounterpartyForwardingInfo self;
1819 public:
1820         CounterpartyForwardingInfo(const CounterpartyForwardingInfo&) = delete;
1821         CounterpartyForwardingInfo(CounterpartyForwardingInfo&& o) : self(o.self) { memset(&o, 0, sizeof(CounterpartyForwardingInfo)); }
1822         CounterpartyForwardingInfo(LDKCounterpartyForwardingInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCounterpartyForwardingInfo)); }
1823         operator LDKCounterpartyForwardingInfo() && { LDKCounterpartyForwardingInfo res = self; memset(&self, 0, sizeof(LDKCounterpartyForwardingInfo)); return res; }
1824         ~CounterpartyForwardingInfo() { CounterpartyForwardingInfo_free(self); }
1825         CounterpartyForwardingInfo& operator=(CounterpartyForwardingInfo&& o) { CounterpartyForwardingInfo_free(self); self = o.self; memset(&o, 0, sizeof(CounterpartyForwardingInfo)); return *this; }
1826         LDKCounterpartyForwardingInfo* operator &() { return &self; }
1827         LDKCounterpartyForwardingInfo* operator ->() { return &self; }
1828         const LDKCounterpartyForwardingInfo* operator &() const { return &self; }
1829         const LDKCounterpartyForwardingInfo* operator ->() const { return &self; }
1830 };
1831 class ChannelCounterparty {
1832 private:
1833         LDKChannelCounterparty self;
1834 public:
1835         ChannelCounterparty(const ChannelCounterparty&) = delete;
1836         ChannelCounterparty(ChannelCounterparty&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelCounterparty)); }
1837         ChannelCounterparty(LDKChannelCounterparty&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelCounterparty)); }
1838         operator LDKChannelCounterparty() && { LDKChannelCounterparty res = self; memset(&self, 0, sizeof(LDKChannelCounterparty)); return res; }
1839         ~ChannelCounterparty() { ChannelCounterparty_free(self); }
1840         ChannelCounterparty& operator=(ChannelCounterparty&& o) { ChannelCounterparty_free(self); self = o.self; memset(&o, 0, sizeof(ChannelCounterparty)); return *this; }
1841         LDKChannelCounterparty* operator &() { return &self; }
1842         LDKChannelCounterparty* operator ->() { return &self; }
1843         const LDKChannelCounterparty* operator &() const { return &self; }
1844         const LDKChannelCounterparty* operator ->() const { return &self; }
1845 };
1846 class ChannelDetails {
1847 private:
1848         LDKChannelDetails self;
1849 public:
1850         ChannelDetails(const ChannelDetails&) = delete;
1851         ChannelDetails(ChannelDetails&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelDetails)); }
1852         ChannelDetails(LDKChannelDetails&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelDetails)); }
1853         operator LDKChannelDetails() && { LDKChannelDetails res = self; memset(&self, 0, sizeof(LDKChannelDetails)); return res; }
1854         ~ChannelDetails() { ChannelDetails_free(self); }
1855         ChannelDetails& operator=(ChannelDetails&& o) { ChannelDetails_free(self); self = o.self; memset(&o, 0, sizeof(ChannelDetails)); return *this; }
1856         LDKChannelDetails* operator &() { return &self; }
1857         LDKChannelDetails* operator ->() { return &self; }
1858         const LDKChannelDetails* operator &() const { return &self; }
1859         const LDKChannelDetails* operator ->() const { return &self; }
1860 };
1861 class PaymentSendFailure {
1862 private:
1863         LDKPaymentSendFailure self;
1864 public:
1865         PaymentSendFailure(const PaymentSendFailure&) = delete;
1866         PaymentSendFailure(PaymentSendFailure&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentSendFailure)); }
1867         PaymentSendFailure(LDKPaymentSendFailure&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentSendFailure)); }
1868         operator LDKPaymentSendFailure() && { LDKPaymentSendFailure res = self; memset(&self, 0, sizeof(LDKPaymentSendFailure)); return res; }
1869         ~PaymentSendFailure() { PaymentSendFailure_free(self); }
1870         PaymentSendFailure& operator=(PaymentSendFailure&& o) { PaymentSendFailure_free(self); self = o.self; memset(&o, 0, sizeof(PaymentSendFailure)); return *this; }
1871         LDKPaymentSendFailure* operator &() { return &self; }
1872         LDKPaymentSendFailure* operator ->() { return &self; }
1873         const LDKPaymentSendFailure* operator &() const { return &self; }
1874         const LDKPaymentSendFailure* operator ->() const { return &self; }
1875 };
1876 class PhantomRouteHints {
1877 private:
1878         LDKPhantomRouteHints self;
1879 public:
1880         PhantomRouteHints(const PhantomRouteHints&) = delete;
1881         PhantomRouteHints(PhantomRouteHints&& o) : self(o.self) { memset(&o, 0, sizeof(PhantomRouteHints)); }
1882         PhantomRouteHints(LDKPhantomRouteHints&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPhantomRouteHints)); }
1883         operator LDKPhantomRouteHints() && { LDKPhantomRouteHints res = self; memset(&self, 0, sizeof(LDKPhantomRouteHints)); return res; }
1884         ~PhantomRouteHints() { PhantomRouteHints_free(self); }
1885         PhantomRouteHints& operator=(PhantomRouteHints&& o) { PhantomRouteHints_free(self); self = o.self; memset(&o, 0, sizeof(PhantomRouteHints)); return *this; }
1886         LDKPhantomRouteHints* operator &() { return &self; }
1887         LDKPhantomRouteHints* operator ->() { return &self; }
1888         const LDKPhantomRouteHints* operator &() const { return &self; }
1889         const LDKPhantomRouteHints* operator ->() const { return &self; }
1890 };
1891 class ChannelManagerReadArgs {
1892 private:
1893         LDKChannelManagerReadArgs self;
1894 public:
1895         ChannelManagerReadArgs(const ChannelManagerReadArgs&) = delete;
1896         ChannelManagerReadArgs(ChannelManagerReadArgs&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelManagerReadArgs)); }
1897         ChannelManagerReadArgs(LDKChannelManagerReadArgs&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelManagerReadArgs)); }
1898         operator LDKChannelManagerReadArgs() && { LDKChannelManagerReadArgs res = self; memset(&self, 0, sizeof(LDKChannelManagerReadArgs)); return res; }
1899         ~ChannelManagerReadArgs() { ChannelManagerReadArgs_free(self); }
1900         ChannelManagerReadArgs& operator=(ChannelManagerReadArgs&& o) { ChannelManagerReadArgs_free(self); self = o.self; memset(&o, 0, sizeof(ChannelManagerReadArgs)); return *this; }
1901         LDKChannelManagerReadArgs* operator &() { return &self; }
1902         LDKChannelManagerReadArgs* operator ->() { return &self; }
1903         const LDKChannelManagerReadArgs* operator &() const { return &self; }
1904         const LDKChannelManagerReadArgs* operator ->() const { return &self; }
1905 };
1906 class ChannelHandshakeConfig {
1907 private:
1908         LDKChannelHandshakeConfig self;
1909 public:
1910         ChannelHandshakeConfig(const ChannelHandshakeConfig&) = delete;
1911         ChannelHandshakeConfig(ChannelHandshakeConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeConfig)); }
1912         ChannelHandshakeConfig(LDKChannelHandshakeConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeConfig)); }
1913         operator LDKChannelHandshakeConfig() && { LDKChannelHandshakeConfig res = self; memset(&self, 0, sizeof(LDKChannelHandshakeConfig)); return res; }
1914         ~ChannelHandshakeConfig() { ChannelHandshakeConfig_free(self); }
1915         ChannelHandshakeConfig& operator=(ChannelHandshakeConfig&& o) { ChannelHandshakeConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeConfig)); return *this; }
1916         LDKChannelHandshakeConfig* operator &() { return &self; }
1917         LDKChannelHandshakeConfig* operator ->() { return &self; }
1918         const LDKChannelHandshakeConfig* operator &() const { return &self; }
1919         const LDKChannelHandshakeConfig* operator ->() const { return &self; }
1920 };
1921 class ChannelHandshakeLimits {
1922 private:
1923         LDKChannelHandshakeLimits self;
1924 public:
1925         ChannelHandshakeLimits(const ChannelHandshakeLimits&) = delete;
1926         ChannelHandshakeLimits(ChannelHandshakeLimits&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelHandshakeLimits)); }
1927         ChannelHandshakeLimits(LDKChannelHandshakeLimits&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelHandshakeLimits)); }
1928         operator LDKChannelHandshakeLimits() && { LDKChannelHandshakeLimits res = self; memset(&self, 0, sizeof(LDKChannelHandshakeLimits)); return res; }
1929         ~ChannelHandshakeLimits() { ChannelHandshakeLimits_free(self); }
1930         ChannelHandshakeLimits& operator=(ChannelHandshakeLimits&& o) { ChannelHandshakeLimits_free(self); self = o.self; memset(&o, 0, sizeof(ChannelHandshakeLimits)); return *this; }
1931         LDKChannelHandshakeLimits* operator &() { return &self; }
1932         LDKChannelHandshakeLimits* operator ->() { return &self; }
1933         const LDKChannelHandshakeLimits* operator &() const { return &self; }
1934         const LDKChannelHandshakeLimits* operator ->() const { return &self; }
1935 };
1936 class ChannelConfig {
1937 private:
1938         LDKChannelConfig self;
1939 public:
1940         ChannelConfig(const ChannelConfig&) = delete;
1941         ChannelConfig(ChannelConfig&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelConfig)); }
1942         ChannelConfig(LDKChannelConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelConfig)); }
1943         operator LDKChannelConfig() && { LDKChannelConfig res = self; memset(&self, 0, sizeof(LDKChannelConfig)); return res; }
1944         ~ChannelConfig() { ChannelConfig_free(self); }
1945         ChannelConfig& operator=(ChannelConfig&& o) { ChannelConfig_free(self); self = o.self; memset(&o, 0, sizeof(ChannelConfig)); return *this; }
1946         LDKChannelConfig* operator &() { return &self; }
1947         LDKChannelConfig* operator ->() { return &self; }
1948         const LDKChannelConfig* operator &() const { return &self; }
1949         const LDKChannelConfig* operator ->() const { return &self; }
1950 };
1951 class UserConfig {
1952 private:
1953         LDKUserConfig self;
1954 public:
1955         UserConfig(const UserConfig&) = delete;
1956         UserConfig(UserConfig&& o) : self(o.self) { memset(&o, 0, sizeof(UserConfig)); }
1957         UserConfig(LDKUserConfig&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUserConfig)); }
1958         operator LDKUserConfig() && { LDKUserConfig res = self; memset(&self, 0, sizeof(LDKUserConfig)); return res; }
1959         ~UserConfig() { UserConfig_free(self); }
1960         UserConfig& operator=(UserConfig&& o) { UserConfig_free(self); self = o.self; memset(&o, 0, sizeof(UserConfig)); return *this; }
1961         LDKUserConfig* operator &() { return &self; }
1962         LDKUserConfig* operator ->() { return &self; }
1963         const LDKUserConfig* operator &() const { return &self; }
1964         const LDKUserConfig* operator ->() const { return &self; }
1965 };
1966 class APIError {
1967 private:
1968         LDKAPIError self;
1969 public:
1970         APIError(const APIError&) = delete;
1971         APIError(APIError&& o) : self(o.self) { memset(&o, 0, sizeof(APIError)); }
1972         APIError(LDKAPIError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAPIError)); }
1973         operator LDKAPIError() && { LDKAPIError res = self; memset(&self, 0, sizeof(LDKAPIError)); return res; }
1974         ~APIError() { APIError_free(self); }
1975         APIError& operator=(APIError&& o) { APIError_free(self); self = o.self; memset(&o, 0, sizeof(APIError)); return *this; }
1976         LDKAPIError* operator &() { return &self; }
1977         LDKAPIError* operator ->() { return &self; }
1978         const LDKAPIError* operator &() const { return &self; }
1979         const LDKAPIError* operator ->() const { return &self; }
1980 };
1981 class OutPoint {
1982 private:
1983         LDKOutPoint self;
1984 public:
1985         OutPoint(const OutPoint&) = delete;
1986         OutPoint(OutPoint&& o) : self(o.self) { memset(&o, 0, sizeof(OutPoint)); }
1987         OutPoint(LDKOutPoint&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOutPoint)); }
1988         operator LDKOutPoint() && { LDKOutPoint res = self; memset(&self, 0, sizeof(LDKOutPoint)); return res; }
1989         ~OutPoint() { OutPoint_free(self); }
1990         OutPoint& operator=(OutPoint&& o) { OutPoint_free(self); self = o.self; memset(&o, 0, sizeof(OutPoint)); return *this; }
1991         LDKOutPoint* operator &() { return &self; }
1992         LDKOutPoint* operator ->() { return &self; }
1993         const LDKOutPoint* operator &() const { return &self; }
1994         const LDKOutPoint* operator ->() const { return &self; }
1995 };
1996 class CustomMessageReader {
1997 private:
1998         LDKCustomMessageReader self;
1999 public:
2000         CustomMessageReader(const CustomMessageReader&) = delete;
2001         CustomMessageReader(CustomMessageReader&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageReader)); }
2002         CustomMessageReader(LDKCustomMessageReader&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageReader)); }
2003         operator LDKCustomMessageReader() && { LDKCustomMessageReader res = self; memset(&self, 0, sizeof(LDKCustomMessageReader)); return res; }
2004         ~CustomMessageReader() { CustomMessageReader_free(self); }
2005         CustomMessageReader& operator=(CustomMessageReader&& o) { CustomMessageReader_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageReader)); return *this; }
2006         LDKCustomMessageReader* operator &() { return &self; }
2007         LDKCustomMessageReader* operator ->() { return &self; }
2008         const LDKCustomMessageReader* operator &() const { return &self; }
2009         const LDKCustomMessageReader* operator ->() const { return &self; }
2010         /**
2011          *  Decodes a custom message to `CustomMessageType`. If the given message type is known to the
2012          *  implementation and the message could be decoded, must return `Ok(Some(message))`. If the
2013          *  message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
2014          *  occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
2015          */
2016         inline LDK::CResult_COption_TypeZDecodeErrorZ read(uint16_t message_type, struct LDKu8slice buffer);
2017 };
2018 class Type {
2019 private:
2020         LDKType self;
2021 public:
2022         Type(const Type&) = delete;
2023         Type(Type&& o) : self(o.self) { memset(&o, 0, sizeof(Type)); }
2024         Type(LDKType&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKType)); }
2025         operator LDKType() && { LDKType res = self; memset(&self, 0, sizeof(LDKType)); return res; }
2026         ~Type() { Type_free(self); }
2027         Type& operator=(Type&& o) { Type_free(self); self = o.self; memset(&o, 0, sizeof(Type)); return *this; }
2028         LDKType* operator &() { return &self; }
2029         LDKType* operator ->() { return &self; }
2030         const LDKType* operator &() const { return &self; }
2031         const LDKType* operator ->() const { return &self; }
2032         /**
2033          *  Returns the type identifying the message payload.
2034          */
2035         inline uint16_t type_id();
2036         /**
2037          * Return a human-readable "debug" string describing this object
2038          */
2039         inline LDK::Str debug_str();
2040 };
2041 class InvoicePayer {
2042 private:
2043         LDKInvoicePayer self;
2044 public:
2045         InvoicePayer(const InvoicePayer&) = delete;
2046         InvoicePayer(InvoicePayer&& o) : self(o.self) { memset(&o, 0, sizeof(InvoicePayer)); }
2047         InvoicePayer(LDKInvoicePayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoicePayer)); }
2048         operator LDKInvoicePayer() && { LDKInvoicePayer res = self; memset(&self, 0, sizeof(LDKInvoicePayer)); return res; }
2049         ~InvoicePayer() { InvoicePayer_free(self); }
2050         InvoicePayer& operator=(InvoicePayer&& o) { InvoicePayer_free(self); self = o.self; memset(&o, 0, sizeof(InvoicePayer)); return *this; }
2051         LDKInvoicePayer* operator &() { return &self; }
2052         LDKInvoicePayer* operator ->() { return &self; }
2053         const LDKInvoicePayer* operator &() const { return &self; }
2054         const LDKInvoicePayer* operator ->() const { return &self; }
2055 };
2056 class Payer {
2057 private:
2058         LDKPayer self;
2059 public:
2060         Payer(const Payer&) = delete;
2061         Payer(Payer&& o) : self(o.self) { memset(&o, 0, sizeof(Payer)); }
2062         Payer(LDKPayer&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayer)); }
2063         operator LDKPayer() && { LDKPayer res = self; memset(&self, 0, sizeof(LDKPayer)); return res; }
2064         ~Payer() { Payer_free(self); }
2065         Payer& operator=(Payer&& o) { Payer_free(self); self = o.self; memset(&o, 0, sizeof(Payer)); return *this; }
2066         LDKPayer* operator &() { return &self; }
2067         LDKPayer* operator ->() { return &self; }
2068         const LDKPayer* operator &() const { return &self; }
2069         const LDKPayer* operator ->() const { return &self; }
2070         /**
2071          *  Returns the payer's node id.
2072          */
2073         inline LDKPublicKey node_id();
2074         /**
2075          *  Returns the payer's channels.
2076          */
2077         inline LDK::CVec_ChannelDetailsZ first_hops();
2078         /**
2079          *  Sends a payment over the Lightning Network using the given [`Route`].
2080          * 
2081          *  Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
2082          */
2083         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
2084         /**
2085          *  Sends a spontaneous payment over the Lightning Network using the given [`Route`].
2086          */
2087         inline LDK::CResult_PaymentIdPaymentSendFailureZ send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
2088         /**
2089          *  Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
2090          */
2091         inline LDK::CResult_NonePaymentSendFailureZ retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
2092         /**
2093          *  Signals that no further retries for the given payment will occur.
2094          */
2095         inline void abandon_payment(struct LDKThirtyTwoBytes payment_id);
2096 };
2097 class Router {
2098 private:
2099         LDKRouter self;
2100 public:
2101         Router(const Router&) = delete;
2102         Router(Router&& o) : self(o.self) { memset(&o, 0, sizeof(Router)); }
2103         Router(LDKRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRouter)); }
2104         operator LDKRouter() && { LDKRouter res = self; memset(&self, 0, sizeof(LDKRouter)); return res; }
2105         ~Router() { Router_free(self); }
2106         Router& operator=(Router&& o) { Router_free(self); self = o.self; memset(&o, 0, sizeof(Router)); return *this; }
2107         LDKRouter* operator &() { return &self; }
2108         LDKRouter* operator ->() { return &self; }
2109         const LDKRouter* operator &() const { return &self; }
2110         const LDKRouter* operator ->() const { return &self; }
2111         /**
2112          *  Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
2113          * 
2114          *  Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
2115          */
2116         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);
2117 };
2118 class RetryAttempts {
2119 private:
2120         LDKRetryAttempts self;
2121 public:
2122         RetryAttempts(const RetryAttempts&) = delete;
2123         RetryAttempts(RetryAttempts&& o) : self(o.self) { memset(&o, 0, sizeof(RetryAttempts)); }
2124         RetryAttempts(LDKRetryAttempts&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRetryAttempts)); }
2125         operator LDKRetryAttempts() && { LDKRetryAttempts res = self; memset(&self, 0, sizeof(LDKRetryAttempts)); return res; }
2126         ~RetryAttempts() { RetryAttempts_free(self); }
2127         RetryAttempts& operator=(RetryAttempts&& o) { RetryAttempts_free(self); self = o.self; memset(&o, 0, sizeof(RetryAttempts)); return *this; }
2128         LDKRetryAttempts* operator &() { return &self; }
2129         LDKRetryAttempts* operator ->() { return &self; }
2130         const LDKRetryAttempts* operator &() const { return &self; }
2131         const LDKRetryAttempts* operator ->() const { return &self; }
2132 };
2133 class PaymentError {
2134 private:
2135         LDKPaymentError self;
2136 public:
2137         PaymentError(const PaymentError&) = delete;
2138         PaymentError(PaymentError&& o) : self(o.self) { memset(&o, 0, sizeof(PaymentError)); }
2139         PaymentError(LDKPaymentError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPaymentError)); }
2140         operator LDKPaymentError() && { LDKPaymentError res = self; memset(&self, 0, sizeof(LDKPaymentError)); return res; }
2141         ~PaymentError() { PaymentError_free(self); }
2142         PaymentError& operator=(PaymentError&& o) { PaymentError_free(self); self = o.self; memset(&o, 0, sizeof(PaymentError)); return *this; }
2143         LDKPaymentError* operator &() { return &self; }
2144         LDKPaymentError* operator ->() { return &self; }
2145         const LDKPaymentError* operator &() const { return &self; }
2146         const LDKPaymentError* operator ->() const { return &self; }
2147 };
2148 class Invoice {
2149 private:
2150         LDKInvoice self;
2151 public:
2152         Invoice(const Invoice&) = delete;
2153         Invoice(Invoice&& o) : self(o.self) { memset(&o, 0, sizeof(Invoice)); }
2154         Invoice(LDKInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoice)); }
2155         operator LDKInvoice() && { LDKInvoice res = self; memset(&self, 0, sizeof(LDKInvoice)); return res; }
2156         ~Invoice() { Invoice_free(self); }
2157         Invoice& operator=(Invoice&& o) { Invoice_free(self); self = o.self; memset(&o, 0, sizeof(Invoice)); return *this; }
2158         LDKInvoice* operator &() { return &self; }
2159         LDKInvoice* operator ->() { return &self; }
2160         const LDKInvoice* operator &() const { return &self; }
2161         const LDKInvoice* operator ->() const { return &self; }
2162 };
2163 class SignedRawInvoice {
2164 private:
2165         LDKSignedRawInvoice self;
2166 public:
2167         SignedRawInvoice(const SignedRawInvoice&) = delete;
2168         SignedRawInvoice(SignedRawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(SignedRawInvoice)); }
2169         SignedRawInvoice(LDKSignedRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignedRawInvoice)); }
2170         operator LDKSignedRawInvoice() && { LDKSignedRawInvoice res = self; memset(&self, 0, sizeof(LDKSignedRawInvoice)); return res; }
2171         ~SignedRawInvoice() { SignedRawInvoice_free(self); }
2172         SignedRawInvoice& operator=(SignedRawInvoice&& o) { SignedRawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(SignedRawInvoice)); return *this; }
2173         LDKSignedRawInvoice* operator &() { return &self; }
2174         LDKSignedRawInvoice* operator ->() { return &self; }
2175         const LDKSignedRawInvoice* operator &() const { return &self; }
2176         const LDKSignedRawInvoice* operator ->() const { return &self; }
2177 };
2178 class RawInvoice {
2179 private:
2180         LDKRawInvoice self;
2181 public:
2182         RawInvoice(const RawInvoice&) = delete;
2183         RawInvoice(RawInvoice&& o) : self(o.self) { memset(&o, 0, sizeof(RawInvoice)); }
2184         RawInvoice(LDKRawInvoice&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawInvoice)); }
2185         operator LDKRawInvoice() && { LDKRawInvoice res = self; memset(&self, 0, sizeof(LDKRawInvoice)); return res; }
2186         ~RawInvoice() { RawInvoice_free(self); }
2187         RawInvoice& operator=(RawInvoice&& o) { RawInvoice_free(self); self = o.self; memset(&o, 0, sizeof(RawInvoice)); return *this; }
2188         LDKRawInvoice* operator &() { return &self; }
2189         LDKRawInvoice* operator ->() { return &self; }
2190         const LDKRawInvoice* operator &() const { return &self; }
2191         const LDKRawInvoice* operator ->() const { return &self; }
2192 };
2193 class RawDataPart {
2194 private:
2195         LDKRawDataPart self;
2196 public:
2197         RawDataPart(const RawDataPart&) = delete;
2198         RawDataPart(RawDataPart&& o) : self(o.self) { memset(&o, 0, sizeof(RawDataPart)); }
2199         RawDataPart(LDKRawDataPart&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRawDataPart)); }
2200         operator LDKRawDataPart() && { LDKRawDataPart res = self; memset(&self, 0, sizeof(LDKRawDataPart)); return res; }
2201         ~RawDataPart() { RawDataPart_free(self); }
2202         RawDataPart& operator=(RawDataPart&& o) { RawDataPart_free(self); self = o.self; memset(&o, 0, sizeof(RawDataPart)); return *this; }
2203         LDKRawDataPart* operator &() { return &self; }
2204         LDKRawDataPart* operator ->() { return &self; }
2205         const LDKRawDataPart* operator &() const { return &self; }
2206         const LDKRawDataPart* operator ->() const { return &self; }
2207 };
2208 class PositiveTimestamp {
2209 private:
2210         LDKPositiveTimestamp self;
2211 public:
2212         PositiveTimestamp(const PositiveTimestamp&) = delete;
2213         PositiveTimestamp(PositiveTimestamp&& o) : self(o.self) { memset(&o, 0, sizeof(PositiveTimestamp)); }
2214         PositiveTimestamp(LDKPositiveTimestamp&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPositiveTimestamp)); }
2215         operator LDKPositiveTimestamp() && { LDKPositiveTimestamp res = self; memset(&self, 0, sizeof(LDKPositiveTimestamp)); return res; }
2216         ~PositiveTimestamp() { PositiveTimestamp_free(self); }
2217         PositiveTimestamp& operator=(PositiveTimestamp&& o) { PositiveTimestamp_free(self); self = o.self; memset(&o, 0, sizeof(PositiveTimestamp)); return *this; }
2218         LDKPositiveTimestamp* operator &() { return &self; }
2219         LDKPositiveTimestamp* operator ->() { return &self; }
2220         const LDKPositiveTimestamp* operator &() const { return &self; }
2221         const LDKPositiveTimestamp* operator ->() const { return &self; }
2222 };
2223 class SiPrefix {
2224 private:
2225         LDKSiPrefix self;
2226 public:
2227         SiPrefix(const SiPrefix&) = delete;
2228         SiPrefix(SiPrefix&& o) : self(o.self) { memset(&o, 0, sizeof(SiPrefix)); }
2229         SiPrefix(LDKSiPrefix&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSiPrefix)); }
2230         operator LDKSiPrefix() && { LDKSiPrefix res = self; memset(&self, 0, sizeof(LDKSiPrefix)); return res; }
2231         SiPrefix& operator=(SiPrefix&& o) { self = o.self; memset(&o, 0, sizeof(SiPrefix)); return *this; }
2232         LDKSiPrefix* operator &() { return &self; }
2233         LDKSiPrefix* operator ->() { return &self; }
2234         const LDKSiPrefix* operator &() const { return &self; }
2235         const LDKSiPrefix* operator ->() const { return &self; }
2236 };
2237 class Currency {
2238 private:
2239         LDKCurrency self;
2240 public:
2241         Currency(const Currency&) = delete;
2242         Currency(Currency&& o) : self(o.self) { memset(&o, 0, sizeof(Currency)); }
2243         Currency(LDKCurrency&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCurrency)); }
2244         operator LDKCurrency() && { LDKCurrency res = self; memset(&self, 0, sizeof(LDKCurrency)); return res; }
2245         Currency& operator=(Currency&& o) { self = o.self; memset(&o, 0, sizeof(Currency)); return *this; }
2246         LDKCurrency* operator &() { return &self; }
2247         LDKCurrency* operator ->() { return &self; }
2248         const LDKCurrency* operator &() const { return &self; }
2249         const LDKCurrency* operator ->() const { return &self; }
2250 };
2251 class Sha256 {
2252 private:
2253         LDKSha256 self;
2254 public:
2255         Sha256(const Sha256&) = delete;
2256         Sha256(Sha256&& o) : self(o.self) { memset(&o, 0, sizeof(Sha256)); }
2257         Sha256(LDKSha256&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSha256)); }
2258         operator LDKSha256() && { LDKSha256 res = self; memset(&self, 0, sizeof(LDKSha256)); return res; }
2259         ~Sha256() { Sha256_free(self); }
2260         Sha256& operator=(Sha256&& o) { Sha256_free(self); self = o.self; memset(&o, 0, sizeof(Sha256)); return *this; }
2261         LDKSha256* operator &() { return &self; }
2262         LDKSha256* operator ->() { return &self; }
2263         const LDKSha256* operator &() const { return &self; }
2264         const LDKSha256* operator ->() const { return &self; }
2265 };
2266 class Description {
2267 private:
2268         LDKDescription self;
2269 public:
2270         Description(const Description&) = delete;
2271         Description(Description&& o) : self(o.self) { memset(&o, 0, sizeof(Description)); }
2272         Description(LDKDescription&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDescription)); }
2273         operator LDKDescription() && { LDKDescription res = self; memset(&self, 0, sizeof(LDKDescription)); return res; }
2274         ~Description() { Description_free(self); }
2275         Description& operator=(Description&& o) { Description_free(self); self = o.self; memset(&o, 0, sizeof(Description)); return *this; }
2276         LDKDescription* operator &() { return &self; }
2277         LDKDescription* operator ->() { return &self; }
2278         const LDKDescription* operator &() const { return &self; }
2279         const LDKDescription* operator ->() const { return &self; }
2280 };
2281 class PayeePubKey {
2282 private:
2283         LDKPayeePubKey self;
2284 public:
2285         PayeePubKey(const PayeePubKey&) = delete;
2286         PayeePubKey(PayeePubKey&& o) : self(o.self) { memset(&o, 0, sizeof(PayeePubKey)); }
2287         PayeePubKey(LDKPayeePubKey&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPayeePubKey)); }
2288         operator LDKPayeePubKey() && { LDKPayeePubKey res = self; memset(&self, 0, sizeof(LDKPayeePubKey)); return res; }
2289         ~PayeePubKey() { PayeePubKey_free(self); }
2290         PayeePubKey& operator=(PayeePubKey&& o) { PayeePubKey_free(self); self = o.self; memset(&o, 0, sizeof(PayeePubKey)); return *this; }
2291         LDKPayeePubKey* operator &() { return &self; }
2292         LDKPayeePubKey* operator ->() { return &self; }
2293         const LDKPayeePubKey* operator &() const { return &self; }
2294         const LDKPayeePubKey* operator ->() const { return &self; }
2295 };
2296 class ExpiryTime {
2297 private:
2298         LDKExpiryTime self;
2299 public:
2300         ExpiryTime(const ExpiryTime&) = delete;
2301         ExpiryTime(ExpiryTime&& o) : self(o.self) { memset(&o, 0, sizeof(ExpiryTime)); }
2302         ExpiryTime(LDKExpiryTime&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKExpiryTime)); }
2303         operator LDKExpiryTime() && { LDKExpiryTime res = self; memset(&self, 0, sizeof(LDKExpiryTime)); return res; }
2304         ~ExpiryTime() { ExpiryTime_free(self); }
2305         ExpiryTime& operator=(ExpiryTime&& o) { ExpiryTime_free(self); self = o.self; memset(&o, 0, sizeof(ExpiryTime)); return *this; }
2306         LDKExpiryTime* operator &() { return &self; }
2307         LDKExpiryTime* operator ->() { return &self; }
2308         const LDKExpiryTime* operator &() const { return &self; }
2309         const LDKExpiryTime* operator ->() const { return &self; }
2310 };
2311 class MinFinalCltvExpiry {
2312 private:
2313         LDKMinFinalCltvExpiry self;
2314 public:
2315         MinFinalCltvExpiry(const MinFinalCltvExpiry&) = delete;
2316         MinFinalCltvExpiry(MinFinalCltvExpiry&& o) : self(o.self) { memset(&o, 0, sizeof(MinFinalCltvExpiry)); }
2317         MinFinalCltvExpiry(LDKMinFinalCltvExpiry&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMinFinalCltvExpiry)); }
2318         operator LDKMinFinalCltvExpiry() && { LDKMinFinalCltvExpiry res = self; memset(&self, 0, sizeof(LDKMinFinalCltvExpiry)); return res; }
2319         ~MinFinalCltvExpiry() { MinFinalCltvExpiry_free(self); }
2320         MinFinalCltvExpiry& operator=(MinFinalCltvExpiry&& o) { MinFinalCltvExpiry_free(self); self = o.self; memset(&o, 0, sizeof(MinFinalCltvExpiry)); return *this; }
2321         LDKMinFinalCltvExpiry* operator &() { return &self; }
2322         LDKMinFinalCltvExpiry* operator ->() { return &self; }
2323         const LDKMinFinalCltvExpiry* operator &() const { return &self; }
2324         const LDKMinFinalCltvExpiry* operator ->() const { return &self; }
2325 };
2326 class Fallback {
2327 private:
2328         LDKFallback self;
2329 public:
2330         Fallback(const Fallback&) = delete;
2331         Fallback(Fallback&& o) : self(o.self) { memset(&o, 0, sizeof(Fallback)); }
2332         Fallback(LDKFallback&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFallback)); }
2333         operator LDKFallback() && { LDKFallback res = self; memset(&self, 0, sizeof(LDKFallback)); return res; }
2334         ~Fallback() { Fallback_free(self); }
2335         Fallback& operator=(Fallback&& o) { Fallback_free(self); self = o.self; memset(&o, 0, sizeof(Fallback)); return *this; }
2336         LDKFallback* operator &() { return &self; }
2337         LDKFallback* operator ->() { return &self; }
2338         const LDKFallback* operator &() const { return &self; }
2339         const LDKFallback* operator ->() const { return &self; }
2340 };
2341 class InvoiceSignature {
2342 private:
2343         LDKInvoiceSignature self;
2344 public:
2345         InvoiceSignature(const InvoiceSignature&) = delete;
2346         InvoiceSignature(InvoiceSignature&& o) : self(o.self) { memset(&o, 0, sizeof(InvoiceSignature)); }
2347         InvoiceSignature(LDKInvoiceSignature&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInvoiceSignature)); }
2348         operator LDKInvoiceSignature() && { LDKInvoiceSignature res = self; memset(&self, 0, sizeof(LDKInvoiceSignature)); return res; }
2349         ~InvoiceSignature() { InvoiceSignature_free(self); }
2350         InvoiceSignature& operator=(InvoiceSignature&& o) { InvoiceSignature_free(self); self = o.self; memset(&o, 0, sizeof(InvoiceSignature)); return *this; }
2351         LDKInvoiceSignature* operator &() { return &self; }
2352         LDKInvoiceSignature* operator ->() { return &self; }
2353         const LDKInvoiceSignature* operator &() const { return &self; }
2354         const LDKInvoiceSignature* operator ->() const { return &self; }
2355 };
2356 class PrivateRoute {
2357 private:
2358         LDKPrivateRoute self;
2359 public:
2360         PrivateRoute(const PrivateRoute&) = delete;
2361         PrivateRoute(PrivateRoute&& o) : self(o.self) { memset(&o, 0, sizeof(PrivateRoute)); }
2362         PrivateRoute(LDKPrivateRoute&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPrivateRoute)); }
2363         operator LDKPrivateRoute() && { LDKPrivateRoute res = self; memset(&self, 0, sizeof(LDKPrivateRoute)); return res; }
2364         ~PrivateRoute() { PrivateRoute_free(self); }
2365         PrivateRoute& operator=(PrivateRoute&& o) { PrivateRoute_free(self); self = o.self; memset(&o, 0, sizeof(PrivateRoute)); return *this; }
2366         LDKPrivateRoute* operator &() { return &self; }
2367         LDKPrivateRoute* operator ->() { return &self; }
2368         const LDKPrivateRoute* operator &() const { return &self; }
2369         const LDKPrivateRoute* operator ->() const { return &self; }
2370 };
2371 class CreationError {
2372 private:
2373         LDKCreationError self;
2374 public:
2375         CreationError(const CreationError&) = delete;
2376         CreationError(CreationError&& o) : self(o.self) { memset(&o, 0, sizeof(CreationError)); }
2377         CreationError(LDKCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCreationError)); }
2378         operator LDKCreationError() && { LDKCreationError res = self; memset(&self, 0, sizeof(LDKCreationError)); return res; }
2379         CreationError& operator=(CreationError&& o) { self = o.self; memset(&o, 0, sizeof(CreationError)); return *this; }
2380         LDKCreationError* operator &() { return &self; }
2381         LDKCreationError* operator ->() { return &self; }
2382         const LDKCreationError* operator &() const { return &self; }
2383         const LDKCreationError* operator ->() const { return &self; }
2384 };
2385 class SemanticError {
2386 private:
2387         LDKSemanticError self;
2388 public:
2389         SemanticError(const SemanticError&) = delete;
2390         SemanticError(SemanticError&& o) : self(o.self) { memset(&o, 0, sizeof(SemanticError)); }
2391         SemanticError(LDKSemanticError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSemanticError)); }
2392         operator LDKSemanticError() && { LDKSemanticError res = self; memset(&self, 0, sizeof(LDKSemanticError)); return res; }
2393         SemanticError& operator=(SemanticError&& o) { self = o.self; memset(&o, 0, sizeof(SemanticError)); return *this; }
2394         LDKSemanticError* operator &() { return &self; }
2395         LDKSemanticError* operator ->() { return &self; }
2396         const LDKSemanticError* operator &() const { return &self; }
2397         const LDKSemanticError* operator ->() const { return &self; }
2398 };
2399 class SignOrCreationError {
2400 private:
2401         LDKSignOrCreationError self;
2402 public:
2403         SignOrCreationError(const SignOrCreationError&) = delete;
2404         SignOrCreationError(SignOrCreationError&& o) : self(o.self) { memset(&o, 0, sizeof(SignOrCreationError)); }
2405         SignOrCreationError(LDKSignOrCreationError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSignOrCreationError)); }
2406         operator LDKSignOrCreationError() && { LDKSignOrCreationError res = self; memset(&self, 0, sizeof(LDKSignOrCreationError)); return res; }
2407         ~SignOrCreationError() { SignOrCreationError_free(self); }
2408         SignOrCreationError& operator=(SignOrCreationError&& o) { SignOrCreationError_free(self); self = o.self; memset(&o, 0, sizeof(SignOrCreationError)); return *this; }
2409         LDKSignOrCreationError* operator &() { return &self; }
2410         LDKSignOrCreationError* operator ->() { return &self; }
2411         const LDKSignOrCreationError* operator &() const { return &self; }
2412         const LDKSignOrCreationError* operator ->() const { return &self; }
2413 };
2414 class ChannelMonitorUpdate {
2415 private:
2416         LDKChannelMonitorUpdate self;
2417 public:
2418         ChannelMonitorUpdate(const ChannelMonitorUpdate&) = delete;
2419         ChannelMonitorUpdate(ChannelMonitorUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitorUpdate)); }
2420         ChannelMonitorUpdate(LDKChannelMonitorUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitorUpdate)); }
2421         operator LDKChannelMonitorUpdate() && { LDKChannelMonitorUpdate res = self; memset(&self, 0, sizeof(LDKChannelMonitorUpdate)); return res; }
2422         ~ChannelMonitorUpdate() { ChannelMonitorUpdate_free(self); }
2423         ChannelMonitorUpdate& operator=(ChannelMonitorUpdate&& o) { ChannelMonitorUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitorUpdate)); return *this; }
2424         LDKChannelMonitorUpdate* operator &() { return &self; }
2425         LDKChannelMonitorUpdate* operator ->() { return &self; }
2426         const LDKChannelMonitorUpdate* operator &() const { return &self; }
2427         const LDKChannelMonitorUpdate* operator ->() const { return &self; }
2428 };
2429 class MonitorEvent {
2430 private:
2431         LDKMonitorEvent self;
2432 public:
2433         MonitorEvent(const MonitorEvent&) = delete;
2434         MonitorEvent(MonitorEvent&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorEvent)); }
2435         MonitorEvent(LDKMonitorEvent&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorEvent)); }
2436         operator LDKMonitorEvent() && { LDKMonitorEvent res = self; memset(&self, 0, sizeof(LDKMonitorEvent)); return res; }
2437         ~MonitorEvent() { MonitorEvent_free(self); }
2438         MonitorEvent& operator=(MonitorEvent&& o) { MonitorEvent_free(self); self = o.self; memset(&o, 0, sizeof(MonitorEvent)); return *this; }
2439         LDKMonitorEvent* operator &() { return &self; }
2440         LDKMonitorEvent* operator ->() { return &self; }
2441         const LDKMonitorEvent* operator &() const { return &self; }
2442         const LDKMonitorEvent* operator ->() const { return &self; }
2443 };
2444 class HTLCUpdate {
2445 private:
2446         LDKHTLCUpdate self;
2447 public:
2448         HTLCUpdate(const HTLCUpdate&) = delete;
2449         HTLCUpdate(HTLCUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(HTLCUpdate)); }
2450         HTLCUpdate(LDKHTLCUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKHTLCUpdate)); }
2451         operator LDKHTLCUpdate() && { LDKHTLCUpdate res = self; memset(&self, 0, sizeof(LDKHTLCUpdate)); return res; }
2452         ~HTLCUpdate() { HTLCUpdate_free(self); }
2453         HTLCUpdate& operator=(HTLCUpdate&& o) { HTLCUpdate_free(self); self = o.self; memset(&o, 0, sizeof(HTLCUpdate)); return *this; }
2454         LDKHTLCUpdate* operator &() { return &self; }
2455         LDKHTLCUpdate* operator ->() { return &self; }
2456         const LDKHTLCUpdate* operator &() const { return &self; }
2457         const LDKHTLCUpdate* operator ->() const { return &self; }
2458 };
2459 class Balance {
2460 private:
2461         LDKBalance self;
2462 public:
2463         Balance(const Balance&) = delete;
2464         Balance(Balance&& o) : self(o.self) { memset(&o, 0, sizeof(Balance)); }
2465         Balance(LDKBalance&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKBalance)); }
2466         operator LDKBalance() && { LDKBalance res = self; memset(&self, 0, sizeof(LDKBalance)); return res; }
2467         ~Balance() { Balance_free(self); }
2468         Balance& operator=(Balance&& o) { Balance_free(self); self = o.self; memset(&o, 0, sizeof(Balance)); return *this; }
2469         LDKBalance* operator &() { return &self; }
2470         LDKBalance* operator ->() { return &self; }
2471         const LDKBalance* operator &() const { return &self; }
2472         const LDKBalance* operator ->() const { return &self; }
2473 };
2474 class ChannelMonitor {
2475 private:
2476         LDKChannelMonitor self;
2477 public:
2478         ChannelMonitor(const ChannelMonitor&) = delete;
2479         ChannelMonitor(ChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMonitor)); }
2480         ChannelMonitor(LDKChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMonitor)); }
2481         operator LDKChannelMonitor() && { LDKChannelMonitor res = self; memset(&self, 0, sizeof(LDKChannelMonitor)); return res; }
2482         ~ChannelMonitor() { ChannelMonitor_free(self); }
2483         ChannelMonitor& operator=(ChannelMonitor&& o) { ChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMonitor)); return *this; }
2484         LDKChannelMonitor* operator &() { return &self; }
2485         LDKChannelMonitor* operator ->() { return &self; }
2486         const LDKChannelMonitor* operator &() const { return &self; }
2487         const LDKChannelMonitor* operator ->() const { return &self; }
2488 };
2489 class CustomMessageHandler {
2490 private:
2491         LDKCustomMessageHandler self;
2492 public:
2493         CustomMessageHandler(const CustomMessageHandler&) = delete;
2494         CustomMessageHandler(CustomMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(CustomMessageHandler)); }
2495         CustomMessageHandler(LDKCustomMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCustomMessageHandler)); }
2496         operator LDKCustomMessageHandler() && { LDKCustomMessageHandler res = self; memset(&self, 0, sizeof(LDKCustomMessageHandler)); return res; }
2497         ~CustomMessageHandler() { CustomMessageHandler_free(self); }
2498         CustomMessageHandler& operator=(CustomMessageHandler&& o) { CustomMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(CustomMessageHandler)); return *this; }
2499         LDKCustomMessageHandler* operator &() { return &self; }
2500         LDKCustomMessageHandler* operator ->() { return &self; }
2501         const LDKCustomMessageHandler* operator &() const { return &self; }
2502         const LDKCustomMessageHandler* operator ->() const { return &self; }
2503         /**
2504          *  Called with the message type that was received and the buffer to be read.
2505          *  Can return a `MessageHandlingError` if the message could not be handled.
2506          */
2507         inline LDK::CResult_NoneLightningErrorZ handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id);
2508         /**
2509          *  Gets the list of pending messages which were generated by the custom message
2510          *  handler, clearing the list in the process. The first tuple element must
2511          *  correspond to the intended recipients node ids. If no connection to one of the
2512          *  specified node does not exist, the message is simply not sent to it.
2513          */
2514         inline LDK::CVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg();
2515 };
2516 class IgnoringMessageHandler {
2517 private:
2518         LDKIgnoringMessageHandler self;
2519 public:
2520         IgnoringMessageHandler(const IgnoringMessageHandler&) = delete;
2521         IgnoringMessageHandler(IgnoringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(IgnoringMessageHandler)); }
2522         IgnoringMessageHandler(LDKIgnoringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKIgnoringMessageHandler)); }
2523         operator LDKIgnoringMessageHandler() && { LDKIgnoringMessageHandler res = self; memset(&self, 0, sizeof(LDKIgnoringMessageHandler)); return res; }
2524         ~IgnoringMessageHandler() { IgnoringMessageHandler_free(self); }
2525         IgnoringMessageHandler& operator=(IgnoringMessageHandler&& o) { IgnoringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(IgnoringMessageHandler)); return *this; }
2526         LDKIgnoringMessageHandler* operator &() { return &self; }
2527         LDKIgnoringMessageHandler* operator ->() { return &self; }
2528         const LDKIgnoringMessageHandler* operator &() const { return &self; }
2529         const LDKIgnoringMessageHandler* operator ->() const { return &self; }
2530 };
2531 class ErroringMessageHandler {
2532 private:
2533         LDKErroringMessageHandler self;
2534 public:
2535         ErroringMessageHandler(const ErroringMessageHandler&) = delete;
2536         ErroringMessageHandler(ErroringMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ErroringMessageHandler)); }
2537         ErroringMessageHandler(LDKErroringMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErroringMessageHandler)); }
2538         operator LDKErroringMessageHandler() && { LDKErroringMessageHandler res = self; memset(&self, 0, sizeof(LDKErroringMessageHandler)); return res; }
2539         ~ErroringMessageHandler() { ErroringMessageHandler_free(self); }
2540         ErroringMessageHandler& operator=(ErroringMessageHandler&& o) { ErroringMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ErroringMessageHandler)); return *this; }
2541         LDKErroringMessageHandler* operator &() { return &self; }
2542         LDKErroringMessageHandler* operator ->() { return &self; }
2543         const LDKErroringMessageHandler* operator &() const { return &self; }
2544         const LDKErroringMessageHandler* operator ->() const { return &self; }
2545 };
2546 class MessageHandler {
2547 private:
2548         LDKMessageHandler self;
2549 public:
2550         MessageHandler(const MessageHandler&) = delete;
2551         MessageHandler(MessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(MessageHandler)); }
2552         MessageHandler(LDKMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMessageHandler)); }
2553         operator LDKMessageHandler() && { LDKMessageHandler res = self; memset(&self, 0, sizeof(LDKMessageHandler)); return res; }
2554         ~MessageHandler() { MessageHandler_free(self); }
2555         MessageHandler& operator=(MessageHandler&& o) { MessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(MessageHandler)); return *this; }
2556         LDKMessageHandler* operator &() { return &self; }
2557         LDKMessageHandler* operator ->() { return &self; }
2558         const LDKMessageHandler* operator &() const { return &self; }
2559         const LDKMessageHandler* operator ->() const { return &self; }
2560 };
2561 class SocketDescriptor {
2562 private:
2563         LDKSocketDescriptor self;
2564 public:
2565         SocketDescriptor(const SocketDescriptor&) = delete;
2566         SocketDescriptor(SocketDescriptor&& o) : self(o.self) { memset(&o, 0, sizeof(SocketDescriptor)); }
2567         SocketDescriptor(LDKSocketDescriptor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKSocketDescriptor)); }
2568         operator LDKSocketDescriptor() && { LDKSocketDescriptor res = self; memset(&self, 0, sizeof(LDKSocketDescriptor)); return res; }
2569         ~SocketDescriptor() { SocketDescriptor_free(self); }
2570         SocketDescriptor& operator=(SocketDescriptor&& o) { SocketDescriptor_free(self); self = o.self; memset(&o, 0, sizeof(SocketDescriptor)); return *this; }
2571         LDKSocketDescriptor* operator &() { return &self; }
2572         LDKSocketDescriptor* operator ->() { return &self; }
2573         const LDKSocketDescriptor* operator &() const { return &self; }
2574         const LDKSocketDescriptor* operator ->() const { return &self; }
2575         /**
2576          *  Attempts to send some data from the given slice to the peer.
2577          * 
2578          *  Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
2579          *  Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
2580          *  called and further write attempts may occur until that time.
2581          * 
2582          *  If the returned size is smaller than `data.len()`, a
2583          *  [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
2584          *  written. Additionally, until a `send_data` event completes fully, no further
2585          *  [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
2586          *  prevent denial-of-service issues, you should not read or buffer any data from the socket
2587          *  until then.
2588          * 
2589          *  If a [`PeerManager::read_event`] call on this descriptor had previously returned true
2590          *  (indicating that read events should be paused to prevent DoS in the send buffer),
2591          *  `resume_read` may be set indicating that read events on this descriptor should resume. A
2592          *  `resume_read` of false carries no meaning, and should not cause any action.
2593          */
2594         inline uintptr_t send_data(struct LDKu8slice data, bool resume_read);
2595         /**
2596          *  Disconnect the socket pointed to by this SocketDescriptor.
2597          * 
2598          *  You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
2599          *  call (doing so is a noop).
2600          */
2601         inline void disconnect_socket();
2602         /** Checks if two objects are equal given this object's this_arg pointer and another object. */
2603         inline bool eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
2604         /**
2605          * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
2606          * This is used, for example, for inclusion of this object in a hash map.
2607          */
2608         inline uint64_t hash();
2609 };
2610 class PeerHandleError {
2611 private:
2612         LDKPeerHandleError self;
2613 public:
2614         PeerHandleError(const PeerHandleError&) = delete;
2615         PeerHandleError(PeerHandleError&& o) : self(o.self) { memset(&o, 0, sizeof(PeerHandleError)); }
2616         PeerHandleError(LDKPeerHandleError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerHandleError)); }
2617         operator LDKPeerHandleError() && { LDKPeerHandleError res = self; memset(&self, 0, sizeof(LDKPeerHandleError)); return res; }
2618         ~PeerHandleError() { PeerHandleError_free(self); }
2619         PeerHandleError& operator=(PeerHandleError&& o) { PeerHandleError_free(self); self = o.self; memset(&o, 0, sizeof(PeerHandleError)); return *this; }
2620         LDKPeerHandleError* operator &() { return &self; }
2621         LDKPeerHandleError* operator ->() { return &self; }
2622         const LDKPeerHandleError* operator &() const { return &self; }
2623         const LDKPeerHandleError* operator ->() const { return &self; }
2624 };
2625 class PeerManager {
2626 private:
2627         LDKPeerManager self;
2628 public:
2629         PeerManager(const PeerManager&) = delete;
2630         PeerManager(PeerManager&& o) : self(o.self) { memset(&o, 0, sizeof(PeerManager)); }
2631         PeerManager(LDKPeerManager&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPeerManager)); }
2632         operator LDKPeerManager() && { LDKPeerManager res = self; memset(&self, 0, sizeof(LDKPeerManager)); return res; }
2633         ~PeerManager() { PeerManager_free(self); }
2634         PeerManager& operator=(PeerManager&& o) { PeerManager_free(self); self = o.self; memset(&o, 0, sizeof(PeerManager)); return *this; }
2635         LDKPeerManager* operator &() { return &self; }
2636         LDKPeerManager* operator ->() { return &self; }
2637         const LDKPeerManager* operator &() const { return &self; }
2638         const LDKPeerManager* operator ->() const { return &self; }
2639 };
2640 class NodeId {
2641 private:
2642         LDKNodeId self;
2643 public:
2644         NodeId(const NodeId&) = delete;
2645         NodeId(NodeId&& o) : self(o.self) { memset(&o, 0, sizeof(NodeId)); }
2646         NodeId(LDKNodeId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeId)); }
2647         operator LDKNodeId() && { LDKNodeId res = self; memset(&self, 0, sizeof(LDKNodeId)); return res; }
2648         ~NodeId() { NodeId_free(self); }
2649         NodeId& operator=(NodeId&& o) { NodeId_free(self); self = o.self; memset(&o, 0, sizeof(NodeId)); return *this; }
2650         LDKNodeId* operator &() { return &self; }
2651         LDKNodeId* operator ->() { return &self; }
2652         const LDKNodeId* operator &() const { return &self; }
2653         const LDKNodeId* operator ->() const { return &self; }
2654 };
2655 class NetworkGraph {
2656 private:
2657         LDKNetworkGraph self;
2658 public:
2659         NetworkGraph(const NetworkGraph&) = delete;
2660         NetworkGraph(NetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkGraph)); }
2661         NetworkGraph(LDKNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkGraph)); }
2662         operator LDKNetworkGraph() && { LDKNetworkGraph res = self; memset(&self, 0, sizeof(LDKNetworkGraph)); return res; }
2663         ~NetworkGraph() { NetworkGraph_free(self); }
2664         NetworkGraph& operator=(NetworkGraph&& o) { NetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(NetworkGraph)); return *this; }
2665         LDKNetworkGraph* operator &() { return &self; }
2666         LDKNetworkGraph* operator ->() { return &self; }
2667         const LDKNetworkGraph* operator &() const { return &self; }
2668         const LDKNetworkGraph* operator ->() const { return &self; }
2669 };
2670 class ReadOnlyNetworkGraph {
2671 private:
2672         LDKReadOnlyNetworkGraph self;
2673 public:
2674         ReadOnlyNetworkGraph(const ReadOnlyNetworkGraph&) = delete;
2675         ReadOnlyNetworkGraph(ReadOnlyNetworkGraph&& o) : self(o.self) { memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); }
2676         ReadOnlyNetworkGraph(LDKReadOnlyNetworkGraph&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReadOnlyNetworkGraph)); }
2677         operator LDKReadOnlyNetworkGraph() && { LDKReadOnlyNetworkGraph res = self; memset(&self, 0, sizeof(LDKReadOnlyNetworkGraph)); return res; }
2678         ~ReadOnlyNetworkGraph() { ReadOnlyNetworkGraph_free(self); }
2679         ReadOnlyNetworkGraph& operator=(ReadOnlyNetworkGraph&& o) { ReadOnlyNetworkGraph_free(self); self = o.self; memset(&o, 0, sizeof(ReadOnlyNetworkGraph)); return *this; }
2680         LDKReadOnlyNetworkGraph* operator &() { return &self; }
2681         LDKReadOnlyNetworkGraph* operator ->() { return &self; }
2682         const LDKReadOnlyNetworkGraph* operator &() const { return &self; }
2683         const LDKReadOnlyNetworkGraph* operator ->() const { return &self; }
2684 };
2685 class NetworkUpdate {
2686 private:
2687         LDKNetworkUpdate self;
2688 public:
2689         NetworkUpdate(const NetworkUpdate&) = delete;
2690         NetworkUpdate(NetworkUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(NetworkUpdate)); }
2691         NetworkUpdate(LDKNetworkUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetworkUpdate)); }
2692         operator LDKNetworkUpdate() && { LDKNetworkUpdate res = self; memset(&self, 0, sizeof(LDKNetworkUpdate)); return res; }
2693         ~NetworkUpdate() { NetworkUpdate_free(self); }
2694         NetworkUpdate& operator=(NetworkUpdate&& o) { NetworkUpdate_free(self); self = o.self; memset(&o, 0, sizeof(NetworkUpdate)); return *this; }
2695         LDKNetworkUpdate* operator &() { return &self; }
2696         LDKNetworkUpdate* operator ->() { return &self; }
2697         const LDKNetworkUpdate* operator &() const { return &self; }
2698         const LDKNetworkUpdate* operator ->() const { return &self; }
2699 };
2700 class NetGraphMsgHandler {
2701 private:
2702         LDKNetGraphMsgHandler self;
2703 public:
2704         NetGraphMsgHandler(const NetGraphMsgHandler&) = delete;
2705         NetGraphMsgHandler(NetGraphMsgHandler&& o) : self(o.self) { memset(&o, 0, sizeof(NetGraphMsgHandler)); }
2706         NetGraphMsgHandler(LDKNetGraphMsgHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetGraphMsgHandler)); }
2707         operator LDKNetGraphMsgHandler() && { LDKNetGraphMsgHandler res = self; memset(&self, 0, sizeof(LDKNetGraphMsgHandler)); return res; }
2708         ~NetGraphMsgHandler() { NetGraphMsgHandler_free(self); }
2709         NetGraphMsgHandler& operator=(NetGraphMsgHandler&& o) { NetGraphMsgHandler_free(self); self = o.self; memset(&o, 0, sizeof(NetGraphMsgHandler)); return *this; }
2710         LDKNetGraphMsgHandler* operator &() { return &self; }
2711         LDKNetGraphMsgHandler* operator ->() { return &self; }
2712         const LDKNetGraphMsgHandler* operator &() const { return &self; }
2713         const LDKNetGraphMsgHandler* operator ->() const { return &self; }
2714 };
2715 class ChannelUpdateInfo {
2716 private:
2717         LDKChannelUpdateInfo self;
2718 public:
2719         ChannelUpdateInfo(const ChannelUpdateInfo&) = delete;
2720         ChannelUpdateInfo(ChannelUpdateInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdateInfo)); }
2721         ChannelUpdateInfo(LDKChannelUpdateInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdateInfo)); }
2722         operator LDKChannelUpdateInfo() && { LDKChannelUpdateInfo res = self; memset(&self, 0, sizeof(LDKChannelUpdateInfo)); return res; }
2723         ~ChannelUpdateInfo() { ChannelUpdateInfo_free(self); }
2724         ChannelUpdateInfo& operator=(ChannelUpdateInfo&& o) { ChannelUpdateInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdateInfo)); return *this; }
2725         LDKChannelUpdateInfo* operator &() { return &self; }
2726         LDKChannelUpdateInfo* operator ->() { return &self; }
2727         const LDKChannelUpdateInfo* operator &() const { return &self; }
2728         const LDKChannelUpdateInfo* operator ->() const { return &self; }
2729 };
2730 class ChannelInfo {
2731 private:
2732         LDKChannelInfo self;
2733 public:
2734         ChannelInfo(const ChannelInfo&) = delete;
2735         ChannelInfo(ChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelInfo)); }
2736         ChannelInfo(LDKChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelInfo)); }
2737         operator LDKChannelInfo() && { LDKChannelInfo res = self; memset(&self, 0, sizeof(LDKChannelInfo)); return res; }
2738         ~ChannelInfo() { ChannelInfo_free(self); }
2739         ChannelInfo& operator=(ChannelInfo&& o) { ChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(ChannelInfo)); return *this; }
2740         LDKChannelInfo* operator &() { return &self; }
2741         LDKChannelInfo* operator ->() { return &self; }
2742         const LDKChannelInfo* operator &() const { return &self; }
2743         const LDKChannelInfo* operator ->() const { return &self; }
2744 };
2745 class DirectedChannelInfo {
2746 private:
2747         LDKDirectedChannelInfo self;
2748 public:
2749         DirectedChannelInfo(const DirectedChannelInfo&) = delete;
2750         DirectedChannelInfo(DirectedChannelInfo&& o) : self(o.self) { memset(&o, 0, sizeof(DirectedChannelInfo)); }
2751         DirectedChannelInfo(LDKDirectedChannelInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDirectedChannelInfo)); }
2752         operator LDKDirectedChannelInfo() && { LDKDirectedChannelInfo res = self; memset(&self, 0, sizeof(LDKDirectedChannelInfo)); return res; }
2753         ~DirectedChannelInfo() { DirectedChannelInfo_free(self); }
2754         DirectedChannelInfo& operator=(DirectedChannelInfo&& o) { DirectedChannelInfo_free(self); self = o.self; memset(&o, 0, sizeof(DirectedChannelInfo)); return *this; }
2755         LDKDirectedChannelInfo* operator &() { return &self; }
2756         LDKDirectedChannelInfo* operator ->() { return &self; }
2757         const LDKDirectedChannelInfo* operator &() const { return &self; }
2758         const LDKDirectedChannelInfo* operator ->() const { return &self; }
2759 };
2760 class EffectiveCapacity {
2761 private:
2762         LDKEffectiveCapacity self;
2763 public:
2764         EffectiveCapacity(const EffectiveCapacity&) = delete;
2765         EffectiveCapacity(EffectiveCapacity&& o) : self(o.self) { memset(&o, 0, sizeof(EffectiveCapacity)); }
2766         EffectiveCapacity(LDKEffectiveCapacity&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKEffectiveCapacity)); }
2767         operator LDKEffectiveCapacity() && { LDKEffectiveCapacity res = self; memset(&self, 0, sizeof(LDKEffectiveCapacity)); return res; }
2768         ~EffectiveCapacity() { EffectiveCapacity_free(self); }
2769         EffectiveCapacity& operator=(EffectiveCapacity&& o) { EffectiveCapacity_free(self); self = o.self; memset(&o, 0, sizeof(EffectiveCapacity)); return *this; }
2770         LDKEffectiveCapacity* operator &() { return &self; }
2771         LDKEffectiveCapacity* operator ->() { return &self; }
2772         const LDKEffectiveCapacity* operator &() const { return &self; }
2773         const LDKEffectiveCapacity* operator ->() const { return &self; }
2774 };
2775 class RoutingFees {
2776 private:
2777         LDKRoutingFees self;
2778 public:
2779         RoutingFees(const RoutingFees&) = delete;
2780         RoutingFees(RoutingFees&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingFees)); }
2781         RoutingFees(LDKRoutingFees&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingFees)); }
2782         operator LDKRoutingFees() && { LDKRoutingFees res = self; memset(&self, 0, sizeof(LDKRoutingFees)); return res; }
2783         ~RoutingFees() { RoutingFees_free(self); }
2784         RoutingFees& operator=(RoutingFees&& o) { RoutingFees_free(self); self = o.self; memset(&o, 0, sizeof(RoutingFees)); return *this; }
2785         LDKRoutingFees* operator &() { return &self; }
2786         LDKRoutingFees* operator ->() { return &self; }
2787         const LDKRoutingFees* operator &() const { return &self; }
2788         const LDKRoutingFees* operator ->() const { return &self; }
2789 };
2790 class NodeAnnouncementInfo {
2791 private:
2792         LDKNodeAnnouncementInfo self;
2793 public:
2794         NodeAnnouncementInfo(const NodeAnnouncementInfo&) = delete;
2795         NodeAnnouncementInfo(NodeAnnouncementInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncementInfo)); }
2796         NodeAnnouncementInfo(LDKNodeAnnouncementInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncementInfo)); }
2797         operator LDKNodeAnnouncementInfo() && { LDKNodeAnnouncementInfo res = self; memset(&self, 0, sizeof(LDKNodeAnnouncementInfo)); return res; }
2798         ~NodeAnnouncementInfo() { NodeAnnouncementInfo_free(self); }
2799         NodeAnnouncementInfo& operator=(NodeAnnouncementInfo&& o) { NodeAnnouncementInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncementInfo)); return *this; }
2800         LDKNodeAnnouncementInfo* operator &() { return &self; }
2801         LDKNodeAnnouncementInfo* operator ->() { return &self; }
2802         const LDKNodeAnnouncementInfo* operator &() const { return &self; }
2803         const LDKNodeAnnouncementInfo* operator ->() const { return &self; }
2804 };
2805 class NodeInfo {
2806 private:
2807         LDKNodeInfo self;
2808 public:
2809         NodeInfo(const NodeInfo&) = delete;
2810         NodeInfo(NodeInfo&& o) : self(o.self) { memset(&o, 0, sizeof(NodeInfo)); }
2811         NodeInfo(LDKNodeInfo&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeInfo)); }
2812         operator LDKNodeInfo() && { LDKNodeInfo res = self; memset(&self, 0, sizeof(LDKNodeInfo)); return res; }
2813         ~NodeInfo() { NodeInfo_free(self); }
2814         NodeInfo& operator=(NodeInfo&& o) { NodeInfo_free(self); self = o.self; memset(&o, 0, sizeof(NodeInfo)); return *this; }
2815         LDKNodeInfo* operator &() { return &self; }
2816         LDKNodeInfo* operator ->() { return &self; }
2817         const LDKNodeInfo* operator &() const { return &self; }
2818         const LDKNodeInfo* operator ->() const { return &self; }
2819 };
2820 class DecodeError {
2821 private:
2822         LDKDecodeError self;
2823 public:
2824         DecodeError(const DecodeError&) = delete;
2825         DecodeError(DecodeError&& o) : self(o.self) { memset(&o, 0, sizeof(DecodeError)); }
2826         DecodeError(LDKDecodeError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDecodeError)); }
2827         operator LDKDecodeError() && { LDKDecodeError res = self; memset(&self, 0, sizeof(LDKDecodeError)); return res; }
2828         ~DecodeError() { DecodeError_free(self); }
2829         DecodeError& operator=(DecodeError&& o) { DecodeError_free(self); self = o.self; memset(&o, 0, sizeof(DecodeError)); return *this; }
2830         LDKDecodeError* operator &() { return &self; }
2831         LDKDecodeError* operator ->() { return &self; }
2832         const LDKDecodeError* operator &() const { return &self; }
2833         const LDKDecodeError* operator ->() const { return &self; }
2834 };
2835 class Init {
2836 private:
2837         LDKInit self;
2838 public:
2839         Init(const Init&) = delete;
2840         Init(Init&& o) : self(o.self) { memset(&o, 0, sizeof(Init)); }
2841         Init(LDKInit&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKInit)); }
2842         operator LDKInit() && { LDKInit res = self; memset(&self, 0, sizeof(LDKInit)); return res; }
2843         ~Init() { Init_free(self); }
2844         Init& operator=(Init&& o) { Init_free(self); self = o.self; memset(&o, 0, sizeof(Init)); return *this; }
2845         LDKInit* operator &() { return &self; }
2846         LDKInit* operator ->() { return &self; }
2847         const LDKInit* operator &() const { return &self; }
2848         const LDKInit* operator ->() const { return &self; }
2849 };
2850 class ErrorMessage {
2851 private:
2852         LDKErrorMessage self;
2853 public:
2854         ErrorMessage(const ErrorMessage&) = delete;
2855         ErrorMessage(ErrorMessage&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorMessage)); }
2856         ErrorMessage(LDKErrorMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorMessage)); }
2857         operator LDKErrorMessage() && { LDKErrorMessage res = self; memset(&self, 0, sizeof(LDKErrorMessage)); return res; }
2858         ~ErrorMessage() { ErrorMessage_free(self); }
2859         ErrorMessage& operator=(ErrorMessage&& o) { ErrorMessage_free(self); self = o.self; memset(&o, 0, sizeof(ErrorMessage)); return *this; }
2860         LDKErrorMessage* operator &() { return &self; }
2861         LDKErrorMessage* operator ->() { return &self; }
2862         const LDKErrorMessage* operator &() const { return &self; }
2863         const LDKErrorMessage* operator ->() const { return &self; }
2864 };
2865 class WarningMessage {
2866 private:
2867         LDKWarningMessage self;
2868 public:
2869         WarningMessage(const WarningMessage&) = delete;
2870         WarningMessage(WarningMessage&& o) : self(o.self) { memset(&o, 0, sizeof(WarningMessage)); }
2871         WarningMessage(LDKWarningMessage&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKWarningMessage)); }
2872         operator LDKWarningMessage() && { LDKWarningMessage res = self; memset(&self, 0, sizeof(LDKWarningMessage)); return res; }
2873         ~WarningMessage() { WarningMessage_free(self); }
2874         WarningMessage& operator=(WarningMessage&& o) { WarningMessage_free(self); self = o.self; memset(&o, 0, sizeof(WarningMessage)); return *this; }
2875         LDKWarningMessage* operator &() { return &self; }
2876         LDKWarningMessage* operator ->() { return &self; }
2877         const LDKWarningMessage* operator &() const { return &self; }
2878         const LDKWarningMessage* operator ->() const { return &self; }
2879 };
2880 class Ping {
2881 private:
2882         LDKPing self;
2883 public:
2884         Ping(const Ping&) = delete;
2885         Ping(Ping&& o) : self(o.self) { memset(&o, 0, sizeof(Ping)); }
2886         Ping(LDKPing&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPing)); }
2887         operator LDKPing() && { LDKPing res = self; memset(&self, 0, sizeof(LDKPing)); return res; }
2888         ~Ping() { Ping_free(self); }
2889         Ping& operator=(Ping&& o) { Ping_free(self); self = o.self; memset(&o, 0, sizeof(Ping)); return *this; }
2890         LDKPing* operator &() { return &self; }
2891         LDKPing* operator ->() { return &self; }
2892         const LDKPing* operator &() const { return &self; }
2893         const LDKPing* operator ->() const { return &self; }
2894 };
2895 class Pong {
2896 private:
2897         LDKPong self;
2898 public:
2899         Pong(const Pong&) = delete;
2900         Pong(Pong&& o) : self(o.self) { memset(&o, 0, sizeof(Pong)); }
2901         Pong(LDKPong&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPong)); }
2902         operator LDKPong() && { LDKPong res = self; memset(&self, 0, sizeof(LDKPong)); return res; }
2903         ~Pong() { Pong_free(self); }
2904         Pong& operator=(Pong&& o) { Pong_free(self); self = o.self; memset(&o, 0, sizeof(Pong)); return *this; }
2905         LDKPong* operator &() { return &self; }
2906         LDKPong* operator ->() { return &self; }
2907         const LDKPong* operator &() const { return &self; }
2908         const LDKPong* operator ->() const { return &self; }
2909 };
2910 class OpenChannel {
2911 private:
2912         LDKOpenChannel self;
2913 public:
2914         OpenChannel(const OpenChannel&) = delete;
2915         OpenChannel(OpenChannel&& o) : self(o.self) { memset(&o, 0, sizeof(OpenChannel)); }
2916         OpenChannel(LDKOpenChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKOpenChannel)); }
2917         operator LDKOpenChannel() && { LDKOpenChannel res = self; memset(&self, 0, sizeof(LDKOpenChannel)); return res; }
2918         ~OpenChannel() { OpenChannel_free(self); }
2919         OpenChannel& operator=(OpenChannel&& o) { OpenChannel_free(self); self = o.self; memset(&o, 0, sizeof(OpenChannel)); return *this; }
2920         LDKOpenChannel* operator &() { return &self; }
2921         LDKOpenChannel* operator ->() { return &self; }
2922         const LDKOpenChannel* operator &() const { return &self; }
2923         const LDKOpenChannel* operator ->() const { return &self; }
2924 };
2925 class AcceptChannel {
2926 private:
2927         LDKAcceptChannel self;
2928 public:
2929         AcceptChannel(const AcceptChannel&) = delete;
2930         AcceptChannel(AcceptChannel&& o) : self(o.self) { memset(&o, 0, sizeof(AcceptChannel)); }
2931         AcceptChannel(LDKAcceptChannel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAcceptChannel)); }
2932         operator LDKAcceptChannel() && { LDKAcceptChannel res = self; memset(&self, 0, sizeof(LDKAcceptChannel)); return res; }
2933         ~AcceptChannel() { AcceptChannel_free(self); }
2934         AcceptChannel& operator=(AcceptChannel&& o) { AcceptChannel_free(self); self = o.self; memset(&o, 0, sizeof(AcceptChannel)); return *this; }
2935         LDKAcceptChannel* operator &() { return &self; }
2936         LDKAcceptChannel* operator ->() { return &self; }
2937         const LDKAcceptChannel* operator &() const { return &self; }
2938         const LDKAcceptChannel* operator ->() const { return &self; }
2939 };
2940 class FundingCreated {
2941 private:
2942         LDKFundingCreated self;
2943 public:
2944         FundingCreated(const FundingCreated&) = delete;
2945         FundingCreated(FundingCreated&& o) : self(o.self) { memset(&o, 0, sizeof(FundingCreated)); }
2946         FundingCreated(LDKFundingCreated&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingCreated)); }
2947         operator LDKFundingCreated() && { LDKFundingCreated res = self; memset(&self, 0, sizeof(LDKFundingCreated)); return res; }
2948         ~FundingCreated() { FundingCreated_free(self); }
2949         FundingCreated& operator=(FundingCreated&& o) { FundingCreated_free(self); self = o.self; memset(&o, 0, sizeof(FundingCreated)); return *this; }
2950         LDKFundingCreated* operator &() { return &self; }
2951         LDKFundingCreated* operator ->() { return &self; }
2952         const LDKFundingCreated* operator &() const { return &self; }
2953         const LDKFundingCreated* operator ->() const { return &self; }
2954 };
2955 class FundingSigned {
2956 private:
2957         LDKFundingSigned self;
2958 public:
2959         FundingSigned(const FundingSigned&) = delete;
2960         FundingSigned(FundingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(FundingSigned)); }
2961         FundingSigned(LDKFundingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingSigned)); }
2962         operator LDKFundingSigned() && { LDKFundingSigned res = self; memset(&self, 0, sizeof(LDKFundingSigned)); return res; }
2963         ~FundingSigned() { FundingSigned_free(self); }
2964         FundingSigned& operator=(FundingSigned&& o) { FundingSigned_free(self); self = o.self; memset(&o, 0, sizeof(FundingSigned)); return *this; }
2965         LDKFundingSigned* operator &() { return &self; }
2966         LDKFundingSigned* operator ->() { return &self; }
2967         const LDKFundingSigned* operator &() const { return &self; }
2968         const LDKFundingSigned* operator ->() const { return &self; }
2969 };
2970 class FundingLocked {
2971 private:
2972         LDKFundingLocked self;
2973 public:
2974         FundingLocked(const FundingLocked&) = delete;
2975         FundingLocked(FundingLocked&& o) : self(o.self) { memset(&o, 0, sizeof(FundingLocked)); }
2976         FundingLocked(LDKFundingLocked&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKFundingLocked)); }
2977         operator LDKFundingLocked() && { LDKFundingLocked res = self; memset(&self, 0, sizeof(LDKFundingLocked)); return res; }
2978         ~FundingLocked() { FundingLocked_free(self); }
2979         FundingLocked& operator=(FundingLocked&& o) { FundingLocked_free(self); self = o.self; memset(&o, 0, sizeof(FundingLocked)); return *this; }
2980         LDKFundingLocked* operator &() { return &self; }
2981         LDKFundingLocked* operator ->() { return &self; }
2982         const LDKFundingLocked* operator &() const { return &self; }
2983         const LDKFundingLocked* operator ->() const { return &self; }
2984 };
2985 class Shutdown {
2986 private:
2987         LDKShutdown self;
2988 public:
2989         Shutdown(const Shutdown&) = delete;
2990         Shutdown(Shutdown&& o) : self(o.self) { memset(&o, 0, sizeof(Shutdown)); }
2991         Shutdown(LDKShutdown&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKShutdown)); }
2992         operator LDKShutdown() && { LDKShutdown res = self; memset(&self, 0, sizeof(LDKShutdown)); return res; }
2993         ~Shutdown() { Shutdown_free(self); }
2994         Shutdown& operator=(Shutdown&& o) { Shutdown_free(self); self = o.self; memset(&o, 0, sizeof(Shutdown)); return *this; }
2995         LDKShutdown* operator &() { return &self; }
2996         LDKShutdown* operator ->() { return &self; }
2997         const LDKShutdown* operator &() const { return &self; }
2998         const LDKShutdown* operator ->() const { return &self; }
2999 };
3000 class ClosingSignedFeeRange {
3001 private:
3002         LDKClosingSignedFeeRange self;
3003 public:
3004         ClosingSignedFeeRange(const ClosingSignedFeeRange&) = delete;
3005         ClosingSignedFeeRange(ClosingSignedFeeRange&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSignedFeeRange)); }
3006         ClosingSignedFeeRange(LDKClosingSignedFeeRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSignedFeeRange)); }
3007         operator LDKClosingSignedFeeRange() && { LDKClosingSignedFeeRange res = self; memset(&self, 0, sizeof(LDKClosingSignedFeeRange)); return res; }
3008         ~ClosingSignedFeeRange() { ClosingSignedFeeRange_free(self); }
3009         ClosingSignedFeeRange& operator=(ClosingSignedFeeRange&& o) { ClosingSignedFeeRange_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSignedFeeRange)); return *this; }
3010         LDKClosingSignedFeeRange* operator &() { return &self; }
3011         LDKClosingSignedFeeRange* operator ->() { return &self; }
3012         const LDKClosingSignedFeeRange* operator &() const { return &self; }
3013         const LDKClosingSignedFeeRange* operator ->() const { return &self; }
3014 };
3015 class ClosingSigned {
3016 private:
3017         LDKClosingSigned self;
3018 public:
3019         ClosingSigned(const ClosingSigned&) = delete;
3020         ClosingSigned(ClosingSigned&& o) : self(o.self) { memset(&o, 0, sizeof(ClosingSigned)); }
3021         ClosingSigned(LDKClosingSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKClosingSigned)); }
3022         operator LDKClosingSigned() && { LDKClosingSigned res = self; memset(&self, 0, sizeof(LDKClosingSigned)); return res; }
3023         ~ClosingSigned() { ClosingSigned_free(self); }
3024         ClosingSigned& operator=(ClosingSigned&& o) { ClosingSigned_free(self); self = o.self; memset(&o, 0, sizeof(ClosingSigned)); return *this; }
3025         LDKClosingSigned* operator &() { return &self; }
3026         LDKClosingSigned* operator ->() { return &self; }
3027         const LDKClosingSigned* operator &() const { return &self; }
3028         const LDKClosingSigned* operator ->() const { return &self; }
3029 };
3030 class UpdateAddHTLC {
3031 private:
3032         LDKUpdateAddHTLC self;
3033 public:
3034         UpdateAddHTLC(const UpdateAddHTLC&) = delete;
3035         UpdateAddHTLC(UpdateAddHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateAddHTLC)); }
3036         UpdateAddHTLC(LDKUpdateAddHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateAddHTLC)); }
3037         operator LDKUpdateAddHTLC() && { LDKUpdateAddHTLC res = self; memset(&self, 0, sizeof(LDKUpdateAddHTLC)); return res; }
3038         ~UpdateAddHTLC() { UpdateAddHTLC_free(self); }
3039         UpdateAddHTLC& operator=(UpdateAddHTLC&& o) { UpdateAddHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateAddHTLC)); return *this; }
3040         LDKUpdateAddHTLC* operator &() { return &self; }
3041         LDKUpdateAddHTLC* operator ->() { return &self; }
3042         const LDKUpdateAddHTLC* operator &() const { return &self; }
3043         const LDKUpdateAddHTLC* operator ->() const { return &self; }
3044 };
3045 class UpdateFulfillHTLC {
3046 private:
3047         LDKUpdateFulfillHTLC self;
3048 public:
3049         UpdateFulfillHTLC(const UpdateFulfillHTLC&) = delete;
3050         UpdateFulfillHTLC(UpdateFulfillHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFulfillHTLC)); }
3051         UpdateFulfillHTLC(LDKUpdateFulfillHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFulfillHTLC)); }
3052         operator LDKUpdateFulfillHTLC() && { LDKUpdateFulfillHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFulfillHTLC)); return res; }
3053         ~UpdateFulfillHTLC() { UpdateFulfillHTLC_free(self); }
3054         UpdateFulfillHTLC& operator=(UpdateFulfillHTLC&& o) { UpdateFulfillHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFulfillHTLC)); return *this; }
3055         LDKUpdateFulfillHTLC* operator &() { return &self; }
3056         LDKUpdateFulfillHTLC* operator ->() { return &self; }
3057         const LDKUpdateFulfillHTLC* operator &() const { return &self; }
3058         const LDKUpdateFulfillHTLC* operator ->() const { return &self; }
3059 };
3060 class UpdateFailHTLC {
3061 private:
3062         LDKUpdateFailHTLC self;
3063 public:
3064         UpdateFailHTLC(const UpdateFailHTLC&) = delete;
3065         UpdateFailHTLC(UpdateFailHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailHTLC)); }
3066         UpdateFailHTLC(LDKUpdateFailHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailHTLC)); }
3067         operator LDKUpdateFailHTLC() && { LDKUpdateFailHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailHTLC)); return res; }
3068         ~UpdateFailHTLC() { UpdateFailHTLC_free(self); }
3069         UpdateFailHTLC& operator=(UpdateFailHTLC&& o) { UpdateFailHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailHTLC)); return *this; }
3070         LDKUpdateFailHTLC* operator &() { return &self; }
3071         LDKUpdateFailHTLC* operator ->() { return &self; }
3072         const LDKUpdateFailHTLC* operator &() const { return &self; }
3073         const LDKUpdateFailHTLC* operator ->() const { return &self; }
3074 };
3075 class UpdateFailMalformedHTLC {
3076 private:
3077         LDKUpdateFailMalformedHTLC self;
3078 public:
3079         UpdateFailMalformedHTLC(const UpdateFailMalformedHTLC&) = delete;
3080         UpdateFailMalformedHTLC(UpdateFailMalformedHTLC&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); }
3081         UpdateFailMalformedHTLC(LDKUpdateFailMalformedHTLC&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFailMalformedHTLC)); }
3082         operator LDKUpdateFailMalformedHTLC() && { LDKUpdateFailMalformedHTLC res = self; memset(&self, 0, sizeof(LDKUpdateFailMalformedHTLC)); return res; }
3083         ~UpdateFailMalformedHTLC() { UpdateFailMalformedHTLC_free(self); }
3084         UpdateFailMalformedHTLC& operator=(UpdateFailMalformedHTLC&& o) { UpdateFailMalformedHTLC_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFailMalformedHTLC)); return *this; }
3085         LDKUpdateFailMalformedHTLC* operator &() { return &self; }
3086         LDKUpdateFailMalformedHTLC* operator ->() { return &self; }
3087         const LDKUpdateFailMalformedHTLC* operator &() const { return &self; }
3088         const LDKUpdateFailMalformedHTLC* operator ->() const { return &self; }
3089 };
3090 class CommitmentSigned {
3091 private:
3092         LDKCommitmentSigned self;
3093 public:
3094         CommitmentSigned(const CommitmentSigned&) = delete;
3095         CommitmentSigned(CommitmentSigned&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentSigned)); }
3096         CommitmentSigned(LDKCommitmentSigned&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentSigned)); }
3097         operator LDKCommitmentSigned() && { LDKCommitmentSigned res = self; memset(&self, 0, sizeof(LDKCommitmentSigned)); return res; }
3098         ~CommitmentSigned() { CommitmentSigned_free(self); }
3099         CommitmentSigned& operator=(CommitmentSigned&& o) { CommitmentSigned_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentSigned)); return *this; }
3100         LDKCommitmentSigned* operator &() { return &self; }
3101         LDKCommitmentSigned* operator ->() { return &self; }
3102         const LDKCommitmentSigned* operator &() const { return &self; }
3103         const LDKCommitmentSigned* operator ->() const { return &self; }
3104 };
3105 class RevokeAndACK {
3106 private:
3107         LDKRevokeAndACK self;
3108 public:
3109         RevokeAndACK(const RevokeAndACK&) = delete;
3110         RevokeAndACK(RevokeAndACK&& o) : self(o.self) { memset(&o, 0, sizeof(RevokeAndACK)); }
3111         RevokeAndACK(LDKRevokeAndACK&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRevokeAndACK)); }
3112         operator LDKRevokeAndACK() && { LDKRevokeAndACK res = self; memset(&self, 0, sizeof(LDKRevokeAndACK)); return res; }
3113         ~RevokeAndACK() { RevokeAndACK_free(self); }
3114         RevokeAndACK& operator=(RevokeAndACK&& o) { RevokeAndACK_free(self); self = o.self; memset(&o, 0, sizeof(RevokeAndACK)); return *this; }
3115         LDKRevokeAndACK* operator &() { return &self; }
3116         LDKRevokeAndACK* operator ->() { return &self; }
3117         const LDKRevokeAndACK* operator &() const { return &self; }
3118         const LDKRevokeAndACK* operator ->() const { return &self; }
3119 };
3120 class UpdateFee {
3121 private:
3122         LDKUpdateFee self;
3123 public:
3124         UpdateFee(const UpdateFee&) = delete;
3125         UpdateFee(UpdateFee&& o) : self(o.self) { memset(&o, 0, sizeof(UpdateFee)); }
3126         UpdateFee(LDKUpdateFee&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUpdateFee)); }
3127         operator LDKUpdateFee() && { LDKUpdateFee res = self; memset(&self, 0, sizeof(LDKUpdateFee)); return res; }
3128         ~UpdateFee() { UpdateFee_free(self); }
3129         UpdateFee& operator=(UpdateFee&& o) { UpdateFee_free(self); self = o.self; memset(&o, 0, sizeof(UpdateFee)); return *this; }
3130         LDKUpdateFee* operator &() { return &self; }
3131         LDKUpdateFee* operator ->() { return &self; }
3132         const LDKUpdateFee* operator &() const { return &self; }
3133         const LDKUpdateFee* operator ->() const { return &self; }
3134 };
3135 class DataLossProtect {
3136 private:
3137         LDKDataLossProtect self;
3138 public:
3139         DataLossProtect(const DataLossProtect&) = delete;
3140         DataLossProtect(DataLossProtect&& o) : self(o.self) { memset(&o, 0, sizeof(DataLossProtect)); }
3141         DataLossProtect(LDKDataLossProtect&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDataLossProtect)); }
3142         operator LDKDataLossProtect() && { LDKDataLossProtect res = self; memset(&self, 0, sizeof(LDKDataLossProtect)); return res; }
3143         ~DataLossProtect() { DataLossProtect_free(self); }
3144         DataLossProtect& operator=(DataLossProtect&& o) { DataLossProtect_free(self); self = o.self; memset(&o, 0, sizeof(DataLossProtect)); return *this; }
3145         LDKDataLossProtect* operator &() { return &self; }
3146         LDKDataLossProtect* operator ->() { return &self; }
3147         const LDKDataLossProtect* operator &() const { return &self; }
3148         const LDKDataLossProtect* operator ->() const { return &self; }
3149 };
3150 class ChannelReestablish {
3151 private:
3152         LDKChannelReestablish self;
3153 public:
3154         ChannelReestablish(const ChannelReestablish&) = delete;
3155         ChannelReestablish(ChannelReestablish&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelReestablish)); }
3156         ChannelReestablish(LDKChannelReestablish&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelReestablish)); }
3157         operator LDKChannelReestablish() && { LDKChannelReestablish res = self; memset(&self, 0, sizeof(LDKChannelReestablish)); return res; }
3158         ~ChannelReestablish() { ChannelReestablish_free(self); }
3159         ChannelReestablish& operator=(ChannelReestablish&& o) { ChannelReestablish_free(self); self = o.self; memset(&o, 0, sizeof(ChannelReestablish)); return *this; }
3160         LDKChannelReestablish* operator &() { return &self; }
3161         LDKChannelReestablish* operator ->() { return &self; }
3162         const LDKChannelReestablish* operator &() const { return &self; }
3163         const LDKChannelReestablish* operator ->() const { return &self; }
3164 };
3165 class AnnouncementSignatures {
3166 private:
3167         LDKAnnouncementSignatures self;
3168 public:
3169         AnnouncementSignatures(const AnnouncementSignatures&) = delete;
3170         AnnouncementSignatures(AnnouncementSignatures&& o) : self(o.self) { memset(&o, 0, sizeof(AnnouncementSignatures)); }
3171         AnnouncementSignatures(LDKAnnouncementSignatures&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKAnnouncementSignatures)); }
3172         operator LDKAnnouncementSignatures() && { LDKAnnouncementSignatures res = self; memset(&self, 0, sizeof(LDKAnnouncementSignatures)); return res; }
3173         ~AnnouncementSignatures() { AnnouncementSignatures_free(self); }
3174         AnnouncementSignatures& operator=(AnnouncementSignatures&& o) { AnnouncementSignatures_free(self); self = o.self; memset(&o, 0, sizeof(AnnouncementSignatures)); return *this; }
3175         LDKAnnouncementSignatures* operator &() { return &self; }
3176         LDKAnnouncementSignatures* operator ->() { return &self; }
3177         const LDKAnnouncementSignatures* operator &() const { return &self; }
3178         const LDKAnnouncementSignatures* operator ->() const { return &self; }
3179 };
3180 class NetAddress {
3181 private:
3182         LDKNetAddress self;
3183 public:
3184         NetAddress(const NetAddress&) = delete;
3185         NetAddress(NetAddress&& o) : self(o.self) { memset(&o, 0, sizeof(NetAddress)); }
3186         NetAddress(LDKNetAddress&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNetAddress)); }
3187         operator LDKNetAddress() && { LDKNetAddress res = self; memset(&self, 0, sizeof(LDKNetAddress)); return res; }
3188         ~NetAddress() { NetAddress_free(self); }
3189         NetAddress& operator=(NetAddress&& o) { NetAddress_free(self); self = o.self; memset(&o, 0, sizeof(NetAddress)); return *this; }
3190         LDKNetAddress* operator &() { return &self; }
3191         LDKNetAddress* operator ->() { return &self; }
3192         const LDKNetAddress* operator &() const { return &self; }
3193         const LDKNetAddress* operator ->() const { return &self; }
3194 };
3195 class UnsignedNodeAnnouncement {
3196 private:
3197         LDKUnsignedNodeAnnouncement self;
3198 public:
3199         UnsignedNodeAnnouncement(const UnsignedNodeAnnouncement&) = delete;
3200         UnsignedNodeAnnouncement(UnsignedNodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); }
3201         UnsignedNodeAnnouncement(LDKUnsignedNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedNodeAnnouncement)); }
3202         operator LDKUnsignedNodeAnnouncement() && { LDKUnsignedNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedNodeAnnouncement)); return res; }
3203         ~UnsignedNodeAnnouncement() { UnsignedNodeAnnouncement_free(self); }
3204         UnsignedNodeAnnouncement& operator=(UnsignedNodeAnnouncement&& o) { UnsignedNodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedNodeAnnouncement)); return *this; }
3205         LDKUnsignedNodeAnnouncement* operator &() { return &self; }
3206         LDKUnsignedNodeAnnouncement* operator ->() { return &self; }
3207         const LDKUnsignedNodeAnnouncement* operator &() const { return &self; }
3208         const LDKUnsignedNodeAnnouncement* operator ->() const { return &self; }
3209 };
3210 class NodeAnnouncement {
3211 private:
3212         LDKNodeAnnouncement self;
3213 public:
3214         NodeAnnouncement(const NodeAnnouncement&) = delete;
3215         NodeAnnouncement(NodeAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(NodeAnnouncement)); }
3216         NodeAnnouncement(LDKNodeAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKNodeAnnouncement)); }
3217         operator LDKNodeAnnouncement() && { LDKNodeAnnouncement res = self; memset(&self, 0, sizeof(LDKNodeAnnouncement)); return res; }
3218         ~NodeAnnouncement() { NodeAnnouncement_free(self); }
3219         NodeAnnouncement& operator=(NodeAnnouncement&& o) { NodeAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(NodeAnnouncement)); return *this; }
3220         LDKNodeAnnouncement* operator &() { return &self; }
3221         LDKNodeAnnouncement* operator ->() { return &self; }
3222         const LDKNodeAnnouncement* operator &() const { return &self; }
3223         const LDKNodeAnnouncement* operator ->() const { return &self; }
3224 };
3225 class UnsignedChannelAnnouncement {
3226 private:
3227         LDKUnsignedChannelAnnouncement self;
3228 public:
3229         UnsignedChannelAnnouncement(const UnsignedChannelAnnouncement&) = delete;
3230         UnsignedChannelAnnouncement(UnsignedChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); }
3231         UnsignedChannelAnnouncement(LDKUnsignedChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelAnnouncement)); }
3232         operator LDKUnsignedChannelAnnouncement() && { LDKUnsignedChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKUnsignedChannelAnnouncement)); return res; }
3233         ~UnsignedChannelAnnouncement() { UnsignedChannelAnnouncement_free(self); }
3234         UnsignedChannelAnnouncement& operator=(UnsignedChannelAnnouncement&& o) { UnsignedChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelAnnouncement)); return *this; }
3235         LDKUnsignedChannelAnnouncement* operator &() { return &self; }
3236         LDKUnsignedChannelAnnouncement* operator ->() { return &self; }
3237         const LDKUnsignedChannelAnnouncement* operator &() const { return &self; }
3238         const LDKUnsignedChannelAnnouncement* operator ->() const { return &self; }
3239 };
3240 class ChannelAnnouncement {
3241 private:
3242         LDKChannelAnnouncement self;
3243 public:
3244         ChannelAnnouncement(const ChannelAnnouncement&) = delete;
3245         ChannelAnnouncement(ChannelAnnouncement&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelAnnouncement)); }
3246         ChannelAnnouncement(LDKChannelAnnouncement&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelAnnouncement)); }
3247         operator LDKChannelAnnouncement() && { LDKChannelAnnouncement res = self; memset(&self, 0, sizeof(LDKChannelAnnouncement)); return res; }
3248         ~ChannelAnnouncement() { ChannelAnnouncement_free(self); }
3249         ChannelAnnouncement& operator=(ChannelAnnouncement&& o) { ChannelAnnouncement_free(self); self = o.self; memset(&o, 0, sizeof(ChannelAnnouncement)); return *this; }
3250         LDKChannelAnnouncement* operator &() { return &self; }
3251         LDKChannelAnnouncement* operator ->() { return &self; }
3252         const LDKChannelAnnouncement* operator &() const { return &self; }
3253         const LDKChannelAnnouncement* operator ->() const { return &self; }
3254 };
3255 class UnsignedChannelUpdate {
3256 private:
3257         LDKUnsignedChannelUpdate self;
3258 public:
3259         UnsignedChannelUpdate(const UnsignedChannelUpdate&) = delete;
3260         UnsignedChannelUpdate(UnsignedChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(UnsignedChannelUpdate)); }
3261         UnsignedChannelUpdate(LDKUnsignedChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKUnsignedChannelUpdate)); }
3262         operator LDKUnsignedChannelUpdate() && { LDKUnsignedChannelUpdate res = self; memset(&self, 0, sizeof(LDKUnsignedChannelUpdate)); return res; }
3263         ~UnsignedChannelUpdate() { UnsignedChannelUpdate_free(self); }
3264         UnsignedChannelUpdate& operator=(UnsignedChannelUpdate&& o) { UnsignedChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(UnsignedChannelUpdate)); return *this; }
3265         LDKUnsignedChannelUpdate* operator &() { return &self; }
3266         LDKUnsignedChannelUpdate* operator ->() { return &self; }
3267         const LDKUnsignedChannelUpdate* operator &() const { return &self; }
3268         const LDKUnsignedChannelUpdate* operator ->() const { return &self; }
3269 };
3270 class ChannelUpdate {
3271 private:
3272         LDKChannelUpdate self;
3273 public:
3274         ChannelUpdate(const ChannelUpdate&) = delete;
3275         ChannelUpdate(ChannelUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelUpdate)); }
3276         ChannelUpdate(LDKChannelUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelUpdate)); }
3277         operator LDKChannelUpdate() && { LDKChannelUpdate res = self; memset(&self, 0, sizeof(LDKChannelUpdate)); return res; }
3278         ~ChannelUpdate() { ChannelUpdate_free(self); }
3279         ChannelUpdate& operator=(ChannelUpdate&& o) { ChannelUpdate_free(self); self = o.self; memset(&o, 0, sizeof(ChannelUpdate)); return *this; }
3280         LDKChannelUpdate* operator &() { return &self; }
3281         LDKChannelUpdate* operator ->() { return &self; }
3282         const LDKChannelUpdate* operator &() const { return &self; }
3283         const LDKChannelUpdate* operator ->() const { return &self; }
3284 };
3285 class QueryChannelRange {
3286 private:
3287         LDKQueryChannelRange self;
3288 public:
3289         QueryChannelRange(const QueryChannelRange&) = delete;
3290         QueryChannelRange(QueryChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(QueryChannelRange)); }
3291         QueryChannelRange(LDKQueryChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryChannelRange)); }
3292         operator LDKQueryChannelRange() && { LDKQueryChannelRange res = self; memset(&self, 0, sizeof(LDKQueryChannelRange)); return res; }
3293         ~QueryChannelRange() { QueryChannelRange_free(self); }
3294         QueryChannelRange& operator=(QueryChannelRange&& o) { QueryChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(QueryChannelRange)); return *this; }
3295         LDKQueryChannelRange* operator &() { return &self; }
3296         LDKQueryChannelRange* operator ->() { return &self; }
3297         const LDKQueryChannelRange* operator &() const { return &self; }
3298         const LDKQueryChannelRange* operator ->() const { return &self; }
3299 };
3300 class ReplyChannelRange {
3301 private:
3302         LDKReplyChannelRange self;
3303 public:
3304         ReplyChannelRange(const ReplyChannelRange&) = delete;
3305         ReplyChannelRange(ReplyChannelRange&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyChannelRange)); }
3306         ReplyChannelRange(LDKReplyChannelRange&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyChannelRange)); }
3307         operator LDKReplyChannelRange() && { LDKReplyChannelRange res = self; memset(&self, 0, sizeof(LDKReplyChannelRange)); return res; }
3308         ~ReplyChannelRange() { ReplyChannelRange_free(self); }
3309         ReplyChannelRange& operator=(ReplyChannelRange&& o) { ReplyChannelRange_free(self); self = o.self; memset(&o, 0, sizeof(ReplyChannelRange)); return *this; }
3310         LDKReplyChannelRange* operator &() { return &self; }
3311         LDKReplyChannelRange* operator ->() { return &self; }
3312         const LDKReplyChannelRange* operator &() const { return &self; }
3313         const LDKReplyChannelRange* operator ->() const { return &self; }
3314 };
3315 class QueryShortChannelIds {
3316 private:
3317         LDKQueryShortChannelIds self;
3318 public:
3319         QueryShortChannelIds(const QueryShortChannelIds&) = delete;
3320         QueryShortChannelIds(QueryShortChannelIds&& o) : self(o.self) { memset(&o, 0, sizeof(QueryShortChannelIds)); }
3321         QueryShortChannelIds(LDKQueryShortChannelIds&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKQueryShortChannelIds)); }
3322         operator LDKQueryShortChannelIds() && { LDKQueryShortChannelIds res = self; memset(&self, 0, sizeof(LDKQueryShortChannelIds)); return res; }
3323         ~QueryShortChannelIds() { QueryShortChannelIds_free(self); }
3324         QueryShortChannelIds& operator=(QueryShortChannelIds&& o) { QueryShortChannelIds_free(self); self = o.self; memset(&o, 0, sizeof(QueryShortChannelIds)); return *this; }
3325         LDKQueryShortChannelIds* operator &() { return &self; }
3326         LDKQueryShortChannelIds* operator ->() { return &self; }
3327         const LDKQueryShortChannelIds* operator &() const { return &self; }
3328         const LDKQueryShortChannelIds* operator ->() const { return &self; }
3329 };
3330 class ReplyShortChannelIdsEnd {
3331 private:
3332         LDKReplyShortChannelIdsEnd self;
3333 public:
3334         ReplyShortChannelIdsEnd(const ReplyShortChannelIdsEnd&) = delete;
3335         ReplyShortChannelIdsEnd(ReplyShortChannelIdsEnd&& o) : self(o.self) { memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); }
3336         ReplyShortChannelIdsEnd(LDKReplyShortChannelIdsEnd&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKReplyShortChannelIdsEnd)); }
3337         operator LDKReplyShortChannelIdsEnd() && { LDKReplyShortChannelIdsEnd res = self; memset(&self, 0, sizeof(LDKReplyShortChannelIdsEnd)); return res; }
3338         ~ReplyShortChannelIdsEnd() { ReplyShortChannelIdsEnd_free(self); }
3339         ReplyShortChannelIdsEnd& operator=(ReplyShortChannelIdsEnd&& o) { ReplyShortChannelIdsEnd_free(self); self = o.self; memset(&o, 0, sizeof(ReplyShortChannelIdsEnd)); return *this; }
3340         LDKReplyShortChannelIdsEnd* operator &() { return &self; }
3341         LDKReplyShortChannelIdsEnd* operator ->() { return &self; }
3342         const LDKReplyShortChannelIdsEnd* operator &() const { return &self; }
3343         const LDKReplyShortChannelIdsEnd* operator ->() const { return &self; }
3344 };
3345 class GossipTimestampFilter {
3346 private:
3347         LDKGossipTimestampFilter self;
3348 public:
3349         GossipTimestampFilter(const GossipTimestampFilter&) = delete;
3350         GossipTimestampFilter(GossipTimestampFilter&& o) : self(o.self) { memset(&o, 0, sizeof(GossipTimestampFilter)); }
3351         GossipTimestampFilter(LDKGossipTimestampFilter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKGossipTimestampFilter)); }
3352         operator LDKGossipTimestampFilter() && { LDKGossipTimestampFilter res = self; memset(&self, 0, sizeof(LDKGossipTimestampFilter)); return res; }
3353         ~GossipTimestampFilter() { GossipTimestampFilter_free(self); }
3354         GossipTimestampFilter& operator=(GossipTimestampFilter&& o) { GossipTimestampFilter_free(self); self = o.self; memset(&o, 0, sizeof(GossipTimestampFilter)); return *this; }
3355         LDKGossipTimestampFilter* operator &() { return &self; }
3356         LDKGossipTimestampFilter* operator ->() { return &self; }
3357         const LDKGossipTimestampFilter* operator &() const { return &self; }
3358         const LDKGossipTimestampFilter* operator ->() const { return &self; }
3359 };
3360 class ErrorAction {
3361 private:
3362         LDKErrorAction self;
3363 public:
3364         ErrorAction(const ErrorAction&) = delete;
3365         ErrorAction(ErrorAction&& o) : self(o.self) { memset(&o, 0, sizeof(ErrorAction)); }
3366         ErrorAction(LDKErrorAction&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKErrorAction)); }
3367         operator LDKErrorAction() && { LDKErrorAction res = self; memset(&self, 0, sizeof(LDKErrorAction)); return res; }
3368         ~ErrorAction() { ErrorAction_free(self); }
3369         ErrorAction& operator=(ErrorAction&& o) { ErrorAction_free(self); self = o.self; memset(&o, 0, sizeof(ErrorAction)); return *this; }
3370         LDKErrorAction* operator &() { return &self; }
3371         LDKErrorAction* operator ->() { return &self; }
3372         const LDKErrorAction* operator &() const { return &self; }
3373         const LDKErrorAction* operator ->() const { return &self; }
3374 };
3375 class LightningError {
3376 private:
3377         LDKLightningError self;
3378 public:
3379         LightningError(const LightningError&) = delete;
3380         LightningError(LightningError&& o) : self(o.self) { memset(&o, 0, sizeof(LightningError)); }
3381         LightningError(LDKLightningError&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLightningError)); }
3382         operator LDKLightningError() && { LDKLightningError res = self; memset(&self, 0, sizeof(LDKLightningError)); return res; }
3383         ~LightningError() { LightningError_free(self); }
3384         LightningError& operator=(LightningError&& o) { LightningError_free(self); self = o.self; memset(&o, 0, sizeof(LightningError)); return *this; }
3385         LDKLightningError* operator &() { return &self; }
3386         LDKLightningError* operator ->() { return &self; }
3387         const LDKLightningError* operator &() const { return &self; }
3388         const LDKLightningError* operator ->() const { return &self; }
3389 };
3390 class CommitmentUpdate {
3391 private:
3392         LDKCommitmentUpdate self;
3393 public:
3394         CommitmentUpdate(const CommitmentUpdate&) = delete;
3395         CommitmentUpdate(CommitmentUpdate&& o) : self(o.self) { memset(&o, 0, sizeof(CommitmentUpdate)); }
3396         CommitmentUpdate(LDKCommitmentUpdate&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCommitmentUpdate)); }
3397         operator LDKCommitmentUpdate() && { LDKCommitmentUpdate res = self; memset(&self, 0, sizeof(LDKCommitmentUpdate)); return res; }
3398         ~CommitmentUpdate() { CommitmentUpdate_free(self); }
3399         CommitmentUpdate& operator=(CommitmentUpdate&& o) { CommitmentUpdate_free(self); self = o.self; memset(&o, 0, sizeof(CommitmentUpdate)); return *this; }
3400         LDKCommitmentUpdate* operator &() { return &self; }
3401         LDKCommitmentUpdate* operator ->() { return &self; }
3402         const LDKCommitmentUpdate* operator &() const { return &self; }
3403         const LDKCommitmentUpdate* operator ->() const { return &self; }
3404 };
3405 class ChannelMessageHandler {
3406 private:
3407         LDKChannelMessageHandler self;
3408 public:
3409         ChannelMessageHandler(const ChannelMessageHandler&) = delete;
3410         ChannelMessageHandler(ChannelMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(ChannelMessageHandler)); }
3411         ChannelMessageHandler(LDKChannelMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChannelMessageHandler)); }
3412         operator LDKChannelMessageHandler() && { LDKChannelMessageHandler res = self; memset(&self, 0, sizeof(LDKChannelMessageHandler)); return res; }
3413         ~ChannelMessageHandler() { ChannelMessageHandler_free(self); }
3414         ChannelMessageHandler& operator=(ChannelMessageHandler&& o) { ChannelMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(ChannelMessageHandler)); return *this; }
3415         LDKChannelMessageHandler* operator &() { return &self; }
3416         LDKChannelMessageHandler* operator ->() { return &self; }
3417         const LDKChannelMessageHandler* operator &() const { return &self; }
3418         const LDKChannelMessageHandler* operator ->() const { return &self; }
3419         /**
3420          *  Handle an incoming open_channel message from the given peer.
3421          */
3422         inline void handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
3423         /**
3424          *  Handle an incoming accept_channel message from the given peer.
3425          */
3426         inline void handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
3427         /**
3428          *  Handle an incoming funding_created message from the given peer.
3429          */
3430         inline void handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
3431         /**
3432          *  Handle an incoming funding_signed message from the given peer.
3433          */
3434         inline void handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
3435         /**
3436          *  Handle an incoming funding_locked message from the given peer.
3437          */
3438         inline void handle_funding_locked(struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg);
3439         /**
3440          *  Handle an incoming shutdown message from the given peer.
3441          */
3442         inline void handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg);
3443         /**
3444          *  Handle an incoming closing_signed message from the given peer.
3445          */
3446         inline void handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
3447         /**
3448          *  Handle an incoming update_add_htlc message from the given peer.
3449          */
3450         inline void handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
3451         /**
3452          *  Handle an incoming update_fulfill_htlc message from the given peer.
3453          */
3454         inline void handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
3455         /**
3456          *  Handle an incoming update_fail_htlc message from the given peer.
3457          */
3458         inline void handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
3459         /**
3460          *  Handle an incoming update_fail_malformed_htlc message from the given peer.
3461          */
3462         inline void handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
3463         /**
3464          *  Handle an incoming commitment_signed message from the given peer.
3465          */
3466         inline void handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
3467         /**
3468          *  Handle an incoming revoke_and_ack message from the given peer.
3469          */
3470         inline void handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
3471         /**
3472          *  Handle an incoming update_fee message from the given peer.
3473          */
3474         inline void handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
3475         /**
3476          *  Handle an incoming announcement_signatures message from the given peer.
3477          */
3478         inline void handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
3479         /**
3480          *  Indicates a connection to the peer failed/an existing connection was lost. If no connection
3481          *  is believed to be possible in the future (eg they're sending us messages we don't
3482          *  understand or indicate they require unknown feature bits), no_connection_possible is set
3483          *  and any outstanding channels should be failed.
3484          */
3485         inline void peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible);
3486         /**
3487          *  Handle a peer reconnecting, possibly generating channel_reestablish message(s).
3488          */
3489         inline void peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
3490         /**
3491          *  Handle an incoming channel_reestablish message from the given peer.
3492          */
3493         inline void handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
3494         /**
3495          *  Handle an incoming channel update from the given peer.
3496          */
3497         inline void handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
3498         /**
3499          *  Handle an incoming error message from the given peer.
3500          */
3501         inline void handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
3502 };
3503 class RoutingMessageHandler {
3504 private:
3505         LDKRoutingMessageHandler self;
3506 public:
3507         RoutingMessageHandler(const RoutingMessageHandler&) = delete;
3508         RoutingMessageHandler(RoutingMessageHandler&& o) : self(o.self) { memset(&o, 0, sizeof(RoutingMessageHandler)); }
3509         RoutingMessageHandler(LDKRoutingMessageHandler&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRoutingMessageHandler)); }
3510         operator LDKRoutingMessageHandler() && { LDKRoutingMessageHandler res = self; memset(&self, 0, sizeof(LDKRoutingMessageHandler)); return res; }
3511         ~RoutingMessageHandler() { RoutingMessageHandler_free(self); }
3512         RoutingMessageHandler& operator=(RoutingMessageHandler&& o) { RoutingMessageHandler_free(self); self = o.self; memset(&o, 0, sizeof(RoutingMessageHandler)); return *this; }
3513         LDKRoutingMessageHandler* operator &() { return &self; }
3514         LDKRoutingMessageHandler* operator ->() { return &self; }
3515         const LDKRoutingMessageHandler* operator &() const { return &self; }
3516         const LDKRoutingMessageHandler* operator ->() const { return &self; }
3517         /**
3518          *  Handle an incoming node_announcement message, returning true if it should be forwarded on,
3519          *  false or returning an Err otherwise.
3520          */
3521         inline LDK::CResult_boolLightningErrorZ handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg);
3522         /**
3523          *  Handle a channel_announcement message, returning true if it should be forwarded on, false
3524          *  or returning an Err otherwise.
3525          */
3526         inline LDK::CResult_boolLightningErrorZ handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg);
3527         /**
3528          *  Handle an incoming channel_update message, returning true if it should be forwarded on,
3529          *  false or returning an Err otherwise.
3530          */
3531         inline LDK::CResult_boolLightningErrorZ handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg);
3532         /**
3533          *  Gets a subset of the channel announcements and updates required to dump our routing table
3534          *  to a remote node, starting at the short_channel_id indicated by starting_point and
3535          *  including the batch_amount entries immediately higher in numerical value than starting_point.
3536          */
3537         inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount);
3538         /**
3539          *  Gets a subset of the node announcements required to dump our routing table to a remote node,
3540          *  starting at the node *after* the provided publickey and including batch_amount entries
3541          *  immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
3542          *  If None is provided for starting_point, we start at the first node.
3543          * 
3544          *  Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
3545          */
3546         inline LDK::CVec_NodeAnnouncementZ get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount);
3547         /**
3548          *  Called when a connection is established with a peer. This can be used to
3549          *  perform routing table synchronization using a strategy defined by the
3550          *  implementor.
3551          */
3552         inline void sync_routing_table(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
3553         /**
3554          *  Handles the reply of a query we initiated to learn about channels
3555          *  for a given range of blocks. We can expect to receive one or more
3556          *  replies to a single query.
3557          */
3558         inline LDK::CResult_NoneLightningErrorZ handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
3559         /**
3560          *  Handles the reply of a query we initiated asking for routing gossip
3561          *  messages for a list of channels. We should receive this message when
3562          *  a node has completed its best effort to send us the pertaining routing
3563          *  gossip messages.
3564          */
3565         inline LDK::CResult_NoneLightningErrorZ handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
3566         /**
3567          *  Handles when a peer asks us to send a list of short_channel_ids
3568          *  for the requested range of blocks.
3569          */
3570         inline LDK::CResult_NoneLightningErrorZ handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
3571         /**
3572          *  Handles when a peer asks us to send routing gossip messages for a
3573          *  list of short_channel_ids.
3574          */
3575         inline LDK::CResult_NoneLightningErrorZ handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
3576 };
3577 class DefaultRouter {
3578 private:
3579         LDKDefaultRouter self;
3580 public:
3581         DefaultRouter(const DefaultRouter&) = delete;
3582         DefaultRouter(DefaultRouter&& o) : self(o.self) { memset(&o, 0, sizeof(DefaultRouter)); }
3583         DefaultRouter(LDKDefaultRouter&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKDefaultRouter)); }
3584         operator LDKDefaultRouter() && { LDKDefaultRouter res = self; memset(&self, 0, sizeof(LDKDefaultRouter)); return res; }
3585         ~DefaultRouter() { DefaultRouter_free(self); }
3586         DefaultRouter& operator=(DefaultRouter&& o) { DefaultRouter_free(self); self = o.self; memset(&o, 0, sizeof(DefaultRouter)); return *this; }
3587         LDKDefaultRouter* operator &() { return &self; }
3588         LDKDefaultRouter* operator ->() { return &self; }
3589         const LDKDefaultRouter* operator &() const { return &self; }
3590         const LDKDefaultRouter* operator ->() const { return &self; }
3591 };
3592 class Level {
3593 private:
3594         LDKLevel self;
3595 public:
3596         Level(const Level&) = delete;
3597         Level(Level&& o) : self(o.self) { memset(&o, 0, sizeof(Level)); }
3598         Level(LDKLevel&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLevel)); }
3599         operator LDKLevel() && { LDKLevel res = self; memset(&self, 0, sizeof(LDKLevel)); return res; }
3600         Level& operator=(Level&& o) { self = o.self; memset(&o, 0, sizeof(Level)); return *this; }
3601         LDKLevel* operator &() { return &self; }
3602         LDKLevel* operator ->() { return &self; }
3603         const LDKLevel* operator &() const { return &self; }
3604         const LDKLevel* operator ->() const { return &self; }
3605 };
3606 class Record {
3607 private:
3608         LDKRecord self;
3609 public:
3610         Record(const Record&) = delete;
3611         Record(Record&& o) : self(o.self) { memset(&o, 0, sizeof(Record)); }
3612         Record(LDKRecord&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKRecord)); }
3613         operator LDKRecord() && { LDKRecord res = self; memset(&self, 0, sizeof(LDKRecord)); return res; }
3614         ~Record() { Record_free(self); }
3615         Record& operator=(Record&& o) { Record_free(self); self = o.self; memset(&o, 0, sizeof(Record)); return *this; }
3616         LDKRecord* operator &() { return &self; }
3617         LDKRecord* operator ->() { return &self; }
3618         const LDKRecord* operator &() const { return &self; }
3619         const LDKRecord* operator ->() const { return &self; }
3620 };
3621 class Logger {
3622 private:
3623         LDKLogger self;
3624 public:
3625         Logger(const Logger&) = delete;
3626         Logger(Logger&& o) : self(o.self) { memset(&o, 0, sizeof(Logger)); }
3627         Logger(LDKLogger&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLogger)); }
3628         operator LDKLogger() && { LDKLogger res = self; memset(&self, 0, sizeof(LDKLogger)); return res; }
3629         ~Logger() { Logger_free(self); }
3630         Logger& operator=(Logger&& o) { Logger_free(self); self = o.self; memset(&o, 0, sizeof(Logger)); return *this; }
3631         LDKLogger* operator &() { return &self; }
3632         LDKLogger* operator ->() { return &self; }
3633         const LDKLogger* operator &() const { return &self; }
3634         const LDKLogger* operator ->() const { return &self; }
3635         /**
3636          *  Logs the `Record`
3637          */
3638         inline void log(const struct LDKRecord *NONNULL_PTR record);
3639 };
3640 class MonitorUpdateId {
3641 private:
3642         LDKMonitorUpdateId self;
3643 public:
3644         MonitorUpdateId(const MonitorUpdateId&) = delete;
3645         MonitorUpdateId(MonitorUpdateId&& o) : self(o.self) { memset(&o, 0, sizeof(MonitorUpdateId)); }
3646         MonitorUpdateId(LDKMonitorUpdateId&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKMonitorUpdateId)); }
3647         operator LDKMonitorUpdateId() && { LDKMonitorUpdateId res = self; memset(&self, 0, sizeof(LDKMonitorUpdateId)); return res; }
3648         ~MonitorUpdateId() { MonitorUpdateId_free(self); }
3649         MonitorUpdateId& operator=(MonitorUpdateId&& o) { MonitorUpdateId_free(self); self = o.self; memset(&o, 0, sizeof(MonitorUpdateId)); return *this; }
3650         LDKMonitorUpdateId* operator &() { return &self; }
3651         LDKMonitorUpdateId* operator ->() { return &self; }
3652         const LDKMonitorUpdateId* operator &() const { return &self; }
3653         const LDKMonitorUpdateId* operator ->() const { return &self; }
3654 };
3655 class Persist {
3656 private:
3657         LDKPersist self;
3658 public:
3659         Persist(const Persist&) = delete;
3660         Persist(Persist&& o) : self(o.self) { memset(&o, 0, sizeof(Persist)); }
3661         Persist(LDKPersist&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKPersist)); }
3662         operator LDKPersist() && { LDKPersist res = self; memset(&self, 0, sizeof(LDKPersist)); return res; }
3663         ~Persist() { Persist_free(self); }
3664         Persist& operator=(Persist&& o) { Persist_free(self); self = o.self; memset(&o, 0, sizeof(Persist)); return *this; }
3665         LDKPersist* operator &() { return &self; }
3666         LDKPersist* operator ->() { return &self; }
3667         const LDKPersist* operator &() const { return &self; }
3668         const LDKPersist* operator ->() const { return &self; }
3669         /**
3670          *  Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
3671          *  called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
3672          * 
3673          *  The data can be stored any way you want, but the identifier provided by LDK is the
3674          *  channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
3675          *  and the stored channel data). Note that you **must** persist every new monitor to disk.
3676          * 
3677          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
3678          *  if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
3679          * 
3680          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
3681          *  and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
3682          * 
3683          *  [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3684          *  [`Writeable::write`]: crate::util::ser::Writeable::write
3685          */
3686         inline LDK::CResult_NoneChannelMonitorUpdateErrZ persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
3687         /**
3688          *  Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
3689          *  update.
3690          * 
3691          *  Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
3692          *  updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
3693          *  details.
3694          * 
3695          *  During blockchain synchronization operations, this may be called with no
3696          *  [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
3697          *  Note that after the full [`ChannelMonitor`] is persisted any previous
3698          *  [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
3699          *  applied to the persisted [`ChannelMonitor`] as they were already applied.
3700          * 
3701          *  If an implementer chooses to persist the updates only, they need to make
3702          *  sure that all the updates are applied to the `ChannelMonitors` *before*
3703          *  the set of channel monitors is given to the `ChannelManager`
3704          *  deserialization routine. See [`ChannelMonitor::update_monitor`] for
3705          *  applying a monitor update to a monitor. If full `ChannelMonitors` are
3706          *  persisted, then there is no need to persist individual updates.
3707          * 
3708          *  Note that there could be a performance tradeoff between persisting complete
3709          *  channel monitors on every update vs. persisting only updates and applying
3710          *  them in batches. The size of each monitor grows `O(number of state updates)`
3711          *  whereas updates are small and `O(1)`.
3712          * 
3713          *  The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
3714          *  if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
3715          * 
3716          *  See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
3717          *  [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
3718          *  [`ChannelMonitorUpdateErr`] for requirements when returning errors.
3719          * 
3720          *  [`Writeable::write`]: crate::util::ser::Writeable::write
3721          * 
3722          *  Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
3723          */
3724         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);
3725 };
3726 class LockedChannelMonitor {
3727 private:
3728         LDKLockedChannelMonitor self;
3729 public:
3730         LockedChannelMonitor(const LockedChannelMonitor&) = delete;
3731         LockedChannelMonitor(LockedChannelMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(LockedChannelMonitor)); }
3732         LockedChannelMonitor(LDKLockedChannelMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKLockedChannelMonitor)); }
3733         operator LDKLockedChannelMonitor() && { LDKLockedChannelMonitor res = self; memset(&self, 0, sizeof(LDKLockedChannelMonitor)); return res; }
3734         ~LockedChannelMonitor() { LockedChannelMonitor_free(self); }
3735         LockedChannelMonitor& operator=(LockedChannelMonitor&& o) { LockedChannelMonitor_free(self); self = o.self; memset(&o, 0, sizeof(LockedChannelMonitor)); return *this; }
3736         LDKLockedChannelMonitor* operator &() { return &self; }
3737         LDKLockedChannelMonitor* operator ->() { return &self; }
3738         const LDKLockedChannelMonitor* operator &() const { return &self; }
3739         const LDKLockedChannelMonitor* operator ->() const { return &self; }
3740 };
3741 class ChainMonitor {
3742 private:
3743         LDKChainMonitor self;
3744 public:
3745         ChainMonitor(const ChainMonitor&) = delete;
3746         ChainMonitor(ChainMonitor&& o) : self(o.self) { memset(&o, 0, sizeof(ChainMonitor)); }
3747         ChainMonitor(LDKChainMonitor&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKChainMonitor)); }
3748         operator LDKChainMonitor() && { LDKChainMonitor res = self; memset(&self, 0, sizeof(LDKChainMonitor)); return res; }
3749         ~ChainMonitor() { ChainMonitor_free(self); }
3750         ChainMonitor& operator=(ChainMonitor&& o) { ChainMonitor_free(self); self = o.self; memset(&o, 0, sizeof(ChainMonitor)); return *this; }
3751         LDKChainMonitor* operator &() { return &self; }
3752         LDKChainMonitor* operator ->() { return &self; }
3753         const LDKChainMonitor* operator &() const { return &self; }
3754         const LDKChainMonitor* operator ->() const { return &self; }
3755 };
3756 class CVec_SpendableOutputDescriptorZ {
3757 private:
3758         LDKCVec_SpendableOutputDescriptorZ self;
3759 public:
3760         CVec_SpendableOutputDescriptorZ(const CVec_SpendableOutputDescriptorZ&) = delete;
3761         CVec_SpendableOutputDescriptorZ(CVec_SpendableOutputDescriptorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); }
3762         CVec_SpendableOutputDescriptorZ(LDKCVec_SpendableOutputDescriptorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); }
3763         operator LDKCVec_SpendableOutputDescriptorZ() && { LDKCVec_SpendableOutputDescriptorZ res = self; memset(&self, 0, sizeof(LDKCVec_SpendableOutputDescriptorZ)); return res; }
3764         ~CVec_SpendableOutputDescriptorZ() { CVec_SpendableOutputDescriptorZ_free(self); }
3765         CVec_SpendableOutputDescriptorZ& operator=(CVec_SpendableOutputDescriptorZ&& o) { CVec_SpendableOutputDescriptorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SpendableOutputDescriptorZ)); return *this; }
3766         LDKCVec_SpendableOutputDescriptorZ* operator &() { return &self; }
3767         LDKCVec_SpendableOutputDescriptorZ* operator ->() { return &self; }
3768         const LDKCVec_SpendableOutputDescriptorZ* operator &() const { return &self; }
3769         const LDKCVec_SpendableOutputDescriptorZ* operator ->() const { return &self; }
3770 };
3771 class CResult_LockedChannelMonitorNoneZ {
3772 private:
3773         LDKCResult_LockedChannelMonitorNoneZ self;
3774 public:
3775         CResult_LockedChannelMonitorNoneZ(const CResult_LockedChannelMonitorNoneZ&) = delete;
3776         CResult_LockedChannelMonitorNoneZ(CResult_LockedChannelMonitorNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); }
3777         CResult_LockedChannelMonitorNoneZ(LDKCResult_LockedChannelMonitorNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); }
3778         operator LDKCResult_LockedChannelMonitorNoneZ() && { LDKCResult_LockedChannelMonitorNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_LockedChannelMonitorNoneZ)); return res; }
3779         ~CResult_LockedChannelMonitorNoneZ() { CResult_LockedChannelMonitorNoneZ_free(self); }
3780         CResult_LockedChannelMonitorNoneZ& operator=(CResult_LockedChannelMonitorNoneZ&& o) { CResult_LockedChannelMonitorNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_LockedChannelMonitorNoneZ)); return *this; }
3781         LDKCResult_LockedChannelMonitorNoneZ* operator &() { return &self; }
3782         LDKCResult_LockedChannelMonitorNoneZ* operator ->() { return &self; }
3783         const LDKCResult_LockedChannelMonitorNoneZ* operator &() const { return &self; }
3784         const LDKCResult_LockedChannelMonitorNoneZ* operator ->() const { return &self; }
3785 };
3786 class CResult_PhantomRouteHintsDecodeErrorZ {
3787 private:
3788         LDKCResult_PhantomRouteHintsDecodeErrorZ self;
3789 public:
3790         CResult_PhantomRouteHintsDecodeErrorZ(const CResult_PhantomRouteHintsDecodeErrorZ&) = delete;
3791         CResult_PhantomRouteHintsDecodeErrorZ(CResult_PhantomRouteHintsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); }
3792         CResult_PhantomRouteHintsDecodeErrorZ(LDKCResult_PhantomRouteHintsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); }
3793         operator LDKCResult_PhantomRouteHintsDecodeErrorZ() && { LDKCResult_PhantomRouteHintsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PhantomRouteHintsDecodeErrorZ)); return res; }
3794         ~CResult_PhantomRouteHintsDecodeErrorZ() { CResult_PhantomRouteHintsDecodeErrorZ_free(self); }
3795         CResult_PhantomRouteHintsDecodeErrorZ& operator=(CResult_PhantomRouteHintsDecodeErrorZ&& o) { CResult_PhantomRouteHintsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PhantomRouteHintsDecodeErrorZ)); return *this; }
3796         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() { return &self; }
3797         LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() { return &self; }
3798         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator &() const { return &self; }
3799         const LDKCResult_PhantomRouteHintsDecodeErrorZ* operator ->() const { return &self; }
3800 };
3801 class CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
3802 private:
3803         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ self;
3804 public:
3805         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(const CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&) = delete;
3806         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
3807         CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); }
3808         operator LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() && { LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ)); return res; }
3809         ~CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ() { CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(self); }
3810         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; }
3811         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() { return &self; }
3812         LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() { return &self; }
3813         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator &() const { return &self; }
3814         const LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* operator ->() const { return &self; }
3815 };
3816 class CResult_ScoringParametersDecodeErrorZ {
3817 private:
3818         LDKCResult_ScoringParametersDecodeErrorZ self;
3819 public:
3820         CResult_ScoringParametersDecodeErrorZ(const CResult_ScoringParametersDecodeErrorZ&) = delete;
3821         CResult_ScoringParametersDecodeErrorZ(CResult_ScoringParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ScoringParametersDecodeErrorZ)); }
3822         CResult_ScoringParametersDecodeErrorZ(LDKCResult_ScoringParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ScoringParametersDecodeErrorZ)); }
3823         operator LDKCResult_ScoringParametersDecodeErrorZ() && { LDKCResult_ScoringParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ScoringParametersDecodeErrorZ)); return res; }
3824         ~CResult_ScoringParametersDecodeErrorZ() { CResult_ScoringParametersDecodeErrorZ_free(self); }
3825         CResult_ScoringParametersDecodeErrorZ& operator=(CResult_ScoringParametersDecodeErrorZ&& o) { CResult_ScoringParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ScoringParametersDecodeErrorZ)); return *this; }
3826         LDKCResult_ScoringParametersDecodeErrorZ* operator &() { return &self; }
3827         LDKCResult_ScoringParametersDecodeErrorZ* operator ->() { return &self; }
3828         const LDKCResult_ScoringParametersDecodeErrorZ* operator &() const { return &self; }
3829         const LDKCResult_ScoringParametersDecodeErrorZ* operator ->() const { return &self; }
3830 };
3831 class CResult_HTLCUpdateDecodeErrorZ {
3832 private:
3833         LDKCResult_HTLCUpdateDecodeErrorZ self;
3834 public:
3835         CResult_HTLCUpdateDecodeErrorZ(const CResult_HTLCUpdateDecodeErrorZ&) = delete;
3836         CResult_HTLCUpdateDecodeErrorZ(CResult_HTLCUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); }
3837         CResult_HTLCUpdateDecodeErrorZ(LDKCResult_HTLCUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); }
3838         operator LDKCResult_HTLCUpdateDecodeErrorZ() && { LDKCResult_HTLCUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCUpdateDecodeErrorZ)); return res; }
3839         ~CResult_HTLCUpdateDecodeErrorZ() { CResult_HTLCUpdateDecodeErrorZ_free(self); }
3840         CResult_HTLCUpdateDecodeErrorZ& operator=(CResult_HTLCUpdateDecodeErrorZ&& o) { CResult_HTLCUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCUpdateDecodeErrorZ)); return *this; }
3841         LDKCResult_HTLCUpdateDecodeErrorZ* operator &() { return &self; }
3842         LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() { return &self; }
3843         const LDKCResult_HTLCUpdateDecodeErrorZ* operator &() const { return &self; }
3844         const LDKCResult_HTLCUpdateDecodeErrorZ* operator ->() const { return &self; }
3845 };
3846 class C2Tuple_SignatureCVec_SignatureZZ {
3847 private:
3848         LDKC2Tuple_SignatureCVec_SignatureZZ self;
3849 public:
3850         C2Tuple_SignatureCVec_SignatureZZ(const C2Tuple_SignatureCVec_SignatureZZ&) = delete;
3851         C2Tuple_SignatureCVec_SignatureZZ(C2Tuple_SignatureCVec_SignatureZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureCVec_SignatureZZ)); }
3852         C2Tuple_SignatureCVec_SignatureZZ(LDKC2Tuple_SignatureCVec_SignatureZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); }
3853         operator LDKC2Tuple_SignatureCVec_SignatureZZ() && { LDKC2Tuple_SignatureCVec_SignatureZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ)); return res; }
3854         ~C2Tuple_SignatureCVec_SignatureZZ() { C2Tuple_SignatureCVec_SignatureZZ_free(self); }
3855         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; }
3856         LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() { return &self; }
3857         LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() { return &self; }
3858         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator &() const { return &self; }
3859         const LDKC2Tuple_SignatureCVec_SignatureZZ* operator ->() const { return &self; }
3860 };
3861 class CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
3862 private:
3863         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ self;
3864 public:
3865         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(const CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&) = delete;
3866         CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); }
3867         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)); }
3868         operator LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() && { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ)); return res; }
3869         ~CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ() { CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(self); }
3870         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; }
3871         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() { return &self; }
3872         LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() { return &self; }
3873         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator &() const { return &self; }
3874         const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ* operator ->() const { return &self; }
3875 };
3876 class CVec_C2Tuple_u32TxOutZZ {
3877 private:
3878         LDKCVec_C2Tuple_u32TxOutZZ self;
3879 public:
3880         CVec_C2Tuple_u32TxOutZZ(const CVec_C2Tuple_u32TxOutZZ&) = delete;
3881         CVec_C2Tuple_u32TxOutZZ(CVec_C2Tuple_u32TxOutZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32TxOutZZ)); }
3882         CVec_C2Tuple_u32TxOutZZ(LDKCVec_C2Tuple_u32TxOutZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); }
3883         operator LDKCVec_C2Tuple_u32TxOutZZ() && { LDKCVec_C2Tuple_u32TxOutZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32TxOutZZ)); return res; }
3884         ~CVec_C2Tuple_u32TxOutZZ() { CVec_C2Tuple_u32TxOutZZ_free(self); }
3885         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; }
3886         LDKCVec_C2Tuple_u32TxOutZZ* operator &() { return &self; }
3887         LDKCVec_C2Tuple_u32TxOutZZ* operator ->() { return &self; }
3888         const LDKCVec_C2Tuple_u32TxOutZZ* operator &() const { return &self; }
3889         const LDKCVec_C2Tuple_u32TxOutZZ* operator ->() const { return &self; }
3890 };
3891 class CResult_ChannelInfoDecodeErrorZ {
3892 private:
3893         LDKCResult_ChannelInfoDecodeErrorZ self;
3894 public:
3895         CResult_ChannelInfoDecodeErrorZ(const CResult_ChannelInfoDecodeErrorZ&) = delete;
3896         CResult_ChannelInfoDecodeErrorZ(CResult_ChannelInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); }
3897         CResult_ChannelInfoDecodeErrorZ(LDKCResult_ChannelInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); }
3898         operator LDKCResult_ChannelInfoDecodeErrorZ() && { LDKCResult_ChannelInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelInfoDecodeErrorZ)); return res; }
3899         ~CResult_ChannelInfoDecodeErrorZ() { CResult_ChannelInfoDecodeErrorZ_free(self); }
3900         CResult_ChannelInfoDecodeErrorZ& operator=(CResult_ChannelInfoDecodeErrorZ&& o) { CResult_ChannelInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelInfoDecodeErrorZ)); return *this; }
3901         LDKCResult_ChannelInfoDecodeErrorZ* operator &() { return &self; }
3902         LDKCResult_ChannelInfoDecodeErrorZ* operator ->() { return &self; }
3903         const LDKCResult_ChannelInfoDecodeErrorZ* operator &() const { return &self; }
3904         const LDKCResult_ChannelInfoDecodeErrorZ* operator ->() const { return &self; }
3905 };
3906 class CResult_FundingCreatedDecodeErrorZ {
3907 private:
3908         LDKCResult_FundingCreatedDecodeErrorZ self;
3909 public:
3910         CResult_FundingCreatedDecodeErrorZ(const CResult_FundingCreatedDecodeErrorZ&) = delete;
3911         CResult_FundingCreatedDecodeErrorZ(CResult_FundingCreatedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); }
3912         CResult_FundingCreatedDecodeErrorZ(LDKCResult_FundingCreatedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); }
3913         operator LDKCResult_FundingCreatedDecodeErrorZ() && { LDKCResult_FundingCreatedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingCreatedDecodeErrorZ)); return res; }
3914         ~CResult_FundingCreatedDecodeErrorZ() { CResult_FundingCreatedDecodeErrorZ_free(self); }
3915         CResult_FundingCreatedDecodeErrorZ& operator=(CResult_FundingCreatedDecodeErrorZ&& o) { CResult_FundingCreatedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingCreatedDecodeErrorZ)); return *this; }
3916         LDKCResult_FundingCreatedDecodeErrorZ* operator &() { return &self; }
3917         LDKCResult_FundingCreatedDecodeErrorZ* operator ->() { return &self; }
3918         const LDKCResult_FundingCreatedDecodeErrorZ* operator &() const { return &self; }
3919         const LDKCResult_FundingCreatedDecodeErrorZ* operator ->() const { return &self; }
3920 };
3921 class CResult_ChannelAnnouncementDecodeErrorZ {
3922 private:
3923         LDKCResult_ChannelAnnouncementDecodeErrorZ self;
3924 public:
3925         CResult_ChannelAnnouncementDecodeErrorZ(const CResult_ChannelAnnouncementDecodeErrorZ&) = delete;
3926         CResult_ChannelAnnouncementDecodeErrorZ(CResult_ChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); }
3927         CResult_ChannelAnnouncementDecodeErrorZ(LDKCResult_ChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); }
3928         operator LDKCResult_ChannelAnnouncementDecodeErrorZ() && { LDKCResult_ChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ)); return res; }
3929         ~CResult_ChannelAnnouncementDecodeErrorZ() { CResult_ChannelAnnouncementDecodeErrorZ_free(self); }
3930         CResult_ChannelAnnouncementDecodeErrorZ& operator=(CResult_ChannelAnnouncementDecodeErrorZ&& o) { CResult_ChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelAnnouncementDecodeErrorZ)); return *this; }
3931         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
3932         LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
3933         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
3934         const LDKCResult_ChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
3935 };
3936 class CVec_OutPointZ {
3937 private:
3938         LDKCVec_OutPointZ self;
3939 public:
3940         CVec_OutPointZ(const CVec_OutPointZ&) = delete;
3941         CVec_OutPointZ(CVec_OutPointZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_OutPointZ)); }
3942         CVec_OutPointZ(LDKCVec_OutPointZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_OutPointZ)); }
3943         operator LDKCVec_OutPointZ() && { LDKCVec_OutPointZ res = self; memset(&self, 0, sizeof(LDKCVec_OutPointZ)); return res; }
3944         ~CVec_OutPointZ() { CVec_OutPointZ_free(self); }
3945         CVec_OutPointZ& operator=(CVec_OutPointZ&& o) { CVec_OutPointZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_OutPointZ)); return *this; }
3946         LDKCVec_OutPointZ* operator &() { return &self; }
3947         LDKCVec_OutPointZ* operator ->() { return &self; }
3948         const LDKCVec_OutPointZ* operator &() const { return &self; }
3949         const LDKCVec_OutPointZ* operator ->() const { return &self; }
3950 };
3951 class CResult_PositiveTimestampCreationErrorZ {
3952 private:
3953         LDKCResult_PositiveTimestampCreationErrorZ self;
3954 public:
3955         CResult_PositiveTimestampCreationErrorZ(const CResult_PositiveTimestampCreationErrorZ&) = delete;
3956         CResult_PositiveTimestampCreationErrorZ(CResult_PositiveTimestampCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); }
3957         CResult_PositiveTimestampCreationErrorZ(LDKCResult_PositiveTimestampCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); }
3958         operator LDKCResult_PositiveTimestampCreationErrorZ() && { LDKCResult_PositiveTimestampCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PositiveTimestampCreationErrorZ)); return res; }
3959         ~CResult_PositiveTimestampCreationErrorZ() { CResult_PositiveTimestampCreationErrorZ_free(self); }
3960         CResult_PositiveTimestampCreationErrorZ& operator=(CResult_PositiveTimestampCreationErrorZ&& o) { CResult_PositiveTimestampCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PositiveTimestampCreationErrorZ)); return *this; }
3961         LDKCResult_PositiveTimestampCreationErrorZ* operator &() { return &self; }
3962         LDKCResult_PositiveTimestampCreationErrorZ* operator ->() { return &self; }
3963         const LDKCResult_PositiveTimestampCreationErrorZ* operator &() const { return &self; }
3964         const LDKCResult_PositiveTimestampCreationErrorZ* operator ->() const { return &self; }
3965 };
3966 class CResult_CVec_u8ZPeerHandleErrorZ {
3967 private:
3968         LDKCResult_CVec_u8ZPeerHandleErrorZ self;
3969 public:
3970         CResult_CVec_u8ZPeerHandleErrorZ(const CResult_CVec_u8ZPeerHandleErrorZ&) = delete;
3971         CResult_CVec_u8ZPeerHandleErrorZ(CResult_CVec_u8ZPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_u8ZPeerHandleErrorZ)); }
3972         CResult_CVec_u8ZPeerHandleErrorZ(LDKCResult_CVec_u8ZPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); }
3973         operator LDKCResult_CVec_u8ZPeerHandleErrorZ() && { LDKCResult_CVec_u8ZPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ)); return res; }
3974         ~CResult_CVec_u8ZPeerHandleErrorZ() { CResult_CVec_u8ZPeerHandleErrorZ_free(self); }
3975         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; }
3976         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() { return &self; }
3977         LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() { return &self; }
3978         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator &() const { return &self; }
3979         const LDKCResult_CVec_u8ZPeerHandleErrorZ* operator ->() const { return &self; }
3980 };
3981 class CResult_InvoiceFeaturesDecodeErrorZ {
3982 private:
3983         LDKCResult_InvoiceFeaturesDecodeErrorZ self;
3984 public:
3985         CResult_InvoiceFeaturesDecodeErrorZ(const CResult_InvoiceFeaturesDecodeErrorZ&) = delete;
3986         CResult_InvoiceFeaturesDecodeErrorZ(CResult_InvoiceFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); }
3987         CResult_InvoiceFeaturesDecodeErrorZ(LDKCResult_InvoiceFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); }
3988         operator LDKCResult_InvoiceFeaturesDecodeErrorZ() && { LDKCResult_InvoiceFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ)); return res; }
3989         ~CResult_InvoiceFeaturesDecodeErrorZ() { CResult_InvoiceFeaturesDecodeErrorZ_free(self); }
3990         CResult_InvoiceFeaturesDecodeErrorZ& operator=(CResult_InvoiceFeaturesDecodeErrorZ&& o) { CResult_InvoiceFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceFeaturesDecodeErrorZ)); return *this; }
3991         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() { return &self; }
3992         LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() { return &self; }
3993         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator &() const { return &self; }
3994         const LDKCResult_InvoiceFeaturesDecodeErrorZ* operator ->() const { return &self; }
3995 };
3996 class COption_NetworkUpdateZ {
3997 private:
3998         LDKCOption_NetworkUpdateZ self;
3999 public:
4000         COption_NetworkUpdateZ(const COption_NetworkUpdateZ&) = delete;
4001         COption_NetworkUpdateZ(COption_NetworkUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NetworkUpdateZ)); }
4002         COption_NetworkUpdateZ(LDKCOption_NetworkUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NetworkUpdateZ)); }
4003         operator LDKCOption_NetworkUpdateZ() && { LDKCOption_NetworkUpdateZ res = self; memset(&self, 0, sizeof(LDKCOption_NetworkUpdateZ)); return res; }
4004         ~COption_NetworkUpdateZ() { COption_NetworkUpdateZ_free(self); }
4005         COption_NetworkUpdateZ& operator=(COption_NetworkUpdateZ&& o) { COption_NetworkUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NetworkUpdateZ)); return *this; }
4006         LDKCOption_NetworkUpdateZ* operator &() { return &self; }
4007         LDKCOption_NetworkUpdateZ* operator ->() { return &self; }
4008         const LDKCOption_NetworkUpdateZ* operator &() const { return &self; }
4009         const LDKCOption_NetworkUpdateZ* operator ->() const { return &self; }
4010 };
4011 class COption_u64Z {
4012 private:
4013         LDKCOption_u64Z self;
4014 public:
4015         COption_u64Z(const COption_u64Z&) = delete;
4016         COption_u64Z(COption_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u64Z)); }
4017         COption_u64Z(LDKCOption_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u64Z)); }
4018         operator LDKCOption_u64Z() && { LDKCOption_u64Z res = self; memset(&self, 0, sizeof(LDKCOption_u64Z)); return res; }
4019         ~COption_u64Z() { COption_u64Z_free(self); }
4020         COption_u64Z& operator=(COption_u64Z&& o) { COption_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u64Z)); return *this; }
4021         LDKCOption_u64Z* operator &() { return &self; }
4022         LDKCOption_u64Z* operator ->() { return &self; }
4023         const LDKCOption_u64Z* operator &() const { return &self; }
4024         const LDKCOption_u64Z* operator ->() const { return &self; }
4025 };
4026 class CResult_TxOutAccessErrorZ {
4027 private:
4028         LDKCResult_TxOutAccessErrorZ self;
4029 public:
4030         CResult_TxOutAccessErrorZ(const CResult_TxOutAccessErrorZ&) = delete;
4031         CResult_TxOutAccessErrorZ(CResult_TxOutAccessErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); }
4032         CResult_TxOutAccessErrorZ(LDKCResult_TxOutAccessErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); }
4033         operator LDKCResult_TxOutAccessErrorZ() && { LDKCResult_TxOutAccessErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxOutAccessErrorZ)); return res; }
4034         ~CResult_TxOutAccessErrorZ() { CResult_TxOutAccessErrorZ_free(self); }
4035         CResult_TxOutAccessErrorZ& operator=(CResult_TxOutAccessErrorZ&& o) { CResult_TxOutAccessErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxOutAccessErrorZ)); return *this; }
4036         LDKCResult_TxOutAccessErrorZ* operator &() { return &self; }
4037         LDKCResult_TxOutAccessErrorZ* operator ->() { return &self; }
4038         const LDKCResult_TxOutAccessErrorZ* operator &() const { return &self; }
4039         const LDKCResult_TxOutAccessErrorZ* operator ->() const { return &self; }
4040 };
4041 class CResult_TrustedClosingTransactionNoneZ {
4042 private:
4043         LDKCResult_TrustedClosingTransactionNoneZ self;
4044 public:
4045         CResult_TrustedClosingTransactionNoneZ(const CResult_TrustedClosingTransactionNoneZ&) = delete;
4046         CResult_TrustedClosingTransactionNoneZ(CResult_TrustedClosingTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); }
4047         CResult_TrustedClosingTransactionNoneZ(LDKCResult_TrustedClosingTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); }
4048         operator LDKCResult_TrustedClosingTransactionNoneZ() && { LDKCResult_TrustedClosingTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedClosingTransactionNoneZ)); return res; }
4049         ~CResult_TrustedClosingTransactionNoneZ() { CResult_TrustedClosingTransactionNoneZ_free(self); }
4050         CResult_TrustedClosingTransactionNoneZ& operator=(CResult_TrustedClosingTransactionNoneZ&& o) { CResult_TrustedClosingTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedClosingTransactionNoneZ)); return *this; }
4051         LDKCResult_TrustedClosingTransactionNoneZ* operator &() { return &self; }
4052         LDKCResult_TrustedClosingTransactionNoneZ* operator ->() { return &self; }
4053         const LDKCResult_TrustedClosingTransactionNoneZ* operator &() const { return &self; }
4054         const LDKCResult_TrustedClosingTransactionNoneZ* operator ->() const { return &self; }
4055 };
4056 class CResult_PaymentPreimageAPIErrorZ {
4057 private:
4058         LDKCResult_PaymentPreimageAPIErrorZ self;
4059 public:
4060         CResult_PaymentPreimageAPIErrorZ(const CResult_PaymentPreimageAPIErrorZ&) = delete;
4061         CResult_PaymentPreimageAPIErrorZ(CResult_PaymentPreimageAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); }
4062         CResult_PaymentPreimageAPIErrorZ(LDKCResult_PaymentPreimageAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); }
4063         operator LDKCResult_PaymentPreimageAPIErrorZ() && { LDKCResult_PaymentPreimageAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentPreimageAPIErrorZ)); return res; }
4064         ~CResult_PaymentPreimageAPIErrorZ() { CResult_PaymentPreimageAPIErrorZ_free(self); }
4065         CResult_PaymentPreimageAPIErrorZ& operator=(CResult_PaymentPreimageAPIErrorZ&& o) { CResult_PaymentPreimageAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentPreimageAPIErrorZ)); return *this; }
4066         LDKCResult_PaymentPreimageAPIErrorZ* operator &() { return &self; }
4067         LDKCResult_PaymentPreimageAPIErrorZ* operator ->() { return &self; }
4068         const LDKCResult_PaymentPreimageAPIErrorZ* operator &() const { return &self; }
4069         const LDKCResult_PaymentPreimageAPIErrorZ* operator ->() const { return &self; }
4070 };
4071 class CResult_ChannelMonitorUpdateDecodeErrorZ {
4072 private:
4073         LDKCResult_ChannelMonitorUpdateDecodeErrorZ self;
4074 public:
4075         CResult_ChannelMonitorUpdateDecodeErrorZ(const CResult_ChannelMonitorUpdateDecodeErrorZ&) = delete;
4076         CResult_ChannelMonitorUpdateDecodeErrorZ(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); }
4077         CResult_ChannelMonitorUpdateDecodeErrorZ(LDKCResult_ChannelMonitorUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); }
4078         operator LDKCResult_ChannelMonitorUpdateDecodeErrorZ() && { LDKCResult_ChannelMonitorUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ)); return res; }
4079         ~CResult_ChannelMonitorUpdateDecodeErrorZ() { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); }
4080         CResult_ChannelMonitorUpdateDecodeErrorZ& operator=(CResult_ChannelMonitorUpdateDecodeErrorZ&& o) { CResult_ChannelMonitorUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelMonitorUpdateDecodeErrorZ)); return *this; }
4081         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() { return &self; }
4082         LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() { return &self; }
4083         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator &() const { return &self; }
4084         const LDKCResult_ChannelMonitorUpdateDecodeErrorZ* operator ->() const { return &self; }
4085 };
4086 class CResult_RouteHintDecodeErrorZ {
4087 private:
4088         LDKCResult_RouteHintDecodeErrorZ self;
4089 public:
4090         CResult_RouteHintDecodeErrorZ(const CResult_RouteHintDecodeErrorZ&) = delete;
4091         CResult_RouteHintDecodeErrorZ(CResult_RouteHintDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); }
4092         CResult_RouteHintDecodeErrorZ(LDKCResult_RouteHintDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); }
4093         operator LDKCResult_RouteHintDecodeErrorZ() && { LDKCResult_RouteHintDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintDecodeErrorZ)); return res; }
4094         ~CResult_RouteHintDecodeErrorZ() { CResult_RouteHintDecodeErrorZ_free(self); }
4095         CResult_RouteHintDecodeErrorZ& operator=(CResult_RouteHintDecodeErrorZ&& o) { CResult_RouteHintDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintDecodeErrorZ)); return *this; }
4096         LDKCResult_RouteHintDecodeErrorZ* operator &() { return &self; }
4097         LDKCResult_RouteHintDecodeErrorZ* operator ->() { return &self; }
4098         const LDKCResult_RouteHintDecodeErrorZ* operator &() const { return &self; }
4099         const LDKCResult_RouteHintDecodeErrorZ* operator ->() const { return &self; }
4100 };
4101 class C2Tuple_PublicKeyTypeZ {
4102 private:
4103         LDKC2Tuple_PublicKeyTypeZ self;
4104 public:
4105         C2Tuple_PublicKeyTypeZ(const C2Tuple_PublicKeyTypeZ&) = delete;
4106         C2Tuple_PublicKeyTypeZ(C2Tuple_PublicKeyTypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); }
4107         C2Tuple_PublicKeyTypeZ(LDKC2Tuple_PublicKeyTypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); }
4108         operator LDKC2Tuple_PublicKeyTypeZ() && { LDKC2Tuple_PublicKeyTypeZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PublicKeyTypeZ)); return res; }
4109         ~C2Tuple_PublicKeyTypeZ() { C2Tuple_PublicKeyTypeZ_free(self); }
4110         C2Tuple_PublicKeyTypeZ& operator=(C2Tuple_PublicKeyTypeZ&& o) { C2Tuple_PublicKeyTypeZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PublicKeyTypeZ)); return *this; }
4111         LDKC2Tuple_PublicKeyTypeZ* operator &() { return &self; }
4112         LDKC2Tuple_PublicKeyTypeZ* operator ->() { return &self; }
4113         const LDKC2Tuple_PublicKeyTypeZ* operator &() const { return &self; }
4114         const LDKC2Tuple_PublicKeyTypeZ* operator ->() const { return &self; }
4115 };
4116 class CResult_NetAddressDecodeErrorZ {
4117 private:
4118         LDKCResult_NetAddressDecodeErrorZ self;
4119 public:
4120         CResult_NetAddressDecodeErrorZ(const CResult_NetAddressDecodeErrorZ&) = delete;
4121         CResult_NetAddressDecodeErrorZ(CResult_NetAddressDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); }
4122         CResult_NetAddressDecodeErrorZ(LDKCResult_NetAddressDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); }
4123         operator LDKCResult_NetAddressDecodeErrorZ() && { LDKCResult_NetAddressDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetAddressDecodeErrorZ)); return res; }
4124         ~CResult_NetAddressDecodeErrorZ() { CResult_NetAddressDecodeErrorZ_free(self); }
4125         CResult_NetAddressDecodeErrorZ& operator=(CResult_NetAddressDecodeErrorZ&& o) { CResult_NetAddressDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetAddressDecodeErrorZ)); return *this; }
4126         LDKCResult_NetAddressDecodeErrorZ* operator &() { return &self; }
4127         LDKCResult_NetAddressDecodeErrorZ* operator ->() { return &self; }
4128         const LDKCResult_NetAddressDecodeErrorZ* operator &() const { return &self; }
4129         const LDKCResult_NetAddressDecodeErrorZ* operator ->() const { return &self; }
4130 };
4131 class CResult_ChannelReestablishDecodeErrorZ {
4132 private:
4133         LDKCResult_ChannelReestablishDecodeErrorZ self;
4134 public:
4135         CResult_ChannelReestablishDecodeErrorZ(const CResult_ChannelReestablishDecodeErrorZ&) = delete;
4136         CResult_ChannelReestablishDecodeErrorZ(CResult_ChannelReestablishDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); }
4137         CResult_ChannelReestablishDecodeErrorZ(LDKCResult_ChannelReestablishDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); }
4138         operator LDKCResult_ChannelReestablishDecodeErrorZ() && { LDKCResult_ChannelReestablishDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelReestablishDecodeErrorZ)); return res; }
4139         ~CResult_ChannelReestablishDecodeErrorZ() { CResult_ChannelReestablishDecodeErrorZ_free(self); }
4140         CResult_ChannelReestablishDecodeErrorZ& operator=(CResult_ChannelReestablishDecodeErrorZ&& o) { CResult_ChannelReestablishDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelReestablishDecodeErrorZ)); return *this; }
4141         LDKCResult_ChannelReestablishDecodeErrorZ* operator &() { return &self; }
4142         LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() { return &self; }
4143         const LDKCResult_ChannelReestablishDecodeErrorZ* operator &() const { return &self; }
4144         const LDKCResult_ChannelReestablishDecodeErrorZ* operator ->() const { return &self; }
4145 };
4146 class CResult_CommitmentSignedDecodeErrorZ {
4147 private:
4148         LDKCResult_CommitmentSignedDecodeErrorZ self;
4149 public:
4150         CResult_CommitmentSignedDecodeErrorZ(const CResult_CommitmentSignedDecodeErrorZ&) = delete;
4151         CResult_CommitmentSignedDecodeErrorZ(CResult_CommitmentSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); }
4152         CResult_CommitmentSignedDecodeErrorZ(LDKCResult_CommitmentSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); }
4153         operator LDKCResult_CommitmentSignedDecodeErrorZ() && { LDKCResult_CommitmentSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentSignedDecodeErrorZ)); return res; }
4154         ~CResult_CommitmentSignedDecodeErrorZ() { CResult_CommitmentSignedDecodeErrorZ_free(self); }
4155         CResult_CommitmentSignedDecodeErrorZ& operator=(CResult_CommitmentSignedDecodeErrorZ&& o) { CResult_CommitmentSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentSignedDecodeErrorZ)); return *this; }
4156         LDKCResult_CommitmentSignedDecodeErrorZ* operator &() { return &self; }
4157         LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() { return &self; }
4158         const LDKCResult_CommitmentSignedDecodeErrorZ* operator &() const { return &self; }
4159         const LDKCResult_CommitmentSignedDecodeErrorZ* operator ->() const { return &self; }
4160 };
4161 class CVec_UpdateAddHTLCZ {
4162 private:
4163         LDKCVec_UpdateAddHTLCZ self;
4164 public:
4165         CVec_UpdateAddHTLCZ(const CVec_UpdateAddHTLCZ&) = delete;
4166         CVec_UpdateAddHTLCZ(CVec_UpdateAddHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); }
4167         CVec_UpdateAddHTLCZ(LDKCVec_UpdateAddHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); }
4168         operator LDKCVec_UpdateAddHTLCZ() && { LDKCVec_UpdateAddHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateAddHTLCZ)); return res; }
4169         ~CVec_UpdateAddHTLCZ() { CVec_UpdateAddHTLCZ_free(self); }
4170         CVec_UpdateAddHTLCZ& operator=(CVec_UpdateAddHTLCZ&& o) { CVec_UpdateAddHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateAddHTLCZ)); return *this; }
4171         LDKCVec_UpdateAddHTLCZ* operator &() { return &self; }
4172         LDKCVec_UpdateAddHTLCZ* operator ->() { return &self; }
4173         const LDKCVec_UpdateAddHTLCZ* operator &() const { return &self; }
4174         const LDKCVec_UpdateAddHTLCZ* operator ->() const { return &self; }
4175 };
4176 class CResult_UnsignedNodeAnnouncementDecodeErrorZ {
4177 private:
4178         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ self;
4179 public:
4180         CResult_UnsignedNodeAnnouncementDecodeErrorZ(const CResult_UnsignedNodeAnnouncementDecodeErrorZ&) = delete;
4181         CResult_UnsignedNodeAnnouncementDecodeErrorZ(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4182         CResult_UnsignedNodeAnnouncementDecodeErrorZ(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); }
4183         operator LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ)); return res; }
4184         ~CResult_UnsignedNodeAnnouncementDecodeErrorZ() { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); }
4185         CResult_UnsignedNodeAnnouncementDecodeErrorZ& operator=(CResult_UnsignedNodeAnnouncementDecodeErrorZ&& o) { CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedNodeAnnouncementDecodeErrorZ)); return *this; }
4186         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4187         LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4188         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4189         const LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4190 };
4191 class COption_u32Z {
4192 private:
4193         LDKCOption_u32Z self;
4194 public:
4195         COption_u32Z(const COption_u32Z&) = delete;
4196         COption_u32Z(COption_u32Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u32Z)); }
4197         COption_u32Z(LDKCOption_u32Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u32Z)); }
4198         operator LDKCOption_u32Z() && { LDKCOption_u32Z res = self; memset(&self, 0, sizeof(LDKCOption_u32Z)); return res; }
4199         ~COption_u32Z() { COption_u32Z_free(self); }
4200         COption_u32Z& operator=(COption_u32Z&& o) { COption_u32Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u32Z)); return *this; }
4201         LDKCOption_u32Z* operator &() { return &self; }
4202         LDKCOption_u32Z* operator ->() { return &self; }
4203         const LDKCOption_u32Z* operator &() const { return &self; }
4204         const LDKCOption_u32Z* operator ->() const { return &self; }
4205 };
4206 class CResult_InitFeaturesDecodeErrorZ {
4207 private:
4208         LDKCResult_InitFeaturesDecodeErrorZ self;
4209 public:
4210         CResult_InitFeaturesDecodeErrorZ(const CResult_InitFeaturesDecodeErrorZ&) = delete;
4211         CResult_InitFeaturesDecodeErrorZ(CResult_InitFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); }
4212         CResult_InitFeaturesDecodeErrorZ(LDKCResult_InitFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); }
4213         operator LDKCResult_InitFeaturesDecodeErrorZ() && { LDKCResult_InitFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitFeaturesDecodeErrorZ)); return res; }
4214         ~CResult_InitFeaturesDecodeErrorZ() { CResult_InitFeaturesDecodeErrorZ_free(self); }
4215         CResult_InitFeaturesDecodeErrorZ& operator=(CResult_InitFeaturesDecodeErrorZ&& o) { CResult_InitFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitFeaturesDecodeErrorZ)); return *this; }
4216         LDKCResult_InitFeaturesDecodeErrorZ* operator &() { return &self; }
4217         LDKCResult_InitFeaturesDecodeErrorZ* operator ->() { return &self; }
4218         const LDKCResult_InitFeaturesDecodeErrorZ* operator &() const { return &self; }
4219         const LDKCResult_InitFeaturesDecodeErrorZ* operator ->() const { return &self; }
4220 };
4221 class CResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4222 private:
4223         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ self;
4224 public:
4225         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(const CResult_StaticPaymentOutputDescriptorDecodeErrorZ&) = delete;
4226         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4227         CResult_StaticPaymentOutputDescriptorDecodeErrorZ(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); }
4228         operator LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return res; }
4229         ~CResult_StaticPaymentOutputDescriptorDecodeErrorZ() { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); }
4230         CResult_StaticPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_StaticPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StaticPaymentOutputDescriptorDecodeErrorZ)); return *this; }
4231         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
4232         LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
4233         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
4234         const LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
4235 };
4236 class CResult_PaymentIdPaymentSendFailureZ {
4237 private:
4238         LDKCResult_PaymentIdPaymentSendFailureZ self;
4239 public:
4240         CResult_PaymentIdPaymentSendFailureZ(const CResult_PaymentIdPaymentSendFailureZ&) = delete;
4241         CResult_PaymentIdPaymentSendFailureZ(CResult_PaymentIdPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); }
4242         CResult_PaymentIdPaymentSendFailureZ(LDKCResult_PaymentIdPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); }
4243         operator LDKCResult_PaymentIdPaymentSendFailureZ() && { LDKCResult_PaymentIdPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentSendFailureZ)); return res; }
4244         ~CResult_PaymentIdPaymentSendFailureZ() { CResult_PaymentIdPaymentSendFailureZ_free(self); }
4245         CResult_PaymentIdPaymentSendFailureZ& operator=(CResult_PaymentIdPaymentSendFailureZ&& o) { CResult_PaymentIdPaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentSendFailureZ)); return *this; }
4246         LDKCResult_PaymentIdPaymentSendFailureZ* operator &() { return &self; }
4247         LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() { return &self; }
4248         const LDKCResult_PaymentIdPaymentSendFailureZ* operator &() const { return &self; }
4249         const LDKCResult_PaymentIdPaymentSendFailureZ* operator ->() const { return &self; }
4250 };
4251 class CResult_ReplyChannelRangeDecodeErrorZ {
4252 private:
4253         LDKCResult_ReplyChannelRangeDecodeErrorZ self;
4254 public:
4255         CResult_ReplyChannelRangeDecodeErrorZ(const CResult_ReplyChannelRangeDecodeErrorZ&) = delete;
4256         CResult_ReplyChannelRangeDecodeErrorZ(CResult_ReplyChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); }
4257         CResult_ReplyChannelRangeDecodeErrorZ(LDKCResult_ReplyChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); }
4258         operator LDKCResult_ReplyChannelRangeDecodeErrorZ() && { LDKCResult_ReplyChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ)); return res; }
4259         ~CResult_ReplyChannelRangeDecodeErrorZ() { CResult_ReplyChannelRangeDecodeErrorZ_free(self); }
4260         CResult_ReplyChannelRangeDecodeErrorZ& operator=(CResult_ReplyChannelRangeDecodeErrorZ&& o) { CResult_ReplyChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyChannelRangeDecodeErrorZ)); return *this; }
4261         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() { return &self; }
4262         LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() { return &self; }
4263         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator &() const { return &self; }
4264         const LDKCResult_ReplyChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4265 };
4266 class CResult_CommitmentTransactionDecodeErrorZ {
4267 private:
4268         LDKCResult_CommitmentTransactionDecodeErrorZ self;
4269 public:
4270         CResult_CommitmentTransactionDecodeErrorZ(const CResult_CommitmentTransactionDecodeErrorZ&) = delete;
4271         CResult_CommitmentTransactionDecodeErrorZ(CResult_CommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); }
4272         CResult_CommitmentTransactionDecodeErrorZ(LDKCResult_CommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); }
4273         operator LDKCResult_CommitmentTransactionDecodeErrorZ() && { LDKCResult_CommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ)); return res; }
4274         ~CResult_CommitmentTransactionDecodeErrorZ() { CResult_CommitmentTransactionDecodeErrorZ_free(self); }
4275         CResult_CommitmentTransactionDecodeErrorZ& operator=(CResult_CommitmentTransactionDecodeErrorZ&& o) { CResult_CommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CommitmentTransactionDecodeErrorZ)); return *this; }
4276         LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4277         LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4278         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4279         const LDKCResult_CommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4280 };
4281 class COption_C2Tuple_usizeTransactionZZ {
4282 private:
4283         LDKCOption_C2Tuple_usizeTransactionZZ self;
4284 public:
4285         COption_C2Tuple_usizeTransactionZZ(const COption_C2Tuple_usizeTransactionZZ&) = delete;
4286         COption_C2Tuple_usizeTransactionZZ(COption_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_C2Tuple_usizeTransactionZZ)); }
4287         COption_C2Tuple_usizeTransactionZZ(LDKCOption_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); }
4288         operator LDKCOption_C2Tuple_usizeTransactionZZ() && { LDKCOption_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCOption_C2Tuple_usizeTransactionZZ)); return res; }
4289         ~COption_C2Tuple_usizeTransactionZZ() { COption_C2Tuple_usizeTransactionZZ_free(self); }
4290         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; }
4291         LDKCOption_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
4292         LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
4293         const LDKCOption_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
4294         const LDKCOption_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
4295 };
4296 class CResult_TransactionNoneZ {
4297 private:
4298         LDKCResult_TransactionNoneZ self;
4299 public:
4300         CResult_TransactionNoneZ(const CResult_TransactionNoneZ&) = delete;
4301         CResult_TransactionNoneZ(CResult_TransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TransactionNoneZ)); }
4302         CResult_TransactionNoneZ(LDKCResult_TransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TransactionNoneZ)); }
4303         operator LDKCResult_TransactionNoneZ() && { LDKCResult_TransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TransactionNoneZ)); return res; }
4304         ~CResult_TransactionNoneZ() { CResult_TransactionNoneZ_free(self); }
4305         CResult_TransactionNoneZ& operator=(CResult_TransactionNoneZ&& o) { CResult_TransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TransactionNoneZ)); return *this; }
4306         LDKCResult_TransactionNoneZ* operator &() { return &self; }
4307         LDKCResult_TransactionNoneZ* operator ->() { return &self; }
4308         const LDKCResult_TransactionNoneZ* operator &() const { return &self; }
4309         const LDKCResult_TransactionNoneZ* operator ->() const { return &self; }
4310 };
4311 class CResult_SignedRawInvoiceNoneZ {
4312 private:
4313         LDKCResult_SignedRawInvoiceNoneZ self;
4314 public:
4315         CResult_SignedRawInvoiceNoneZ(const CResult_SignedRawInvoiceNoneZ&) = delete;
4316         CResult_SignedRawInvoiceNoneZ(CResult_SignedRawInvoiceNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignedRawInvoiceNoneZ)); }
4317         CResult_SignedRawInvoiceNoneZ(LDKCResult_SignedRawInvoiceNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignedRawInvoiceNoneZ)); }
4318         operator LDKCResult_SignedRawInvoiceNoneZ() && { LDKCResult_SignedRawInvoiceNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignedRawInvoiceNoneZ)); return res; }
4319         ~CResult_SignedRawInvoiceNoneZ() { CResult_SignedRawInvoiceNoneZ_free(self); }
4320         CResult_SignedRawInvoiceNoneZ& operator=(CResult_SignedRawInvoiceNoneZ&& o) { CResult_SignedRawInvoiceNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignedRawInvoiceNoneZ)); return *this; }
4321         LDKCResult_SignedRawInvoiceNoneZ* operator &() { return &self; }
4322         LDKCResult_SignedRawInvoiceNoneZ* operator ->() { return &self; }
4323         const LDKCResult_SignedRawInvoiceNoneZ* operator &() const { return &self; }
4324         const LDKCResult_SignedRawInvoiceNoneZ* operator ->() const { return &self; }
4325 };
4326 class CResult_ClosingSignedFeeRangeDecodeErrorZ {
4327 private:
4328         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ self;
4329 public:
4330         CResult_ClosingSignedFeeRangeDecodeErrorZ(const CResult_ClosingSignedFeeRangeDecodeErrorZ&) = delete;
4331         CResult_ClosingSignedFeeRangeDecodeErrorZ(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4332         CResult_ClosingSignedFeeRangeDecodeErrorZ(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); }
4333         operator LDKCResult_ClosingSignedFeeRangeDecodeErrorZ() && { LDKCResult_ClosingSignedFeeRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ)); return res; }
4334         ~CResult_ClosingSignedFeeRangeDecodeErrorZ() { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); }
4335         CResult_ClosingSignedFeeRangeDecodeErrorZ& operator=(CResult_ClosingSignedFeeRangeDecodeErrorZ&& o) { CResult_ClosingSignedFeeRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedFeeRangeDecodeErrorZ)); return *this; }
4336         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() { return &self; }
4337         LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() { return &self; }
4338         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator &() const { return &self; }
4339         const LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* operator ->() const { return &self; }
4340 };
4341 class CResult_PingDecodeErrorZ {
4342 private:
4343         LDKCResult_PingDecodeErrorZ self;
4344 public:
4345         CResult_PingDecodeErrorZ(const CResult_PingDecodeErrorZ&) = delete;
4346         CResult_PingDecodeErrorZ(CResult_PingDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); }
4347         CResult_PingDecodeErrorZ(LDKCResult_PingDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); }
4348         operator LDKCResult_PingDecodeErrorZ() && { LDKCResult_PingDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PingDecodeErrorZ)); return res; }
4349         ~CResult_PingDecodeErrorZ() { CResult_PingDecodeErrorZ_free(self); }
4350         CResult_PingDecodeErrorZ& operator=(CResult_PingDecodeErrorZ&& o) { CResult_PingDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PingDecodeErrorZ)); return *this; }
4351         LDKCResult_PingDecodeErrorZ* operator &() { return &self; }
4352         LDKCResult_PingDecodeErrorZ* operator ->() { return &self; }
4353         const LDKCResult_PingDecodeErrorZ* operator &() const { return &self; }
4354         const LDKCResult_PingDecodeErrorZ* operator ->() const { return &self; }
4355 };
4356 class CResult_GossipTimestampFilterDecodeErrorZ {
4357 private:
4358         LDKCResult_GossipTimestampFilterDecodeErrorZ self;
4359 public:
4360         CResult_GossipTimestampFilterDecodeErrorZ(const CResult_GossipTimestampFilterDecodeErrorZ&) = delete;
4361         CResult_GossipTimestampFilterDecodeErrorZ(CResult_GossipTimestampFilterDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); }
4362         CResult_GossipTimestampFilterDecodeErrorZ(LDKCResult_GossipTimestampFilterDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); }
4363         operator LDKCResult_GossipTimestampFilterDecodeErrorZ() && { LDKCResult_GossipTimestampFilterDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ)); return res; }
4364         ~CResult_GossipTimestampFilterDecodeErrorZ() { CResult_GossipTimestampFilterDecodeErrorZ_free(self); }
4365         CResult_GossipTimestampFilterDecodeErrorZ& operator=(CResult_GossipTimestampFilterDecodeErrorZ&& o) { CResult_GossipTimestampFilterDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_GossipTimestampFilterDecodeErrorZ)); return *this; }
4366         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() { return &self; }
4367         LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() { return &self; }
4368         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator &() const { return &self; }
4369         const LDKCResult_GossipTimestampFilterDecodeErrorZ* operator ->() const { return &self; }
4370 };
4371 class CResult_InvoiceSignOrCreationErrorZ {
4372 private:
4373         LDKCResult_InvoiceSignOrCreationErrorZ self;
4374 public:
4375         CResult_InvoiceSignOrCreationErrorZ(const CResult_InvoiceSignOrCreationErrorZ&) = delete;
4376         CResult_InvoiceSignOrCreationErrorZ(CResult_InvoiceSignOrCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); }
4377         CResult_InvoiceSignOrCreationErrorZ(LDKCResult_InvoiceSignOrCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); }
4378         operator LDKCResult_InvoiceSignOrCreationErrorZ() && { LDKCResult_InvoiceSignOrCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSignOrCreationErrorZ)); return res; }
4379         ~CResult_InvoiceSignOrCreationErrorZ() { CResult_InvoiceSignOrCreationErrorZ_free(self); }
4380         CResult_InvoiceSignOrCreationErrorZ& operator=(CResult_InvoiceSignOrCreationErrorZ&& o) { CResult_InvoiceSignOrCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSignOrCreationErrorZ)); return *this; }
4381         LDKCResult_InvoiceSignOrCreationErrorZ* operator &() { return &self; }
4382         LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() { return &self; }
4383         const LDKCResult_InvoiceSignOrCreationErrorZ* operator &() const { return &self; }
4384         const LDKCResult_InvoiceSignOrCreationErrorZ* operator ->() const { return &self; }
4385 };
4386 class CVec_TransactionOutputsZ {
4387 private:
4388         LDKCVec_TransactionOutputsZ self;
4389 public:
4390         CVec_TransactionOutputsZ(const CVec_TransactionOutputsZ&) = delete;
4391         CVec_TransactionOutputsZ(CVec_TransactionOutputsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); }
4392         CVec_TransactionOutputsZ(LDKCVec_TransactionOutputsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionOutputsZ)); }
4393         operator LDKCVec_TransactionOutputsZ() && { LDKCVec_TransactionOutputsZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionOutputsZ)); return res; }
4394         ~CVec_TransactionOutputsZ() { CVec_TransactionOutputsZ_free(self); }
4395         CVec_TransactionOutputsZ& operator=(CVec_TransactionOutputsZ&& o) { CVec_TransactionOutputsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionOutputsZ)); return *this; }
4396         LDKCVec_TransactionOutputsZ* operator &() { return &self; }
4397         LDKCVec_TransactionOutputsZ* operator ->() { return &self; }
4398         const LDKCVec_TransactionOutputsZ* operator &() const { return &self; }
4399         const LDKCVec_TransactionOutputsZ* operator ->() const { return &self; }
4400 };
4401 class CResult_ErrorMessageDecodeErrorZ {
4402 private:
4403         LDKCResult_ErrorMessageDecodeErrorZ self;
4404 public:
4405         CResult_ErrorMessageDecodeErrorZ(const CResult_ErrorMessageDecodeErrorZ&) = delete;
4406         CResult_ErrorMessageDecodeErrorZ(CResult_ErrorMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); }
4407         CResult_ErrorMessageDecodeErrorZ(LDKCResult_ErrorMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); }
4408         operator LDKCResult_ErrorMessageDecodeErrorZ() && { LDKCResult_ErrorMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ErrorMessageDecodeErrorZ)); return res; }
4409         ~CResult_ErrorMessageDecodeErrorZ() { CResult_ErrorMessageDecodeErrorZ_free(self); }
4410         CResult_ErrorMessageDecodeErrorZ& operator=(CResult_ErrorMessageDecodeErrorZ&& o) { CResult_ErrorMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ErrorMessageDecodeErrorZ)); return *this; }
4411         LDKCResult_ErrorMessageDecodeErrorZ* operator &() { return &self; }
4412         LDKCResult_ErrorMessageDecodeErrorZ* operator ->() { return &self; }
4413         const LDKCResult_ErrorMessageDecodeErrorZ* operator &() const { return &self; }
4414         const LDKCResult_ErrorMessageDecodeErrorZ* operator ->() const { return &self; }
4415 };
4416 class CResult_OpenChannelDecodeErrorZ {
4417 private:
4418         LDKCResult_OpenChannelDecodeErrorZ self;
4419 public:
4420         CResult_OpenChannelDecodeErrorZ(const CResult_OpenChannelDecodeErrorZ&) = delete;
4421         CResult_OpenChannelDecodeErrorZ(CResult_OpenChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); }
4422         CResult_OpenChannelDecodeErrorZ(LDKCResult_OpenChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); }
4423         operator LDKCResult_OpenChannelDecodeErrorZ() && { LDKCResult_OpenChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OpenChannelDecodeErrorZ)); return res; }
4424         ~CResult_OpenChannelDecodeErrorZ() { CResult_OpenChannelDecodeErrorZ_free(self); }
4425         CResult_OpenChannelDecodeErrorZ& operator=(CResult_OpenChannelDecodeErrorZ&& o) { CResult_OpenChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OpenChannelDecodeErrorZ)); return *this; }
4426         LDKCResult_OpenChannelDecodeErrorZ* operator &() { return &self; }
4427         LDKCResult_OpenChannelDecodeErrorZ* operator ->() { return &self; }
4428         const LDKCResult_OpenChannelDecodeErrorZ* operator &() const { return &self; }
4429         const LDKCResult_OpenChannelDecodeErrorZ* operator ->() const { return &self; }
4430 };
4431 class CVec_CVec_u8ZZ {
4432 private:
4433         LDKCVec_CVec_u8ZZ self;
4434 public:
4435         CVec_CVec_u8ZZ(const CVec_CVec_u8ZZ&) = delete;
4436         CVec_CVec_u8ZZ(CVec_CVec_u8ZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_u8ZZ)); }
4437         CVec_CVec_u8ZZ(LDKCVec_CVec_u8ZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_u8ZZ)); }
4438         operator LDKCVec_CVec_u8ZZ() && { LDKCVec_CVec_u8ZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_u8ZZ)); return res; }
4439         ~CVec_CVec_u8ZZ() { CVec_CVec_u8ZZ_free(self); }
4440         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; }
4441         LDKCVec_CVec_u8ZZ* operator &() { return &self; }
4442         LDKCVec_CVec_u8ZZ* operator ->() { return &self; }
4443         const LDKCVec_CVec_u8ZZ* operator &() const { return &self; }
4444         const LDKCVec_CVec_u8ZZ* operator ->() const { return &self; }
4445 };
4446 class COption_FilterZ {
4447 private:
4448         LDKCOption_FilterZ self;
4449 public:
4450         COption_FilterZ(const COption_FilterZ&) = delete;
4451         COption_FilterZ(COption_FilterZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_FilterZ)); }
4452         COption_FilterZ(LDKCOption_FilterZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_FilterZ)); }
4453         operator LDKCOption_FilterZ() && { LDKCOption_FilterZ res = self; memset(&self, 0, sizeof(LDKCOption_FilterZ)); return res; }
4454         ~COption_FilterZ() { COption_FilterZ_free(self); }
4455         COption_FilterZ& operator=(COption_FilterZ&& o) { COption_FilterZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_FilterZ)); return *this; }
4456         LDKCOption_FilterZ* operator &() { return &self; }
4457         LDKCOption_FilterZ* operator ->() { return &self; }
4458         const LDKCOption_FilterZ* operator &() const { return &self; }
4459         const LDKCOption_FilterZ* operator ->() const { return &self; }
4460 };
4461 class CResult_SecretKeyErrorZ {
4462 private:
4463         LDKCResult_SecretKeyErrorZ self;
4464 public:
4465         CResult_SecretKeyErrorZ(const CResult_SecretKeyErrorZ&) = delete;
4466         CResult_SecretKeyErrorZ(CResult_SecretKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); }
4467         CResult_SecretKeyErrorZ(LDKCResult_SecretKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); }
4468         operator LDKCResult_SecretKeyErrorZ() && { LDKCResult_SecretKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyErrorZ)); return res; }
4469         ~CResult_SecretKeyErrorZ() { CResult_SecretKeyErrorZ_free(self); }
4470         CResult_SecretKeyErrorZ& operator=(CResult_SecretKeyErrorZ&& o) { CResult_SecretKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyErrorZ)); return *this; }
4471         LDKCResult_SecretKeyErrorZ* operator &() { return &self; }
4472         LDKCResult_SecretKeyErrorZ* operator ->() { return &self; }
4473         const LDKCResult_SecretKeyErrorZ* operator &() const { return &self; }
4474         const LDKCResult_SecretKeyErrorZ* operator ->() const { return &self; }
4475 };
4476 class CResult_ShutdownScriptDecodeErrorZ {
4477 private:
4478         LDKCResult_ShutdownScriptDecodeErrorZ self;
4479 public:
4480         CResult_ShutdownScriptDecodeErrorZ(const CResult_ShutdownScriptDecodeErrorZ&) = delete;
4481         CResult_ShutdownScriptDecodeErrorZ(CResult_ShutdownScriptDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); }
4482         CResult_ShutdownScriptDecodeErrorZ(LDKCResult_ShutdownScriptDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); }
4483         operator LDKCResult_ShutdownScriptDecodeErrorZ() && { LDKCResult_ShutdownScriptDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptDecodeErrorZ)); return res; }
4484         ~CResult_ShutdownScriptDecodeErrorZ() { CResult_ShutdownScriptDecodeErrorZ_free(self); }
4485         CResult_ShutdownScriptDecodeErrorZ& operator=(CResult_ShutdownScriptDecodeErrorZ&& o) { CResult_ShutdownScriptDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptDecodeErrorZ)); return *this; }
4486         LDKCResult_ShutdownScriptDecodeErrorZ* operator &() { return &self; }
4487         LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() { return &self; }
4488         const LDKCResult_ShutdownScriptDecodeErrorZ* operator &() const { return &self; }
4489         const LDKCResult_ShutdownScriptDecodeErrorZ* operator ->() const { return &self; }
4490 };
4491 class CResult_InvoiceNoneZ {
4492 private:
4493         LDKCResult_InvoiceNoneZ self;
4494 public:
4495         CResult_InvoiceNoneZ(const CResult_InvoiceNoneZ&) = delete;
4496         CResult_InvoiceNoneZ(CResult_InvoiceNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceNoneZ)); }
4497         CResult_InvoiceNoneZ(LDKCResult_InvoiceNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceNoneZ)); }
4498         operator LDKCResult_InvoiceNoneZ() && { LDKCResult_InvoiceNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceNoneZ)); return res; }
4499         ~CResult_InvoiceNoneZ() { CResult_InvoiceNoneZ_free(self); }
4500         CResult_InvoiceNoneZ& operator=(CResult_InvoiceNoneZ&& o) { CResult_InvoiceNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceNoneZ)); return *this; }
4501         LDKCResult_InvoiceNoneZ* operator &() { return &self; }
4502         LDKCResult_InvoiceNoneZ* operator ->() { return &self; }
4503         const LDKCResult_InvoiceNoneZ* operator &() const { return &self; }
4504         const LDKCResult_InvoiceNoneZ* operator ->() const { return &self; }
4505 };
4506 class CResult_QueryChannelRangeDecodeErrorZ {
4507 private:
4508         LDKCResult_QueryChannelRangeDecodeErrorZ self;
4509 public:
4510         CResult_QueryChannelRangeDecodeErrorZ(const CResult_QueryChannelRangeDecodeErrorZ&) = delete;
4511         CResult_QueryChannelRangeDecodeErrorZ(CResult_QueryChannelRangeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); }
4512         CResult_QueryChannelRangeDecodeErrorZ(LDKCResult_QueryChannelRangeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); }
4513         operator LDKCResult_QueryChannelRangeDecodeErrorZ() && { LDKCResult_QueryChannelRangeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ)); return res; }
4514         ~CResult_QueryChannelRangeDecodeErrorZ() { CResult_QueryChannelRangeDecodeErrorZ_free(self); }
4515         CResult_QueryChannelRangeDecodeErrorZ& operator=(CResult_QueryChannelRangeDecodeErrorZ&& o) { CResult_QueryChannelRangeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryChannelRangeDecodeErrorZ)); return *this; }
4516         LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() { return &self; }
4517         LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() { return &self; }
4518         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator &() const { return &self; }
4519         const LDKCResult_QueryChannelRangeDecodeErrorZ* operator ->() const { return &self; }
4520 };
4521 class CResult_TxCreationKeysDecodeErrorZ {
4522 private:
4523         LDKCResult_TxCreationKeysDecodeErrorZ self;
4524 public:
4525         CResult_TxCreationKeysDecodeErrorZ(const CResult_TxCreationKeysDecodeErrorZ&) = delete;
4526         CResult_TxCreationKeysDecodeErrorZ(CResult_TxCreationKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); }
4527         CResult_TxCreationKeysDecodeErrorZ(LDKCResult_TxCreationKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); }
4528         operator LDKCResult_TxCreationKeysDecodeErrorZ() && { LDKCResult_TxCreationKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysDecodeErrorZ)); return res; }
4529         ~CResult_TxCreationKeysDecodeErrorZ() { CResult_TxCreationKeysDecodeErrorZ_free(self); }
4530         CResult_TxCreationKeysDecodeErrorZ& operator=(CResult_TxCreationKeysDecodeErrorZ&& o) { CResult_TxCreationKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysDecodeErrorZ)); return *this; }
4531         LDKCResult_TxCreationKeysDecodeErrorZ* operator &() { return &self; }
4532         LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() { return &self; }
4533         const LDKCResult_TxCreationKeysDecodeErrorZ* operator &() const { return &self; }
4534         const LDKCResult_TxCreationKeysDecodeErrorZ* operator ->() const { return &self; }
4535 };
4536 class C2Tuple_usizeTransactionZ {
4537 private:
4538         LDKC2Tuple_usizeTransactionZ self;
4539 public:
4540         C2Tuple_usizeTransactionZ(const C2Tuple_usizeTransactionZ&) = delete;
4541         C2Tuple_usizeTransactionZ(C2Tuple_usizeTransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); }
4542         C2Tuple_usizeTransactionZ(LDKC2Tuple_usizeTransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); }
4543         operator LDKC2Tuple_usizeTransactionZ() && { LDKC2Tuple_usizeTransactionZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_usizeTransactionZ)); return res; }
4544         ~C2Tuple_usizeTransactionZ() { C2Tuple_usizeTransactionZ_free(self); }
4545         C2Tuple_usizeTransactionZ& operator=(C2Tuple_usizeTransactionZ&& o) { C2Tuple_usizeTransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_usizeTransactionZ)); return *this; }
4546         LDKC2Tuple_usizeTransactionZ* operator &() { return &self; }
4547         LDKC2Tuple_usizeTransactionZ* operator ->() { return &self; }
4548         const LDKC2Tuple_usizeTransactionZ* operator &() const { return &self; }
4549         const LDKC2Tuple_usizeTransactionZ* operator ->() const { return &self; }
4550 };
4551 class CResult_ChannelFeaturesDecodeErrorZ {
4552 private:
4553         LDKCResult_ChannelFeaturesDecodeErrorZ self;
4554 public:
4555         CResult_ChannelFeaturesDecodeErrorZ(const CResult_ChannelFeaturesDecodeErrorZ&) = delete;
4556         CResult_ChannelFeaturesDecodeErrorZ(CResult_ChannelFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); }
4557         CResult_ChannelFeaturesDecodeErrorZ(LDKCResult_ChannelFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); }
4558         operator LDKCResult_ChannelFeaturesDecodeErrorZ() && { LDKCResult_ChannelFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ)); return res; }
4559         ~CResult_ChannelFeaturesDecodeErrorZ() { CResult_ChannelFeaturesDecodeErrorZ_free(self); }
4560         CResult_ChannelFeaturesDecodeErrorZ& operator=(CResult_ChannelFeaturesDecodeErrorZ&& o) { CResult_ChannelFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelFeaturesDecodeErrorZ)); return *this; }
4561         LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() { return &self; }
4562         LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() { return &self; }
4563         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator &() const { return &self; }
4564         const LDKCResult_ChannelFeaturesDecodeErrorZ* operator ->() const { return &self; }
4565 };
4566 class CVec_ChannelMonitorZ {
4567 private:
4568         LDKCVec_ChannelMonitorZ self;
4569 public:
4570         CVec_ChannelMonitorZ(const CVec_ChannelMonitorZ&) = delete;
4571         CVec_ChannelMonitorZ(CVec_ChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); }
4572         CVec_ChannelMonitorZ(LDKCVec_ChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelMonitorZ)); }
4573         operator LDKCVec_ChannelMonitorZ() && { LDKCVec_ChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelMonitorZ)); return res; }
4574         ~CVec_ChannelMonitorZ() { CVec_ChannelMonitorZ_free(self); }
4575         CVec_ChannelMonitorZ& operator=(CVec_ChannelMonitorZ&& o) { CVec_ChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelMonitorZ)); return *this; }
4576         LDKCVec_ChannelMonitorZ* operator &() { return &self; }
4577         LDKCVec_ChannelMonitorZ* operator ->() { return &self; }
4578         const LDKCVec_ChannelMonitorZ* operator &() const { return &self; }
4579         const LDKCVec_ChannelMonitorZ* operator ->() const { return &self; }
4580 };
4581 class CVec_TransactionZ {
4582 private:
4583         LDKCVec_TransactionZ self;
4584 public:
4585         CVec_TransactionZ(const CVec_TransactionZ&) = delete;
4586         CVec_TransactionZ(CVec_TransactionZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TransactionZ)); }
4587         CVec_TransactionZ(LDKCVec_TransactionZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TransactionZ)); }
4588         operator LDKCVec_TransactionZ() && { LDKCVec_TransactionZ res = self; memset(&self, 0, sizeof(LDKCVec_TransactionZ)); return res; }
4589         ~CVec_TransactionZ() { CVec_TransactionZ_free(self); }
4590         CVec_TransactionZ& operator=(CVec_TransactionZ&& o) { CVec_TransactionZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TransactionZ)); return *this; }
4591         LDKCVec_TransactionZ* operator &() { return &self; }
4592         LDKCVec_TransactionZ* operator ->() { return &self; }
4593         const LDKCVec_TransactionZ* operator &() const { return &self; }
4594         const LDKCVec_TransactionZ* operator ->() const { return &self; }
4595 };
4596 class CResult_UpdateFeeDecodeErrorZ {
4597 private:
4598         LDKCResult_UpdateFeeDecodeErrorZ self;
4599 public:
4600         CResult_UpdateFeeDecodeErrorZ(const CResult_UpdateFeeDecodeErrorZ&) = delete;
4601         CResult_UpdateFeeDecodeErrorZ(CResult_UpdateFeeDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); }
4602         CResult_UpdateFeeDecodeErrorZ(LDKCResult_UpdateFeeDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); }
4603         operator LDKCResult_UpdateFeeDecodeErrorZ() && { LDKCResult_UpdateFeeDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFeeDecodeErrorZ)); return res; }
4604         ~CResult_UpdateFeeDecodeErrorZ() { CResult_UpdateFeeDecodeErrorZ_free(self); }
4605         CResult_UpdateFeeDecodeErrorZ& operator=(CResult_UpdateFeeDecodeErrorZ&& o) { CResult_UpdateFeeDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFeeDecodeErrorZ)); return *this; }
4606         LDKCResult_UpdateFeeDecodeErrorZ* operator &() { return &self; }
4607         LDKCResult_UpdateFeeDecodeErrorZ* operator ->() { return &self; }
4608         const LDKCResult_UpdateFeeDecodeErrorZ* operator &() const { return &self; }
4609         const LDKCResult_UpdateFeeDecodeErrorZ* operator ->() const { return &self; }
4610 };
4611 class CResult_RouteHopDecodeErrorZ {
4612 private:
4613         LDKCResult_RouteHopDecodeErrorZ self;
4614 public:
4615         CResult_RouteHopDecodeErrorZ(const CResult_RouteHopDecodeErrorZ&) = delete;
4616         CResult_RouteHopDecodeErrorZ(CResult_RouteHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); }
4617         CResult_RouteHopDecodeErrorZ(LDKCResult_RouteHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); }
4618         operator LDKCResult_RouteHopDecodeErrorZ() && { LDKCResult_RouteHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHopDecodeErrorZ)); return res; }
4619         ~CResult_RouteHopDecodeErrorZ() { CResult_RouteHopDecodeErrorZ_free(self); }
4620         CResult_RouteHopDecodeErrorZ& operator=(CResult_RouteHopDecodeErrorZ&& o) { CResult_RouteHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHopDecodeErrorZ)); return *this; }
4621         LDKCResult_RouteHopDecodeErrorZ* operator &() { return &self; }
4622         LDKCResult_RouteHopDecodeErrorZ* operator ->() { return &self; }
4623         const LDKCResult_RouteHopDecodeErrorZ* operator &() const { return &self; }
4624         const LDKCResult_RouteHopDecodeErrorZ* operator ->() const { return &self; }
4625 };
4626 class CResult_NodeAnnouncementDecodeErrorZ {
4627 private:
4628         LDKCResult_NodeAnnouncementDecodeErrorZ self;
4629 public:
4630         CResult_NodeAnnouncementDecodeErrorZ(const CResult_NodeAnnouncementDecodeErrorZ&) = delete;
4631         CResult_NodeAnnouncementDecodeErrorZ(CResult_NodeAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); }
4632         CResult_NodeAnnouncementDecodeErrorZ(LDKCResult_NodeAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); }
4633         operator LDKCResult_NodeAnnouncementDecodeErrorZ() && { LDKCResult_NodeAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ)); return res; }
4634         ~CResult_NodeAnnouncementDecodeErrorZ() { CResult_NodeAnnouncementDecodeErrorZ_free(self); }
4635         CResult_NodeAnnouncementDecodeErrorZ& operator=(CResult_NodeAnnouncementDecodeErrorZ&& o) { CResult_NodeAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementDecodeErrorZ)); return *this; }
4636         LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() { return &self; }
4637         LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() { return &self; }
4638         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator &() const { return &self; }
4639         const LDKCResult_NodeAnnouncementDecodeErrorZ* operator ->() const { return &self; }
4640 };
4641 class CVec_BalanceZ {
4642 private:
4643         LDKCVec_BalanceZ self;
4644 public:
4645         CVec_BalanceZ(const CVec_BalanceZ&) = delete;
4646         CVec_BalanceZ(CVec_BalanceZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_BalanceZ)); }
4647         CVec_BalanceZ(LDKCVec_BalanceZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_BalanceZ)); }
4648         operator LDKCVec_BalanceZ() && { LDKCVec_BalanceZ res = self; memset(&self, 0, sizeof(LDKCVec_BalanceZ)); return res; }
4649         ~CVec_BalanceZ() { CVec_BalanceZ_free(self); }
4650         CVec_BalanceZ& operator=(CVec_BalanceZ&& o) { CVec_BalanceZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_BalanceZ)); return *this; }
4651         LDKCVec_BalanceZ* operator &() { return &self; }
4652         LDKCVec_BalanceZ* operator ->() { return &self; }
4653         const LDKCVec_BalanceZ* operator &() const { return &self; }
4654         const LDKCVec_BalanceZ* operator ->() const { return &self; }
4655 };
4656 class CResult_HTLCOutputInCommitmentDecodeErrorZ {
4657 private:
4658         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ self;
4659 public:
4660         CResult_HTLCOutputInCommitmentDecodeErrorZ(const CResult_HTLCOutputInCommitmentDecodeErrorZ&) = delete;
4661         CResult_HTLCOutputInCommitmentDecodeErrorZ(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4662         CResult_HTLCOutputInCommitmentDecodeErrorZ(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); }
4663         operator LDKCResult_HTLCOutputInCommitmentDecodeErrorZ() && { LDKCResult_HTLCOutputInCommitmentDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ)); return res; }
4664         ~CResult_HTLCOutputInCommitmentDecodeErrorZ() { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); }
4665         CResult_HTLCOutputInCommitmentDecodeErrorZ& operator=(CResult_HTLCOutputInCommitmentDecodeErrorZ&& o) { CResult_HTLCOutputInCommitmentDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HTLCOutputInCommitmentDecodeErrorZ)); return *this; }
4666         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() { return &self; }
4667         LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() { return &self; }
4668         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator &() const { return &self; }
4669         const LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* operator ->() const { return &self; }
4670 };
4671 class CResult_boolLightningErrorZ {
4672 private:
4673         LDKCResult_boolLightningErrorZ self;
4674 public:
4675         CResult_boolLightningErrorZ(const CResult_boolLightningErrorZ&) = delete;
4676         CResult_boolLightningErrorZ(CResult_boolLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); }
4677         CResult_boolLightningErrorZ(LDKCResult_boolLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolLightningErrorZ)); }
4678         operator LDKCResult_boolLightningErrorZ() && { LDKCResult_boolLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolLightningErrorZ)); return res; }
4679         ~CResult_boolLightningErrorZ() { CResult_boolLightningErrorZ_free(self); }
4680         CResult_boolLightningErrorZ& operator=(CResult_boolLightningErrorZ&& o) { CResult_boolLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolLightningErrorZ)); return *this; }
4681         LDKCResult_boolLightningErrorZ* operator &() { return &self; }
4682         LDKCResult_boolLightningErrorZ* operator ->() { return &self; }
4683         const LDKCResult_boolLightningErrorZ* operator &() const { return &self; }
4684         const LDKCResult_boolLightningErrorZ* operator ->() const { return &self; }
4685 };
4686 class CResult_TxCreationKeysErrorZ {
4687 private:
4688         LDKCResult_TxCreationKeysErrorZ self;
4689 public:
4690         CResult_TxCreationKeysErrorZ(const CResult_TxCreationKeysErrorZ&) = delete;
4691         CResult_TxCreationKeysErrorZ(CResult_TxCreationKeysErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); }
4692         CResult_TxCreationKeysErrorZ(LDKCResult_TxCreationKeysErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); }
4693         operator LDKCResult_TxCreationKeysErrorZ() && { LDKCResult_TxCreationKeysErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_TxCreationKeysErrorZ)); return res; }
4694         ~CResult_TxCreationKeysErrorZ() { CResult_TxCreationKeysErrorZ_free(self); }
4695         CResult_TxCreationKeysErrorZ& operator=(CResult_TxCreationKeysErrorZ&& o) { CResult_TxCreationKeysErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TxCreationKeysErrorZ)); return *this; }
4696         LDKCResult_TxCreationKeysErrorZ* operator &() { return &self; }
4697         LDKCResult_TxCreationKeysErrorZ* operator ->() { return &self; }
4698         const LDKCResult_TxCreationKeysErrorZ* operator &() const { return &self; }
4699         const LDKCResult_TxCreationKeysErrorZ* operator ->() const { return &self; }
4700 };
4701 class C2Tuple_BlockHashChannelMonitorZ {
4702 private:
4703         LDKC2Tuple_BlockHashChannelMonitorZ self;
4704 public:
4705         C2Tuple_BlockHashChannelMonitorZ(const C2Tuple_BlockHashChannelMonitorZ&) = delete;
4706         C2Tuple_BlockHashChannelMonitorZ(C2Tuple_BlockHashChannelMonitorZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); }
4707         C2Tuple_BlockHashChannelMonitorZ(LDKC2Tuple_BlockHashChannelMonitorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); }
4708         operator LDKC2Tuple_BlockHashChannelMonitorZ() && { LDKC2Tuple_BlockHashChannelMonitorZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelMonitorZ)); return res; }
4709         ~C2Tuple_BlockHashChannelMonitorZ() { C2Tuple_BlockHashChannelMonitorZ_free(self); }
4710         C2Tuple_BlockHashChannelMonitorZ& operator=(C2Tuple_BlockHashChannelMonitorZ&& o) { C2Tuple_BlockHashChannelMonitorZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelMonitorZ)); return *this; }
4711         LDKC2Tuple_BlockHashChannelMonitorZ* operator &() { return &self; }
4712         LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() { return &self; }
4713         const LDKC2Tuple_BlockHashChannelMonitorZ* operator &() const { return &self; }
4714         const LDKC2Tuple_BlockHashChannelMonitorZ* operator ->() const { return &self; }
4715 };
4716 class CResult_NodeIdDecodeErrorZ {
4717 private:
4718         LDKCResult_NodeIdDecodeErrorZ self;
4719 public:
4720         CResult_NodeIdDecodeErrorZ(const CResult_NodeIdDecodeErrorZ&) = delete;
4721         CResult_NodeIdDecodeErrorZ(CResult_NodeIdDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); }
4722         CResult_NodeIdDecodeErrorZ(LDKCResult_NodeIdDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); }
4723         operator LDKCResult_NodeIdDecodeErrorZ() && { LDKCResult_NodeIdDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeIdDecodeErrorZ)); return res; }
4724         ~CResult_NodeIdDecodeErrorZ() { CResult_NodeIdDecodeErrorZ_free(self); }
4725         CResult_NodeIdDecodeErrorZ& operator=(CResult_NodeIdDecodeErrorZ&& o) { CResult_NodeIdDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeIdDecodeErrorZ)); return *this; }
4726         LDKCResult_NodeIdDecodeErrorZ* operator &() { return &self; }
4727         LDKCResult_NodeIdDecodeErrorZ* operator ->() { return &self; }
4728         const LDKCResult_NodeIdDecodeErrorZ* operator &() const { return &self; }
4729         const LDKCResult_NodeIdDecodeErrorZ* operator ->() const { return &self; }
4730 };
4731 class CResult_ShutdownScriptInvalidShutdownScriptZ {
4732 private:
4733         LDKCResult_ShutdownScriptInvalidShutdownScriptZ self;
4734 public:
4735         CResult_ShutdownScriptInvalidShutdownScriptZ(const CResult_ShutdownScriptInvalidShutdownScriptZ&) = delete;
4736         CResult_ShutdownScriptInvalidShutdownScriptZ(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); }
4737         CResult_ShutdownScriptInvalidShutdownScriptZ(LDKCResult_ShutdownScriptInvalidShutdownScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); }
4738         operator LDKCResult_ShutdownScriptInvalidShutdownScriptZ() && { LDKCResult_ShutdownScriptInvalidShutdownScriptZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ)); return res; }
4739         ~CResult_ShutdownScriptInvalidShutdownScriptZ() { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); }
4740         CResult_ShutdownScriptInvalidShutdownScriptZ& operator=(CResult_ShutdownScriptInvalidShutdownScriptZ&& o) { CResult_ShutdownScriptInvalidShutdownScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownScriptInvalidShutdownScriptZ)); return *this; }
4741         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() { return &self; }
4742         LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() { return &self; }
4743         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator &() const { return &self; }
4744         const LDKCResult_ShutdownScriptInvalidShutdownScriptZ* operator ->() const { return &self; }
4745 };
4746 class CResult_RecoverableSignatureNoneZ {
4747 private:
4748         LDKCResult_RecoverableSignatureNoneZ self;
4749 public:
4750         CResult_RecoverableSignatureNoneZ(const CResult_RecoverableSignatureNoneZ&) = delete;
4751         CResult_RecoverableSignatureNoneZ(CResult_RecoverableSignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); }
4752         CResult_RecoverableSignatureNoneZ(LDKCResult_RecoverableSignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); }
4753         operator LDKCResult_RecoverableSignatureNoneZ() && { LDKCResult_RecoverableSignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_RecoverableSignatureNoneZ)); return res; }
4754         ~CResult_RecoverableSignatureNoneZ() { CResult_RecoverableSignatureNoneZ_free(self); }
4755         CResult_RecoverableSignatureNoneZ& operator=(CResult_RecoverableSignatureNoneZ&& o) { CResult_RecoverableSignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RecoverableSignatureNoneZ)); return *this; }
4756         LDKCResult_RecoverableSignatureNoneZ* operator &() { return &self; }
4757         LDKCResult_RecoverableSignatureNoneZ* operator ->() { return &self; }
4758         const LDKCResult_RecoverableSignatureNoneZ* operator &() const { return &self; }
4759         const LDKCResult_RecoverableSignatureNoneZ* operator ->() const { return &self; }
4760 };
4761 class CResult_COption_NetworkUpdateZDecodeErrorZ {
4762 private:
4763         LDKCResult_COption_NetworkUpdateZDecodeErrorZ self;
4764 public:
4765         CResult_COption_NetworkUpdateZDecodeErrorZ(const CResult_COption_NetworkUpdateZDecodeErrorZ&) = delete;
4766         CResult_COption_NetworkUpdateZDecodeErrorZ(CResult_COption_NetworkUpdateZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_NetworkUpdateZDecodeErrorZ)); }
4767         CResult_COption_NetworkUpdateZDecodeErrorZ(LDKCResult_COption_NetworkUpdateZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); }
4768         operator LDKCResult_COption_NetworkUpdateZDecodeErrorZ() && { LDKCResult_COption_NetworkUpdateZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ)); return res; }
4769         ~CResult_COption_NetworkUpdateZDecodeErrorZ() { CResult_COption_NetworkUpdateZDecodeErrorZ_free(self); }
4770         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; }
4771         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() { return &self; }
4772         LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() { return &self; }
4773         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator &() const { return &self; }
4774         const LDKCResult_COption_NetworkUpdateZDecodeErrorZ* operator ->() const { return &self; }
4775 };
4776 class CResult_NodeAnnouncementInfoDecodeErrorZ {
4777 private:
4778         LDKCResult_NodeAnnouncementInfoDecodeErrorZ self;
4779 public:
4780         CResult_NodeAnnouncementInfoDecodeErrorZ(const CResult_NodeAnnouncementInfoDecodeErrorZ&) = delete;
4781         CResult_NodeAnnouncementInfoDecodeErrorZ(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); }
4782         CResult_NodeAnnouncementInfoDecodeErrorZ(LDKCResult_NodeAnnouncementInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); }
4783         operator LDKCResult_NodeAnnouncementInfoDecodeErrorZ() && { LDKCResult_NodeAnnouncementInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ)); return res; }
4784         ~CResult_NodeAnnouncementInfoDecodeErrorZ() { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); }
4785         CResult_NodeAnnouncementInfoDecodeErrorZ& operator=(CResult_NodeAnnouncementInfoDecodeErrorZ&& o) { CResult_NodeAnnouncementInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeAnnouncementInfoDecodeErrorZ)); return *this; }
4786         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() { return &self; }
4787         LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() { return &self; }
4788         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator &() const { return &self; }
4789         const LDKCResult_NodeAnnouncementInfoDecodeErrorZ* operator ->() const { return &self; }
4790 };
4791 class C3Tuple_RawInvoice_u832InvoiceSignatureZ {
4792 private:
4793         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ self;
4794 public:
4795         C3Tuple_RawInvoice_u832InvoiceSignatureZ(const C3Tuple_RawInvoice_u832InvoiceSignatureZ&) = delete;
4796         C3Tuple_RawInvoice_u832InvoiceSignatureZ(C3Tuple_RawInvoice_u832InvoiceSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
4797         C3Tuple_RawInvoice_u832InvoiceSignatureZ(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); }
4798         operator LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ() && { LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ)); return res; }
4799         ~C3Tuple_RawInvoice_u832InvoiceSignatureZ() { C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(self); }
4800         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; }
4801         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() { return &self; }
4802         LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() { return &self; }
4803         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator &() const { return &self; }
4804         const LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* operator ->() const { return &self; }
4805 };
4806 class CVec_UpdateFailMalformedHTLCZ {
4807 private:
4808         LDKCVec_UpdateFailMalformedHTLCZ self;
4809 public:
4810         CVec_UpdateFailMalformedHTLCZ(const CVec_UpdateFailMalformedHTLCZ&) = delete;
4811         CVec_UpdateFailMalformedHTLCZ(CVec_UpdateFailMalformedHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); }
4812         CVec_UpdateFailMalformedHTLCZ(LDKCVec_UpdateFailMalformedHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); }
4813         operator LDKCVec_UpdateFailMalformedHTLCZ() && { LDKCVec_UpdateFailMalformedHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailMalformedHTLCZ)); return res; }
4814         ~CVec_UpdateFailMalformedHTLCZ() { CVec_UpdateFailMalformedHTLCZ_free(self); }
4815         CVec_UpdateFailMalformedHTLCZ& operator=(CVec_UpdateFailMalformedHTLCZ&& o) { CVec_UpdateFailMalformedHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailMalformedHTLCZ)); return *this; }
4816         LDKCVec_UpdateFailMalformedHTLCZ* operator &() { return &self; }
4817         LDKCVec_UpdateFailMalformedHTLCZ* operator ->() { return &self; }
4818         const LDKCVec_UpdateFailMalformedHTLCZ* operator &() const { return &self; }
4819         const LDKCVec_UpdateFailMalformedHTLCZ* operator ->() const { return &self; }
4820 };
4821 class CResult_FundingSignedDecodeErrorZ {
4822 private:
4823         LDKCResult_FundingSignedDecodeErrorZ self;
4824 public:
4825         CResult_FundingSignedDecodeErrorZ(const CResult_FundingSignedDecodeErrorZ&) = delete;
4826         CResult_FundingSignedDecodeErrorZ(CResult_FundingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); }
4827         CResult_FundingSignedDecodeErrorZ(LDKCResult_FundingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); }
4828         operator LDKCResult_FundingSignedDecodeErrorZ() && { LDKCResult_FundingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingSignedDecodeErrorZ)); return res; }
4829         ~CResult_FundingSignedDecodeErrorZ() { CResult_FundingSignedDecodeErrorZ_free(self); }
4830         CResult_FundingSignedDecodeErrorZ& operator=(CResult_FundingSignedDecodeErrorZ&& o) { CResult_FundingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingSignedDecodeErrorZ)); return *this; }
4831         LDKCResult_FundingSignedDecodeErrorZ* operator &() { return &self; }
4832         LDKCResult_FundingSignedDecodeErrorZ* operator ->() { return &self; }
4833         const LDKCResult_FundingSignedDecodeErrorZ* operator &() const { return &self; }
4834         const LDKCResult_FundingSignedDecodeErrorZ* operator ->() const { return &self; }
4835 };
4836 class CResult_NetworkGraphDecodeErrorZ {
4837 private:
4838         LDKCResult_NetworkGraphDecodeErrorZ self;
4839 public:
4840         CResult_NetworkGraphDecodeErrorZ(const CResult_NetworkGraphDecodeErrorZ&) = delete;
4841         CResult_NetworkGraphDecodeErrorZ(CResult_NetworkGraphDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); }
4842         CResult_NetworkGraphDecodeErrorZ(LDKCResult_NetworkGraphDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); }
4843         operator LDKCResult_NetworkGraphDecodeErrorZ() && { LDKCResult_NetworkGraphDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NetworkGraphDecodeErrorZ)); return res; }
4844         ~CResult_NetworkGraphDecodeErrorZ() { CResult_NetworkGraphDecodeErrorZ_free(self); }
4845         CResult_NetworkGraphDecodeErrorZ& operator=(CResult_NetworkGraphDecodeErrorZ&& o) { CResult_NetworkGraphDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NetworkGraphDecodeErrorZ)); return *this; }
4846         LDKCResult_NetworkGraphDecodeErrorZ* operator &() { return &self; }
4847         LDKCResult_NetworkGraphDecodeErrorZ* operator ->() { return &self; }
4848         const LDKCResult_NetworkGraphDecodeErrorZ* operator &() const { return &self; }
4849         const LDKCResult_NetworkGraphDecodeErrorZ* operator ->() const { return &self; }
4850 };
4851 class CVec_RouteHopZ {
4852 private:
4853         LDKCVec_RouteHopZ self;
4854 public:
4855         CVec_RouteHopZ(const CVec_RouteHopZ&) = delete;
4856         CVec_RouteHopZ(CVec_RouteHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHopZ)); }
4857         CVec_RouteHopZ(LDKCVec_RouteHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHopZ)); }
4858         operator LDKCVec_RouteHopZ() && { LDKCVec_RouteHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHopZ)); return res; }
4859         ~CVec_RouteHopZ() { CVec_RouteHopZ_free(self); }
4860         CVec_RouteHopZ& operator=(CVec_RouteHopZ&& o) { CVec_RouteHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHopZ)); return *this; }
4861         LDKCVec_RouteHopZ* operator &() { return &self; }
4862         LDKCVec_RouteHopZ* operator ->() { return &self; }
4863         const LDKCVec_RouteHopZ* operator &() const { return &self; }
4864         const LDKCVec_RouteHopZ* operator ->() const { return &self; }
4865 };
4866 class CVec_C2Tuple_BlockHashChannelMonitorZZ {
4867 private:
4868         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ self;
4869 public:
4870         CVec_C2Tuple_BlockHashChannelMonitorZZ(const CVec_C2Tuple_BlockHashChannelMonitorZZ&) = delete;
4871         CVec_C2Tuple_BlockHashChannelMonitorZZ(CVec_C2Tuple_BlockHashChannelMonitorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_BlockHashChannelMonitorZZ)); }
4872         CVec_C2Tuple_BlockHashChannelMonitorZZ(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); }
4873         operator LDKCVec_C2Tuple_BlockHashChannelMonitorZZ() && { LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_BlockHashChannelMonitorZZ)); return res; }
4874         ~CVec_C2Tuple_BlockHashChannelMonitorZZ() { CVec_C2Tuple_BlockHashChannelMonitorZZ_free(self); }
4875         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; }
4876         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() { return &self; }
4877         LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() { return &self; }
4878         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator &() const { return &self; }
4879         const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ* operator ->() const { return &self; }
4880 };
4881 class CResult_NonePaymentSendFailureZ {
4882 private:
4883         LDKCResult_NonePaymentSendFailureZ self;
4884 public:
4885         CResult_NonePaymentSendFailureZ(const CResult_NonePaymentSendFailureZ&) = delete;
4886         CResult_NonePaymentSendFailureZ(CResult_NonePaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); }
4887         CResult_NonePaymentSendFailureZ(LDKCResult_NonePaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); }
4888         operator LDKCResult_NonePaymentSendFailureZ() && { LDKCResult_NonePaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePaymentSendFailureZ)); return res; }
4889         ~CResult_NonePaymentSendFailureZ() { CResult_NonePaymentSendFailureZ_free(self); }
4890         CResult_NonePaymentSendFailureZ& operator=(CResult_NonePaymentSendFailureZ&& o) { CResult_NonePaymentSendFailureZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePaymentSendFailureZ)); return *this; }
4891         LDKCResult_NonePaymentSendFailureZ* operator &() { return &self; }
4892         LDKCResult_NonePaymentSendFailureZ* operator ->() { return &self; }
4893         const LDKCResult_NonePaymentSendFailureZ* operator &() const { return &self; }
4894         const LDKCResult_NonePaymentSendFailureZ* operator ->() const { return &self; }
4895 };
4896 class CResult_RouteLightningErrorZ {
4897 private:
4898         LDKCResult_RouteLightningErrorZ self;
4899 public:
4900         CResult_RouteLightningErrorZ(const CResult_RouteLightningErrorZ&) = delete;
4901         CResult_RouteLightningErrorZ(CResult_RouteLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); }
4902         CResult_RouteLightningErrorZ(LDKCResult_RouteLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); }
4903         operator LDKCResult_RouteLightningErrorZ() && { LDKCResult_RouteLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteLightningErrorZ)); return res; }
4904         ~CResult_RouteLightningErrorZ() { CResult_RouteLightningErrorZ_free(self); }
4905         CResult_RouteLightningErrorZ& operator=(CResult_RouteLightningErrorZ&& o) { CResult_RouteLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteLightningErrorZ)); return *this; }
4906         LDKCResult_RouteLightningErrorZ* operator &() { return &self; }
4907         LDKCResult_RouteLightningErrorZ* operator ->() { return &self; }
4908         const LDKCResult_RouteLightningErrorZ* operator &() const { return &self; }
4909         const LDKCResult_RouteLightningErrorZ* operator ->() const { return &self; }
4910 };
4911 class CResult_ChannelPublicKeysDecodeErrorZ {
4912 private:
4913         LDKCResult_ChannelPublicKeysDecodeErrorZ self;
4914 public:
4915         CResult_ChannelPublicKeysDecodeErrorZ(const CResult_ChannelPublicKeysDecodeErrorZ&) = delete;
4916         CResult_ChannelPublicKeysDecodeErrorZ(CResult_ChannelPublicKeysDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); }
4917         CResult_ChannelPublicKeysDecodeErrorZ(LDKCResult_ChannelPublicKeysDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); }
4918         operator LDKCResult_ChannelPublicKeysDecodeErrorZ() && { LDKCResult_ChannelPublicKeysDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ)); return res; }
4919         ~CResult_ChannelPublicKeysDecodeErrorZ() { CResult_ChannelPublicKeysDecodeErrorZ_free(self); }
4920         CResult_ChannelPublicKeysDecodeErrorZ& operator=(CResult_ChannelPublicKeysDecodeErrorZ&& o) { CResult_ChannelPublicKeysDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelPublicKeysDecodeErrorZ)); return *this; }
4921         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() { return &self; }
4922         LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() { return &self; }
4923         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator &() const { return &self; }
4924         const LDKCResult_ChannelPublicKeysDecodeErrorZ* operator ->() const { return &self; }
4925 };
4926 class CVec_u8Z {
4927 private:
4928         LDKCVec_u8Z self;
4929 public:
4930         CVec_u8Z(const CVec_u8Z&) = delete;
4931         CVec_u8Z(CVec_u8Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u8Z)); }
4932         CVec_u8Z(LDKCVec_u8Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u8Z)); }
4933         operator LDKCVec_u8Z() && { LDKCVec_u8Z res = self; memset(&self, 0, sizeof(LDKCVec_u8Z)); return res; }
4934         ~CVec_u8Z() { CVec_u8Z_free(self); }
4935         CVec_u8Z& operator=(CVec_u8Z&& o) { CVec_u8Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u8Z)); return *this; }
4936         LDKCVec_u8Z* operator &() { return &self; }
4937         LDKCVec_u8Z* operator ->() { return &self; }
4938         const LDKCVec_u8Z* operator &() const { return &self; }
4939         const LDKCVec_u8Z* operator ->() const { return &self; }
4940 };
4941 class CResult_NodeInfoDecodeErrorZ {
4942 private:
4943         LDKCResult_NodeInfoDecodeErrorZ self;
4944 public:
4945         CResult_NodeInfoDecodeErrorZ(const CResult_NodeInfoDecodeErrorZ&) = delete;
4946         CResult_NodeInfoDecodeErrorZ(CResult_NodeInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); }
4947         CResult_NodeInfoDecodeErrorZ(LDKCResult_NodeInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); }
4948         operator LDKCResult_NodeInfoDecodeErrorZ() && { LDKCResult_NodeInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeInfoDecodeErrorZ)); return res; }
4949         ~CResult_NodeInfoDecodeErrorZ() { CResult_NodeInfoDecodeErrorZ_free(self); }
4950         CResult_NodeInfoDecodeErrorZ& operator=(CResult_NodeInfoDecodeErrorZ&& o) { CResult_NodeInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeInfoDecodeErrorZ)); return *this; }
4951         LDKCResult_NodeInfoDecodeErrorZ* operator &() { return &self; }
4952         LDKCResult_NodeInfoDecodeErrorZ* operator ->() { return &self; }
4953         const LDKCResult_NodeInfoDecodeErrorZ* operator &() const { return &self; }
4954         const LDKCResult_NodeInfoDecodeErrorZ* operator ->() const { return &self; }
4955 };
4956 class CResult_ClosingSignedDecodeErrorZ {
4957 private:
4958         LDKCResult_ClosingSignedDecodeErrorZ self;
4959 public:
4960         CResult_ClosingSignedDecodeErrorZ(const CResult_ClosingSignedDecodeErrorZ&) = delete;
4961         CResult_ClosingSignedDecodeErrorZ(CResult_ClosingSignedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); }
4962         CResult_ClosingSignedDecodeErrorZ(LDKCResult_ClosingSignedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); }
4963         operator LDKCResult_ClosingSignedDecodeErrorZ() && { LDKCResult_ClosingSignedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ClosingSignedDecodeErrorZ)); return res; }
4964         ~CResult_ClosingSignedDecodeErrorZ() { CResult_ClosingSignedDecodeErrorZ_free(self); }
4965         CResult_ClosingSignedDecodeErrorZ& operator=(CResult_ClosingSignedDecodeErrorZ&& o) { CResult_ClosingSignedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ClosingSignedDecodeErrorZ)); return *this; }
4966         LDKCResult_ClosingSignedDecodeErrorZ* operator &() { return &self; }
4967         LDKCResult_ClosingSignedDecodeErrorZ* operator ->() { return &self; }
4968         const LDKCResult_ClosingSignedDecodeErrorZ* operator &() const { return &self; }
4969         const LDKCResult_ClosingSignedDecodeErrorZ* operator ->() const { return &self; }
4970 };
4971 class CResult_HolderCommitmentTransactionDecodeErrorZ {
4972 private:
4973         LDKCResult_HolderCommitmentTransactionDecodeErrorZ self;
4974 public:
4975         CResult_HolderCommitmentTransactionDecodeErrorZ(const CResult_HolderCommitmentTransactionDecodeErrorZ&) = delete;
4976         CResult_HolderCommitmentTransactionDecodeErrorZ(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); }
4977         CResult_HolderCommitmentTransactionDecodeErrorZ(LDKCResult_HolderCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); }
4978         operator LDKCResult_HolderCommitmentTransactionDecodeErrorZ() && { LDKCResult_HolderCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ)); return res; }
4979         ~CResult_HolderCommitmentTransactionDecodeErrorZ() { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); }
4980         CResult_HolderCommitmentTransactionDecodeErrorZ& operator=(CResult_HolderCommitmentTransactionDecodeErrorZ&& o) { CResult_HolderCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_HolderCommitmentTransactionDecodeErrorZ)); return *this; }
4981         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
4982         LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
4983         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
4984         const LDKCResult_HolderCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
4985 };
4986 class CVec_CResult_NoneAPIErrorZZ {
4987 private:
4988         LDKCVec_CResult_NoneAPIErrorZZ self;
4989 public:
4990         CVec_CResult_NoneAPIErrorZZ(const CVec_CResult_NoneAPIErrorZZ&) = delete;
4991         CVec_CResult_NoneAPIErrorZZ(CVec_CResult_NoneAPIErrorZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CResult_NoneAPIErrorZZ)); }
4992         CVec_CResult_NoneAPIErrorZZ(LDKCVec_CResult_NoneAPIErrorZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); }
4993         operator LDKCVec_CResult_NoneAPIErrorZZ() && { LDKCVec_CResult_NoneAPIErrorZZ res = self; memset(&self, 0, sizeof(LDKCVec_CResult_NoneAPIErrorZZ)); return res; }
4994         ~CVec_CResult_NoneAPIErrorZZ() { CVec_CResult_NoneAPIErrorZZ_free(self); }
4995         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; }
4996         LDKCVec_CResult_NoneAPIErrorZZ* operator &() { return &self; }
4997         LDKCVec_CResult_NoneAPIErrorZZ* operator ->() { return &self; }
4998         const LDKCVec_CResult_NoneAPIErrorZZ* operator &() const { return &self; }
4999         const LDKCVec_CResult_NoneAPIErrorZZ* operator ->() const { return &self; }
5000 };
5001 class CResult_CounterpartyCommitmentSecretsDecodeErrorZ {
5002 private:
5003         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ self;
5004 public:
5005         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(const CResult_CounterpartyCommitmentSecretsDecodeErrorZ&) = delete;
5006         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5007         CResult_CounterpartyCommitmentSecretsDecodeErrorZ(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); }
5008         operator LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ() && { LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return res; }
5009         ~CResult_CounterpartyCommitmentSecretsDecodeErrorZ() { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); }
5010         CResult_CounterpartyCommitmentSecretsDecodeErrorZ& operator=(CResult_CounterpartyCommitmentSecretsDecodeErrorZ&& o) { CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyCommitmentSecretsDecodeErrorZ)); return *this; }
5011         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() { return &self; }
5012         LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() { return &self; }
5013         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator &() const { return &self; }
5014         const LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ* operator ->() const { return &self; }
5015 };
5016 class CResult_ChannelCounterpartyDecodeErrorZ {
5017 private:
5018         LDKCResult_ChannelCounterpartyDecodeErrorZ self;
5019 public:
5020         CResult_ChannelCounterpartyDecodeErrorZ(const CResult_ChannelCounterpartyDecodeErrorZ&) = delete;
5021         CResult_ChannelCounterpartyDecodeErrorZ(CResult_ChannelCounterpartyDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); }
5022         CResult_ChannelCounterpartyDecodeErrorZ(LDKCResult_ChannelCounterpartyDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); }
5023         operator LDKCResult_ChannelCounterpartyDecodeErrorZ() && { LDKCResult_ChannelCounterpartyDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelCounterpartyDecodeErrorZ)); return res; }
5024         ~CResult_ChannelCounterpartyDecodeErrorZ() { CResult_ChannelCounterpartyDecodeErrorZ_free(self); }
5025         CResult_ChannelCounterpartyDecodeErrorZ& operator=(CResult_ChannelCounterpartyDecodeErrorZ&& o) { CResult_ChannelCounterpartyDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelCounterpartyDecodeErrorZ)); return *this; }
5026         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() { return &self; }
5027         LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() { return &self; }
5028         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator &() const { return &self; }
5029         const LDKCResult_ChannelCounterpartyDecodeErrorZ* operator ->() const { return &self; }
5030 };
5031 class CResult_WarningMessageDecodeErrorZ {
5032 private:
5033         LDKCResult_WarningMessageDecodeErrorZ self;
5034 public:
5035         CResult_WarningMessageDecodeErrorZ(const CResult_WarningMessageDecodeErrorZ&) = delete;
5036         CResult_WarningMessageDecodeErrorZ(CResult_WarningMessageDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); }
5037         CResult_WarningMessageDecodeErrorZ(LDKCResult_WarningMessageDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); }
5038         operator LDKCResult_WarningMessageDecodeErrorZ() && { LDKCResult_WarningMessageDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_WarningMessageDecodeErrorZ)); return res; }
5039         ~CResult_WarningMessageDecodeErrorZ() { CResult_WarningMessageDecodeErrorZ_free(self); }
5040         CResult_WarningMessageDecodeErrorZ& operator=(CResult_WarningMessageDecodeErrorZ&& o) { CResult_WarningMessageDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_WarningMessageDecodeErrorZ)); return *this; }
5041         LDKCResult_WarningMessageDecodeErrorZ* operator &() { return &self; }
5042         LDKCResult_WarningMessageDecodeErrorZ* operator ->() { return &self; }
5043         const LDKCResult_WarningMessageDecodeErrorZ* operator &() const { return &self; }
5044         const LDKCResult_WarningMessageDecodeErrorZ* operator ->() const { return &self; }
5045 };
5046 class CResult_SignatureNoneZ {
5047 private:
5048         LDKCResult_SignatureNoneZ self;
5049 public:
5050         CResult_SignatureNoneZ(const CResult_SignatureNoneZ&) = delete;
5051         CResult_SignatureNoneZ(CResult_SignatureNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignatureNoneZ)); }
5052         CResult_SignatureNoneZ(LDKCResult_SignatureNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignatureNoneZ)); }
5053         operator LDKCResult_SignatureNoneZ() && { LDKCResult_SignatureNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SignatureNoneZ)); return res; }
5054         ~CResult_SignatureNoneZ() { CResult_SignatureNoneZ_free(self); }
5055         CResult_SignatureNoneZ& operator=(CResult_SignatureNoneZ&& o) { CResult_SignatureNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignatureNoneZ)); return *this; }
5056         LDKCResult_SignatureNoneZ* operator &() { return &self; }
5057         LDKCResult_SignatureNoneZ* operator ->() { return &self; }
5058         const LDKCResult_SignatureNoneZ* operator &() const { return &self; }
5059         const LDKCResult_SignatureNoneZ* operator ->() const { return &self; }
5060 };
5061 class CVec_RouteHintHopZ {
5062 private:
5063         LDKCVec_RouteHintHopZ self;
5064 public:
5065         CVec_RouteHintHopZ(const CVec_RouteHintHopZ&) = delete;
5066         CVec_RouteHintHopZ(CVec_RouteHintHopZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintHopZ)); }
5067         CVec_RouteHintHopZ(LDKCVec_RouteHintHopZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintHopZ)); }
5068         operator LDKCVec_RouteHintHopZ() && { LDKCVec_RouteHintHopZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintHopZ)); return res; }
5069         ~CVec_RouteHintHopZ() { CVec_RouteHintHopZ_free(self); }
5070         CVec_RouteHintHopZ& operator=(CVec_RouteHintHopZ&& o) { CVec_RouteHintHopZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintHopZ)); return *this; }
5071         LDKCVec_RouteHintHopZ* operator &() { return &self; }
5072         LDKCVec_RouteHintHopZ* operator ->() { return &self; }
5073         const LDKCVec_RouteHintHopZ* operator &() const { return &self; }
5074         const LDKCVec_RouteHintHopZ* operator ->() const { return &self; }
5075 };
5076 class CResult_SecretKeyNoneZ {
5077 private:
5078         LDKCResult_SecretKeyNoneZ self;
5079 public:
5080         CResult_SecretKeyNoneZ(const CResult_SecretKeyNoneZ&) = delete;
5081         CResult_SecretKeyNoneZ(CResult_SecretKeyNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); }
5082         CResult_SecretKeyNoneZ(LDKCResult_SecretKeyNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); }
5083         operator LDKCResult_SecretKeyNoneZ() && { LDKCResult_SecretKeyNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SecretKeyNoneZ)); return res; }
5084         ~CResult_SecretKeyNoneZ() { CResult_SecretKeyNoneZ_free(self); }
5085         CResult_SecretKeyNoneZ& operator=(CResult_SecretKeyNoneZ&& o) { CResult_SecretKeyNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SecretKeyNoneZ)); return *this; }
5086         LDKCResult_SecretKeyNoneZ* operator &() { return &self; }
5087         LDKCResult_SecretKeyNoneZ* operator ->() { return &self; }
5088         const LDKCResult_SecretKeyNoneZ* operator &() const { return &self; }
5089         const LDKCResult_SecretKeyNoneZ* operator ->() const { return &self; }
5090 };
5091 class CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
5092 private:
5093         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ self;
5094 public:
5095         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(const CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&) = delete;
5096         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5097         CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); }
5098         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ)); return res; }
5099         ~CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ() { CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(self); }
5100         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; }
5101         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() { return &self; }
5102         LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() { return &self; }
5103         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator &() const { return &self; }
5104         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* operator ->() const { return &self; }
5105 };
5106 class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
5107 private:
5108         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ self;
5109 public:
5110         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(const C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&) = delete;
5111         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5112         C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); }
5113         operator LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ)); return res; }
5114         ~C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ() { C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(self); }
5115         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; }
5116         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() { return &self; }
5117         LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() { return &self; }
5118         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator &() const { return &self; }
5119         const LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* operator ->() const { return &self; }
5120 };
5121 class CResult_PaymentParametersDecodeErrorZ {
5122 private:
5123         LDKCResult_PaymentParametersDecodeErrorZ self;
5124 public:
5125         CResult_PaymentParametersDecodeErrorZ(const CResult_PaymentParametersDecodeErrorZ&) = delete;
5126         CResult_PaymentParametersDecodeErrorZ(CResult_PaymentParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); }
5127         CResult_PaymentParametersDecodeErrorZ(LDKCResult_PaymentParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); }
5128         operator LDKCResult_PaymentParametersDecodeErrorZ() && { LDKCResult_PaymentParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentParametersDecodeErrorZ)); return res; }
5129         ~CResult_PaymentParametersDecodeErrorZ() { CResult_PaymentParametersDecodeErrorZ_free(self); }
5130         CResult_PaymentParametersDecodeErrorZ& operator=(CResult_PaymentParametersDecodeErrorZ&& o) { CResult_PaymentParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentParametersDecodeErrorZ)); return *this; }
5131         LDKCResult_PaymentParametersDecodeErrorZ* operator &() { return &self; }
5132         LDKCResult_PaymentParametersDecodeErrorZ* operator ->() { return &self; }
5133         const LDKCResult_PaymentParametersDecodeErrorZ* operator &() const { return &self; }
5134         const LDKCResult_PaymentParametersDecodeErrorZ* operator ->() const { return &self; }
5135 };
5136 class CResult_InitDecodeErrorZ {
5137 private:
5138         LDKCResult_InitDecodeErrorZ self;
5139 public:
5140         CResult_InitDecodeErrorZ(const CResult_InitDecodeErrorZ&) = delete;
5141         CResult_InitDecodeErrorZ(CResult_InitDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); }
5142         CResult_InitDecodeErrorZ(LDKCResult_InitDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); }
5143         operator LDKCResult_InitDecodeErrorZ() && { LDKCResult_InitDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InitDecodeErrorZ)); return res; }
5144         ~CResult_InitDecodeErrorZ() { CResult_InitDecodeErrorZ_free(self); }
5145         CResult_InitDecodeErrorZ& operator=(CResult_InitDecodeErrorZ&& o) { CResult_InitDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InitDecodeErrorZ)); return *this; }
5146         LDKCResult_InitDecodeErrorZ* operator &() { return &self; }
5147         LDKCResult_InitDecodeErrorZ* operator ->() { return &self; }
5148         const LDKCResult_InitDecodeErrorZ* operator &() const { return &self; }
5149         const LDKCResult_InitDecodeErrorZ* operator ->() const { return &self; }
5150 };
5151 class CResult_OutPointDecodeErrorZ {
5152 private:
5153         LDKCResult_OutPointDecodeErrorZ self;
5154 public:
5155         CResult_OutPointDecodeErrorZ(const CResult_OutPointDecodeErrorZ&) = delete;
5156         CResult_OutPointDecodeErrorZ(CResult_OutPointDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); }
5157         CResult_OutPointDecodeErrorZ(LDKCResult_OutPointDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); }
5158         operator LDKCResult_OutPointDecodeErrorZ() && { LDKCResult_OutPointDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_OutPointDecodeErrorZ)); return res; }
5159         ~CResult_OutPointDecodeErrorZ() { CResult_OutPointDecodeErrorZ_free(self); }
5160         CResult_OutPointDecodeErrorZ& operator=(CResult_OutPointDecodeErrorZ&& o) { CResult_OutPointDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_OutPointDecodeErrorZ)); return *this; }
5161         LDKCResult_OutPointDecodeErrorZ* operator &() { return &self; }
5162         LDKCResult_OutPointDecodeErrorZ* operator ->() { return &self; }
5163         const LDKCResult_OutPointDecodeErrorZ* operator &() const { return &self; }
5164         const LDKCResult_OutPointDecodeErrorZ* operator ->() const { return &self; }
5165 };
5166 class CVec_ChannelDetailsZ {
5167 private:
5168         LDKCVec_ChannelDetailsZ self;
5169 public:
5170         CVec_ChannelDetailsZ(const CVec_ChannelDetailsZ&) = delete;
5171         CVec_ChannelDetailsZ(CVec_ChannelDetailsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); }
5172         CVec_ChannelDetailsZ(LDKCVec_ChannelDetailsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_ChannelDetailsZ)); }
5173         operator LDKCVec_ChannelDetailsZ() && { LDKCVec_ChannelDetailsZ res = self; memset(&self, 0, sizeof(LDKCVec_ChannelDetailsZ)); return res; }
5174         ~CVec_ChannelDetailsZ() { CVec_ChannelDetailsZ_free(self); }
5175         CVec_ChannelDetailsZ& operator=(CVec_ChannelDetailsZ&& o) { CVec_ChannelDetailsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_ChannelDetailsZ)); return *this; }
5176         LDKCVec_ChannelDetailsZ* operator &() { return &self; }
5177         LDKCVec_ChannelDetailsZ* operator ->() { return &self; }
5178         const LDKCVec_ChannelDetailsZ* operator &() const { return &self; }
5179         const LDKCVec_ChannelDetailsZ* operator ->() const { return &self; }
5180 };
5181 class CResult_SignDecodeErrorZ {
5182 private:
5183         LDKCResult_SignDecodeErrorZ self;
5184 public:
5185         CResult_SignDecodeErrorZ(const CResult_SignDecodeErrorZ&) = delete;
5186         CResult_SignDecodeErrorZ(CResult_SignDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); }
5187         CResult_SignDecodeErrorZ(LDKCResult_SignDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); }
5188         operator LDKCResult_SignDecodeErrorZ() && { LDKCResult_SignDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SignDecodeErrorZ)); return res; }
5189         ~CResult_SignDecodeErrorZ() { CResult_SignDecodeErrorZ_free(self); }
5190         CResult_SignDecodeErrorZ& operator=(CResult_SignDecodeErrorZ&& o) { CResult_SignDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SignDecodeErrorZ)); return *this; }
5191         LDKCResult_SignDecodeErrorZ* operator &() { return &self; }
5192         LDKCResult_SignDecodeErrorZ* operator ->() { return &self; }
5193         const LDKCResult_SignDecodeErrorZ* operator &() const { return &self; }
5194         const LDKCResult_SignDecodeErrorZ* operator ->() const { return &self; }
5195 };
5196 class CVec_MessageSendEventZ {
5197 private:
5198         LDKCVec_MessageSendEventZ self;
5199 public:
5200         CVec_MessageSendEventZ(const CVec_MessageSendEventZ&) = delete;
5201         CVec_MessageSendEventZ(CVec_MessageSendEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MessageSendEventZ)); }
5202         CVec_MessageSendEventZ(LDKCVec_MessageSendEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MessageSendEventZ)); }
5203         operator LDKCVec_MessageSendEventZ() && { LDKCVec_MessageSendEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MessageSendEventZ)); return res; }
5204         ~CVec_MessageSendEventZ() { CVec_MessageSendEventZ_free(self); }
5205         CVec_MessageSendEventZ& operator=(CVec_MessageSendEventZ&& o) { CVec_MessageSendEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MessageSendEventZ)); return *this; }
5206         LDKCVec_MessageSendEventZ* operator &() { return &self; }
5207         LDKCVec_MessageSendEventZ* operator ->() { return &self; }
5208         const LDKCVec_MessageSendEventZ* operator &() const { return &self; }
5209         const LDKCVec_MessageSendEventZ* operator ->() const { return &self; }
5210 };
5211 class C2Tuple_OutPointScriptZ {
5212 private:
5213         LDKC2Tuple_OutPointScriptZ self;
5214 public:
5215         C2Tuple_OutPointScriptZ(const C2Tuple_OutPointScriptZ&) = delete;
5216         C2Tuple_OutPointScriptZ(C2Tuple_OutPointScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); }
5217         C2Tuple_OutPointScriptZ(LDKC2Tuple_OutPointScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); }
5218         operator LDKC2Tuple_OutPointScriptZ() && { LDKC2Tuple_OutPointScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_OutPointScriptZ)); return res; }
5219         ~C2Tuple_OutPointScriptZ() { C2Tuple_OutPointScriptZ_free(self); }
5220         C2Tuple_OutPointScriptZ& operator=(C2Tuple_OutPointScriptZ&& o) { C2Tuple_OutPointScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_OutPointScriptZ)); return *this; }
5221         LDKC2Tuple_OutPointScriptZ* operator &() { return &self; }
5222         LDKC2Tuple_OutPointScriptZ* operator ->() { return &self; }
5223         const LDKC2Tuple_OutPointScriptZ* operator &() const { return &self; }
5224         const LDKC2Tuple_OutPointScriptZ* operator ->() const { return &self; }
5225 };
5226 class CResult_RouteHintHopDecodeErrorZ {
5227 private:
5228         LDKCResult_RouteHintHopDecodeErrorZ self;
5229 public:
5230         CResult_RouteHintHopDecodeErrorZ(const CResult_RouteHintHopDecodeErrorZ&) = delete;
5231         CResult_RouteHintHopDecodeErrorZ(CResult_RouteHintHopDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); }
5232         CResult_RouteHintHopDecodeErrorZ(LDKCResult_RouteHintHopDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); }
5233         operator LDKCResult_RouteHintHopDecodeErrorZ() && { LDKCResult_RouteHintHopDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteHintHopDecodeErrorZ)); return res; }
5234         ~CResult_RouteHintHopDecodeErrorZ() { CResult_RouteHintHopDecodeErrorZ_free(self); }
5235         CResult_RouteHintHopDecodeErrorZ& operator=(CResult_RouteHintHopDecodeErrorZ&& o) { CResult_RouteHintHopDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteHintHopDecodeErrorZ)); return *this; }
5236         LDKCResult_RouteHintHopDecodeErrorZ* operator &() { return &self; }
5237         LDKCResult_RouteHintHopDecodeErrorZ* operator ->() { return &self; }
5238         const LDKCResult_RouteHintHopDecodeErrorZ* operator &() const { return &self; }
5239         const LDKCResult_RouteHintHopDecodeErrorZ* operator ->() const { return &self; }
5240 };
5241 class CResult_C2Tuple_SignatureSignatureZNoneZ {
5242 private:
5243         LDKCResult_C2Tuple_SignatureSignatureZNoneZ self;
5244 public:
5245         CResult_C2Tuple_SignatureSignatureZNoneZ(const CResult_C2Tuple_SignatureSignatureZNoneZ&) = delete;
5246         CResult_C2Tuple_SignatureSignatureZNoneZ(CResult_C2Tuple_SignatureSignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureSignatureZNoneZ)); }
5247         CResult_C2Tuple_SignatureSignatureZNoneZ(LDKCResult_C2Tuple_SignatureSignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); }
5248         operator LDKCResult_C2Tuple_SignatureSignatureZNoneZ() && { LDKCResult_C2Tuple_SignatureSignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureSignatureZNoneZ)); return res; }
5249         ~CResult_C2Tuple_SignatureSignatureZNoneZ() { CResult_C2Tuple_SignatureSignatureZNoneZ_free(self); }
5250         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; }
5251         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() { return &self; }
5252         LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() { return &self; }
5253         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator &() const { return &self; }
5254         const LDKCResult_C2Tuple_SignatureSignatureZNoneZ* operator ->() const { return &self; }
5255 };
5256 class CVec_NodeAnnouncementZ {
5257 private:
5258         LDKCVec_NodeAnnouncementZ self;
5259 public:
5260         CVec_NodeAnnouncementZ(const CVec_NodeAnnouncementZ&) = delete;
5261         CVec_NodeAnnouncementZ(CVec_NodeAnnouncementZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); }
5262         CVec_NodeAnnouncementZ(LDKCVec_NodeAnnouncementZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); }
5263         operator LDKCVec_NodeAnnouncementZ() && { LDKCVec_NodeAnnouncementZ res = self; memset(&self, 0, sizeof(LDKCVec_NodeAnnouncementZ)); return res; }
5264         ~CVec_NodeAnnouncementZ() { CVec_NodeAnnouncementZ_free(self); }
5265         CVec_NodeAnnouncementZ& operator=(CVec_NodeAnnouncementZ&& o) { CVec_NodeAnnouncementZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NodeAnnouncementZ)); return *this; }
5266         LDKCVec_NodeAnnouncementZ* operator &() { return &self; }
5267         LDKCVec_NodeAnnouncementZ* operator ->() { return &self; }
5268         const LDKCVec_NodeAnnouncementZ* operator &() const { return &self; }
5269         const LDKCVec_NodeAnnouncementZ* operator ->() const { return &self; }
5270 };
5271 class CResult_UpdateFailMalformedHTLCDecodeErrorZ {
5272 private:
5273         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ self;
5274 public:
5275         CResult_UpdateFailMalformedHTLCDecodeErrorZ(const CResult_UpdateFailMalformedHTLCDecodeErrorZ&) = delete;
5276         CResult_UpdateFailMalformedHTLCDecodeErrorZ(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
5277         CResult_UpdateFailMalformedHTLCDecodeErrorZ(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); }
5278         operator LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ() && { LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ)); return res; }
5279         ~CResult_UpdateFailMalformedHTLCDecodeErrorZ() { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); }
5280         CResult_UpdateFailMalformedHTLCDecodeErrorZ& operator=(CResult_UpdateFailMalformedHTLCDecodeErrorZ&& o) { CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailMalformedHTLCDecodeErrorZ)); return *this; }
5281         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() { return &self; }
5282         LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() { return &self; }
5283         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator &() const { return &self; }
5284         const LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* operator ->() const { return &self; }
5285 };
5286 class CResult_UnsignedChannelAnnouncementDecodeErrorZ {
5287 private:
5288         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ self;
5289 public:
5290         CResult_UnsignedChannelAnnouncementDecodeErrorZ(const CResult_UnsignedChannelAnnouncementDecodeErrorZ&) = delete;
5291         CResult_UnsignedChannelAnnouncementDecodeErrorZ(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5292         CResult_UnsignedChannelAnnouncementDecodeErrorZ(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); }
5293         operator LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ() && { LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ)); return res; }
5294         ~CResult_UnsignedChannelAnnouncementDecodeErrorZ() { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); }
5295         CResult_UnsignedChannelAnnouncementDecodeErrorZ& operator=(CResult_UnsignedChannelAnnouncementDecodeErrorZ&& o) { CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelAnnouncementDecodeErrorZ)); return *this; }
5296         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() { return &self; }
5297         LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() { return &self; }
5298         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator &() const { return &self; }
5299         const LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* operator ->() const { return &self; }
5300 };
5301 class CVec_TxidZ {
5302 private:
5303         LDKCVec_TxidZ self;
5304 public:
5305         CVec_TxidZ(const CVec_TxidZ&) = delete;
5306         CVec_TxidZ(CVec_TxidZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxidZ)); }
5307         CVec_TxidZ(LDKCVec_TxidZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxidZ)); }
5308         operator LDKCVec_TxidZ() && { LDKCVec_TxidZ res = self; memset(&self, 0, sizeof(LDKCVec_TxidZ)); return res; }
5309         ~CVec_TxidZ() { CVec_TxidZ_free(self); }
5310         CVec_TxidZ& operator=(CVec_TxidZ&& o) { CVec_TxidZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxidZ)); return *this; }
5311         LDKCVec_TxidZ* operator &() { return &self; }
5312         LDKCVec_TxidZ* operator ->() { return &self; }
5313         const LDKCVec_TxidZ* operator &() const { return &self; }
5314         const LDKCVec_TxidZ* operator ->() const { return &self; }
5315 };
5316 class COption_AccessZ {
5317 private:
5318         LDKCOption_AccessZ self;
5319 public:
5320         COption_AccessZ(const COption_AccessZ&) = delete;
5321         COption_AccessZ(COption_AccessZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_AccessZ)); }
5322         COption_AccessZ(LDKCOption_AccessZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_AccessZ)); }
5323         operator LDKCOption_AccessZ() && { LDKCOption_AccessZ res = self; memset(&self, 0, sizeof(LDKCOption_AccessZ)); return res; }
5324         ~COption_AccessZ() { COption_AccessZ_free(self); }
5325         COption_AccessZ& operator=(COption_AccessZ&& o) { COption_AccessZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_AccessZ)); return *this; }
5326         LDKCOption_AccessZ* operator &() { return &self; }
5327         LDKCOption_AccessZ* operator ->() { return &self; }
5328         const LDKCOption_AccessZ* operator &() const { return &self; }
5329         const LDKCOption_AccessZ* operator ->() const { return &self; }
5330 };
5331 class CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
5332 private:
5333         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ self;
5334 public:
5335         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(const CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&) = delete;
5336         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
5337         CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); }
5338         operator LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() && { LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ)); return res; }
5339         ~CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ() { CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(self); }
5340         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; }
5341         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() { return &self; }
5342         LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() { return &self; }
5343         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator &() const { return &self; }
5344         const LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* operator ->() const { return &self; }
5345 };
5346 class CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
5347 private:
5348         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ self;
5349 public:
5350         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&) = delete;
5351         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5352         CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); }
5353         operator LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ)); return res; }
5354         ~CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(self); }
5355         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; }
5356         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() { return &self; }
5357         LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() { return &self; }
5358         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator &() const { return &self; }
5359         const LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* operator ->() const { return &self; }
5360 };
5361 class CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
5362 private:
5363         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ self;
5364 public:
5365         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(const CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&) = delete;
5366         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5367         CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); }
5368         operator LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() && { LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ res = self; memset(&self, 0, sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ)); return res; }
5369         ~CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ() { CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(self); }
5370         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; }
5371         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() { return &self; }
5372         LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() { return &self; }
5373         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator &() const { return &self; }
5374         const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ* operator ->() const { return &self; }
5375 };
5376 class CResult_CVec_CVec_u8ZZNoneZ {
5377 private:
5378         LDKCResult_CVec_CVec_u8ZZNoneZ self;
5379 public:
5380         CResult_CVec_CVec_u8ZZNoneZ(const CResult_CVec_CVec_u8ZZNoneZ&) = delete;
5381         CResult_CVec_CVec_u8ZZNoneZ(CResult_CVec_CVec_u8ZZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_CVec_u8ZZNoneZ)); }
5382         CResult_CVec_CVec_u8ZZNoneZ(LDKCResult_CVec_CVec_u8ZZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); }
5383         operator LDKCResult_CVec_CVec_u8ZZNoneZ() && { LDKCResult_CVec_CVec_u8ZZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ)); return res; }
5384         ~CResult_CVec_CVec_u8ZZNoneZ() { CResult_CVec_CVec_u8ZZNoneZ_free(self); }
5385         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; }
5386         LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() { return &self; }
5387         LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() { return &self; }
5388         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator &() const { return &self; }
5389         const LDKCResult_CVec_CVec_u8ZZNoneZ* operator ->() const { return &self; }
5390 };
5391 class C2Tuple_SignatureSignatureZ {
5392 private:
5393         LDKC2Tuple_SignatureSignatureZ self;
5394 public:
5395         C2Tuple_SignatureSignatureZ(const C2Tuple_SignatureSignatureZ&) = delete;
5396         C2Tuple_SignatureSignatureZ(C2Tuple_SignatureSignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); }
5397         C2Tuple_SignatureSignatureZ(LDKC2Tuple_SignatureSignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); }
5398         operator LDKC2Tuple_SignatureSignatureZ() && { LDKC2Tuple_SignatureSignatureZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_SignatureSignatureZ)); return res; }
5399         ~C2Tuple_SignatureSignatureZ() { C2Tuple_SignatureSignatureZ_free(self); }
5400         C2Tuple_SignatureSignatureZ& operator=(C2Tuple_SignatureSignatureZ&& o) { C2Tuple_SignatureSignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_SignatureSignatureZ)); return *this; }
5401         LDKC2Tuple_SignatureSignatureZ* operator &() { return &self; }
5402         LDKC2Tuple_SignatureSignatureZ* operator ->() { return &self; }
5403         const LDKC2Tuple_SignatureSignatureZ* operator &() const { return &self; }
5404         const LDKC2Tuple_SignatureSignatureZ* operator ->() const { return &self; }
5405 };
5406 class C2Tuple_PaymentHashPaymentSecretZ {
5407 private:
5408         LDKC2Tuple_PaymentHashPaymentSecretZ self;
5409 public:
5410         C2Tuple_PaymentHashPaymentSecretZ(const C2Tuple_PaymentHashPaymentSecretZ&) = delete;
5411         C2Tuple_PaymentHashPaymentSecretZ(C2Tuple_PaymentHashPaymentSecretZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); }
5412         C2Tuple_PaymentHashPaymentSecretZ(LDKC2Tuple_PaymentHashPaymentSecretZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); }
5413         operator LDKC2Tuple_PaymentHashPaymentSecretZ() && { LDKC2Tuple_PaymentHashPaymentSecretZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ)); return res; }
5414         ~C2Tuple_PaymentHashPaymentSecretZ() { C2Tuple_PaymentHashPaymentSecretZ_free(self); }
5415         C2Tuple_PaymentHashPaymentSecretZ& operator=(C2Tuple_PaymentHashPaymentSecretZ&& o) { C2Tuple_PaymentHashPaymentSecretZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentSecretZ)); return *this; }
5416         LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() { return &self; }
5417         LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() { return &self; }
5418         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator &() const { return &self; }
5419         const LDKC2Tuple_PaymentHashPaymentSecretZ* operator ->() const { return &self; }
5420 };
5421 class C2Tuple_BlockHashChannelManagerZ {
5422 private:
5423         LDKC2Tuple_BlockHashChannelManagerZ self;
5424 public:
5425         C2Tuple_BlockHashChannelManagerZ(const C2Tuple_BlockHashChannelManagerZ&) = delete;
5426         C2Tuple_BlockHashChannelManagerZ(C2Tuple_BlockHashChannelManagerZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); }
5427         C2Tuple_BlockHashChannelManagerZ(LDKC2Tuple_BlockHashChannelManagerZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); }
5428         operator LDKC2Tuple_BlockHashChannelManagerZ() && { LDKC2Tuple_BlockHashChannelManagerZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_BlockHashChannelManagerZ)); return res; }
5429         ~C2Tuple_BlockHashChannelManagerZ() { C2Tuple_BlockHashChannelManagerZ_free(self); }
5430         C2Tuple_BlockHashChannelManagerZ& operator=(C2Tuple_BlockHashChannelManagerZ&& o) { C2Tuple_BlockHashChannelManagerZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_BlockHashChannelManagerZ)); return *this; }
5431         LDKC2Tuple_BlockHashChannelManagerZ* operator &() { return &self; }
5432         LDKC2Tuple_BlockHashChannelManagerZ* operator ->() { return &self; }
5433         const LDKC2Tuple_BlockHashChannelManagerZ* operator &() const { return &self; }
5434         const LDKC2Tuple_BlockHashChannelManagerZ* operator ->() const { return &self; }
5435 };
5436 class CResult_ChannelTransactionParametersDecodeErrorZ {
5437 private:
5438         LDKCResult_ChannelTransactionParametersDecodeErrorZ self;
5439 public:
5440         CResult_ChannelTransactionParametersDecodeErrorZ(const CResult_ChannelTransactionParametersDecodeErrorZ&) = delete;
5441         CResult_ChannelTransactionParametersDecodeErrorZ(CResult_ChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); }
5442         CResult_ChannelTransactionParametersDecodeErrorZ(LDKCResult_ChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); }
5443         operator LDKCResult_ChannelTransactionParametersDecodeErrorZ() && { LDKCResult_ChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ)); return res; }
5444         ~CResult_ChannelTransactionParametersDecodeErrorZ() { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); }
5445         CResult_ChannelTransactionParametersDecodeErrorZ& operator=(CResult_ChannelTransactionParametersDecodeErrorZ&& o) { CResult_ChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTransactionParametersDecodeErrorZ)); return *this; }
5446         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
5447         LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
5448         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
5449         const LDKCResult_ChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
5450 };
5451 class CResult_AcceptChannelDecodeErrorZ {
5452 private:
5453         LDKCResult_AcceptChannelDecodeErrorZ self;
5454 public:
5455         CResult_AcceptChannelDecodeErrorZ(const CResult_AcceptChannelDecodeErrorZ&) = delete;
5456         CResult_AcceptChannelDecodeErrorZ(CResult_AcceptChannelDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); }
5457         CResult_AcceptChannelDecodeErrorZ(LDKCResult_AcceptChannelDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); }
5458         operator LDKCResult_AcceptChannelDecodeErrorZ() && { LDKCResult_AcceptChannelDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AcceptChannelDecodeErrorZ)); return res; }
5459         ~CResult_AcceptChannelDecodeErrorZ() { CResult_AcceptChannelDecodeErrorZ_free(self); }
5460         CResult_AcceptChannelDecodeErrorZ& operator=(CResult_AcceptChannelDecodeErrorZ&& o) { CResult_AcceptChannelDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AcceptChannelDecodeErrorZ)); return *this; }
5461         LDKCResult_AcceptChannelDecodeErrorZ* operator &() { return &self; }
5462         LDKCResult_AcceptChannelDecodeErrorZ* operator ->() { return &self; }
5463         const LDKCResult_AcceptChannelDecodeErrorZ* operator &() const { return &self; }
5464         const LDKCResult_AcceptChannelDecodeErrorZ* operator ->() const { return &self; }
5465 };
5466 class CVec_SignatureZ {
5467 private:
5468         LDKCVec_SignatureZ self;
5469 public:
5470         CVec_SignatureZ(const CVec_SignatureZ&) = delete;
5471         CVec_SignatureZ(CVec_SignatureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_SignatureZ)); }
5472         CVec_SignatureZ(LDKCVec_SignatureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_SignatureZ)); }
5473         operator LDKCVec_SignatureZ() && { LDKCVec_SignatureZ res = self; memset(&self, 0, sizeof(LDKCVec_SignatureZ)); return res; }
5474         ~CVec_SignatureZ() { CVec_SignatureZ_free(self); }
5475         CVec_SignatureZ& operator=(CVec_SignatureZ&& o) { CVec_SignatureZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_SignatureZ)); return *this; }
5476         LDKCVec_SignatureZ* operator &() { return &self; }
5477         LDKCVec_SignatureZ* operator ->() { return &self; }
5478         const LDKCVec_SignatureZ* operator &() const { return &self; }
5479         const LDKCVec_SignatureZ* operator ->() const { return &self; }
5480 };
5481 class CVec_u64Z {
5482 private:
5483         LDKCVec_u64Z self;
5484 public:
5485         CVec_u64Z(const CVec_u64Z&) = delete;
5486         CVec_u64Z(CVec_u64Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u64Z)); }
5487         CVec_u64Z(LDKCVec_u64Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u64Z)); }
5488         operator LDKCVec_u64Z() && { LDKCVec_u64Z res = self; memset(&self, 0, sizeof(LDKCVec_u64Z)); return res; }
5489         ~CVec_u64Z() { CVec_u64Z_free(self); }
5490         CVec_u64Z& operator=(CVec_u64Z&& o) { CVec_u64Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u64Z)); return *this; }
5491         LDKCVec_u64Z* operator &() { return &self; }
5492         LDKCVec_u64Z* operator ->() { return &self; }
5493         const LDKCVec_u64Z* operator &() const { return &self; }
5494         const LDKCVec_u64Z* operator ->() const { return &self; }
5495 };
5496 class CResult_ScorerDecodeErrorZ {
5497 private:
5498         LDKCResult_ScorerDecodeErrorZ self;
5499 public:
5500         CResult_ScorerDecodeErrorZ(const CResult_ScorerDecodeErrorZ&) = delete;
5501         CResult_ScorerDecodeErrorZ(CResult_ScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ScorerDecodeErrorZ)); }
5502         CResult_ScorerDecodeErrorZ(LDKCResult_ScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ScorerDecodeErrorZ)); }
5503         operator LDKCResult_ScorerDecodeErrorZ() && { LDKCResult_ScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ScorerDecodeErrorZ)); return res; }
5504         ~CResult_ScorerDecodeErrorZ() { CResult_ScorerDecodeErrorZ_free(self); }
5505         CResult_ScorerDecodeErrorZ& operator=(CResult_ScorerDecodeErrorZ&& o) { CResult_ScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ScorerDecodeErrorZ)); return *this; }
5506         LDKCResult_ScorerDecodeErrorZ* operator &() { return &self; }
5507         LDKCResult_ScorerDecodeErrorZ* operator ->() { return &self; }
5508         const LDKCResult_ScorerDecodeErrorZ* operator &() const { return &self; }
5509         const LDKCResult_ScorerDecodeErrorZ* operator ->() const { return &self; }
5510 };
5511 class CResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
5512 private:
5513         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ self;
5514 public:
5515         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(const CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&) = delete;
5516         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5517         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); }
5518         operator LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ() && { LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return res; }
5519         ~CResult_DelayedPaymentOutputDescriptorDecodeErrorZ() { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); }
5520         CResult_DelayedPaymentOutputDescriptorDecodeErrorZ& operator=(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ&& o) { CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DelayedPaymentOutputDescriptorDecodeErrorZ)); return *this; }
5521         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() { return &self; }
5522         LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
5523         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
5524         const LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
5525 };
5526 class C2Tuple_PaymentHashPaymentIdZ {
5527 private:
5528         LDKC2Tuple_PaymentHashPaymentIdZ self;
5529 public:
5530         C2Tuple_PaymentHashPaymentIdZ(const C2Tuple_PaymentHashPaymentIdZ&) = delete;
5531         C2Tuple_PaymentHashPaymentIdZ(C2Tuple_PaymentHashPaymentIdZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); }
5532         C2Tuple_PaymentHashPaymentIdZ(LDKC2Tuple_PaymentHashPaymentIdZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); }
5533         operator LDKC2Tuple_PaymentHashPaymentIdZ() && { LDKC2Tuple_PaymentHashPaymentIdZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_PaymentHashPaymentIdZ)); return res; }
5534         ~C2Tuple_PaymentHashPaymentIdZ() { C2Tuple_PaymentHashPaymentIdZ_free(self); }
5535         C2Tuple_PaymentHashPaymentIdZ& operator=(C2Tuple_PaymentHashPaymentIdZ&& o) { C2Tuple_PaymentHashPaymentIdZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_PaymentHashPaymentIdZ)); return *this; }
5536         LDKC2Tuple_PaymentHashPaymentIdZ* operator &() { return &self; }
5537         LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() { return &self; }
5538         const LDKC2Tuple_PaymentHashPaymentIdZ* operator &() const { return &self; }
5539         const LDKC2Tuple_PaymentHashPaymentIdZ* operator ->() const { return &self; }
5540 };
5541 class CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
5542 private:
5543         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ self;
5544 public:
5545         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(const CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&) = delete;
5546         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5547         CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); }
5548         operator LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() && { LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ)); return res; }
5549         ~CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ() { CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(self); }
5550         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; }
5551         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() { return &self; }
5552         LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() { return &self; }
5553         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator &() const { return &self; }
5554         const LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* operator ->() const { return &self; }
5555 };
5556 class CResult_NoneErrorZ {
5557 private:
5558         LDKCResult_NoneErrorZ self;
5559 public:
5560         CResult_NoneErrorZ(const CResult_NoneErrorZ&) = delete;
5561         CResult_NoneErrorZ(CResult_NoneErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneErrorZ)); }
5562         CResult_NoneErrorZ(LDKCResult_NoneErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneErrorZ)); }
5563         operator LDKCResult_NoneErrorZ() && { LDKCResult_NoneErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneErrorZ)); return res; }
5564         ~CResult_NoneErrorZ() { CResult_NoneErrorZ_free(self); }
5565         CResult_NoneErrorZ& operator=(CResult_NoneErrorZ&& o) { CResult_NoneErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneErrorZ)); return *this; }
5566         LDKCResult_NoneErrorZ* operator &() { return &self; }
5567         LDKCResult_NoneErrorZ* operator ->() { return &self; }
5568         const LDKCResult_NoneErrorZ* operator &() const { return &self; }
5569         const LDKCResult_NoneErrorZ* operator ->() const { return &self; }
5570 };
5571 class CResult_StringErrorZ {
5572 private:
5573         LDKCResult_StringErrorZ self;
5574 public:
5575         CResult_StringErrorZ(const CResult_StringErrorZ&) = delete;
5576         CResult_StringErrorZ(CResult_StringErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_StringErrorZ)); }
5577         CResult_StringErrorZ(LDKCResult_StringErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_StringErrorZ)); }
5578         operator LDKCResult_StringErrorZ() && { LDKCResult_StringErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_StringErrorZ)); return res; }
5579         ~CResult_StringErrorZ() { CResult_StringErrorZ_free(self); }
5580         CResult_StringErrorZ& operator=(CResult_StringErrorZ&& o) { CResult_StringErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_StringErrorZ)); return *this; }
5581         LDKCResult_StringErrorZ* operator &() { return &self; }
5582         LDKCResult_StringErrorZ* operator ->() { return &self; }
5583         const LDKCResult_StringErrorZ* operator &() const { return &self; }
5584         const LDKCResult_StringErrorZ* operator ->() const { return &self; }
5585 };
5586 class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
5587 private:
5588         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ self;
5589 public:
5590         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(const C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&) = delete;
5591         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
5592         C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); }
5593         operator LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() && { LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ)); return res; }
5594         ~C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ() { C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(self); }
5595         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; }
5596         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() { return &self; }
5597         LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() { return &self; }
5598         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator &() const { return &self; }
5599         const LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* operator ->() const { return &self; }
5600 };
5601 class CResult_PongDecodeErrorZ {
5602 private:
5603         LDKCResult_PongDecodeErrorZ self;
5604 public:
5605         CResult_PongDecodeErrorZ(const CResult_PongDecodeErrorZ&) = delete;
5606         CResult_PongDecodeErrorZ(CResult_PongDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); }
5607         CResult_PongDecodeErrorZ(LDKCResult_PongDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); }
5608         operator LDKCResult_PongDecodeErrorZ() && { LDKCResult_PongDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PongDecodeErrorZ)); return res; }
5609         ~CResult_PongDecodeErrorZ() { CResult_PongDecodeErrorZ_free(self); }
5610         CResult_PongDecodeErrorZ& operator=(CResult_PongDecodeErrorZ&& o) { CResult_PongDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PongDecodeErrorZ)); return *this; }
5611         LDKCResult_PongDecodeErrorZ* operator &() { return &self; }
5612         LDKCResult_PongDecodeErrorZ* operator ->() { return &self; }
5613         const LDKCResult_PongDecodeErrorZ* operator &() const { return &self; }
5614         const LDKCResult_PongDecodeErrorZ* operator ->() const { return &self; }
5615 };
5616 class CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
5617 private:
5618         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ self;
5619 public:
5620         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(const CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&) = delete;
5621         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
5622         CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); }
5623         operator LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() && { LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ)); return res; }
5624         ~CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ() { CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(self); }
5625         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; }
5626         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() { return &self; }
5627         LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() { return &self; }
5628         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator &() const { return &self; }
5629         const LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* operator ->() const { return &self; }
5630 };
5631 class COption_EventZ {
5632 private:
5633         LDKCOption_EventZ self;
5634 public:
5635         COption_EventZ(const COption_EventZ&) = delete;
5636         COption_EventZ(COption_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_EventZ)); }
5637         COption_EventZ(LDKCOption_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_EventZ)); }
5638         operator LDKCOption_EventZ() && { LDKCOption_EventZ res = self; memset(&self, 0, sizeof(LDKCOption_EventZ)); return res; }
5639         ~COption_EventZ() { COption_EventZ_free(self); }
5640         COption_EventZ& operator=(COption_EventZ&& o) { COption_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_EventZ)); return *this; }
5641         LDKCOption_EventZ* operator &() { return &self; }
5642         LDKCOption_EventZ* operator ->() { return &self; }
5643         const LDKCOption_EventZ* operator &() const { return &self; }
5644         const LDKCOption_EventZ* operator ->() const { return &self; }
5645 };
5646 class CResult_ChannelTypeFeaturesDecodeErrorZ {
5647 private:
5648         LDKCResult_ChannelTypeFeaturesDecodeErrorZ self;
5649 public:
5650         CResult_ChannelTypeFeaturesDecodeErrorZ(const CResult_ChannelTypeFeaturesDecodeErrorZ&) = delete;
5651         CResult_ChannelTypeFeaturesDecodeErrorZ(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); }
5652         CResult_ChannelTypeFeaturesDecodeErrorZ(LDKCResult_ChannelTypeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); }
5653         operator LDKCResult_ChannelTypeFeaturesDecodeErrorZ() && { LDKCResult_ChannelTypeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ)); return res; }
5654         ~CResult_ChannelTypeFeaturesDecodeErrorZ() { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); }
5655         CResult_ChannelTypeFeaturesDecodeErrorZ& operator=(CResult_ChannelTypeFeaturesDecodeErrorZ&& o) { CResult_ChannelTypeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelTypeFeaturesDecodeErrorZ)); return *this; }
5656         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() { return &self; }
5657         LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() { return &self; }
5658         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator &() const { return &self; }
5659         const LDKCResult_ChannelTypeFeaturesDecodeErrorZ* operator ->() const { return &self; }
5660 };
5661 class CVec_RouteHintZ {
5662 private:
5663         LDKCVec_RouteHintZ self;
5664 public:
5665         CVec_RouteHintZ(const CVec_RouteHintZ&) = delete;
5666         CVec_RouteHintZ(CVec_RouteHintZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_RouteHintZ)); }
5667         CVec_RouteHintZ(LDKCVec_RouteHintZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_RouteHintZ)); }
5668         operator LDKCVec_RouteHintZ() && { LDKCVec_RouteHintZ res = self; memset(&self, 0, sizeof(LDKCVec_RouteHintZ)); return res; }
5669         ~CVec_RouteHintZ() { CVec_RouteHintZ_free(self); }
5670         CVec_RouteHintZ& operator=(CVec_RouteHintZ&& o) { CVec_RouteHintZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_RouteHintZ)); return *this; }
5671         LDKCVec_RouteHintZ* operator &() { return &self; }
5672         LDKCVec_RouteHintZ* operator ->() { return &self; }
5673         const LDKCVec_RouteHintZ* operator &() const { return &self; }
5674         const LDKCVec_RouteHintZ* operator ->() const { return &self; }
5675 };
5676 class COption_u16Z {
5677 private:
5678         LDKCOption_u16Z self;
5679 public:
5680         COption_u16Z(const COption_u16Z&) = delete;
5681         COption_u16Z(COption_u16Z&& o) : self(o.self) { memset(&o, 0, sizeof(COption_u16Z)); }
5682         COption_u16Z(LDKCOption_u16Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_u16Z)); }
5683         operator LDKCOption_u16Z() && { LDKCOption_u16Z res = self; memset(&self, 0, sizeof(LDKCOption_u16Z)); return res; }
5684         ~COption_u16Z() { COption_u16Z_free(self); }
5685         COption_u16Z& operator=(COption_u16Z&& o) { COption_u16Z_free(self); self = o.self; memset(&o, 0, sizeof(COption_u16Z)); return *this; }
5686         LDKCOption_u16Z* operator &() { return &self; }
5687         LDKCOption_u16Z* operator ->() { return &self; }
5688         const LDKCOption_u16Z* operator &() const { return &self; }
5689         const LDKCOption_u16Z* operator ->() const { return &self; }
5690 };
5691 class CVec_CVec_RouteHopZZ {
5692 private:
5693         LDKCVec_CVec_RouteHopZZ self;
5694 public:
5695         CVec_CVec_RouteHopZZ(const CVec_CVec_RouteHopZZ&) = delete;
5696         CVec_CVec_RouteHopZZ(CVec_CVec_RouteHopZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_CVec_RouteHopZZ)); }
5697         CVec_CVec_RouteHopZZ(LDKCVec_CVec_RouteHopZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); }
5698         operator LDKCVec_CVec_RouteHopZZ() && { LDKCVec_CVec_RouteHopZZ res = self; memset(&self, 0, sizeof(LDKCVec_CVec_RouteHopZZ)); return res; }
5699         ~CVec_CVec_RouteHopZZ() { CVec_CVec_RouteHopZZ_free(self); }
5700         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; }
5701         LDKCVec_CVec_RouteHopZZ* operator &() { return &self; }
5702         LDKCVec_CVec_RouteHopZZ* operator ->() { return &self; }
5703         const LDKCVec_CVec_RouteHopZZ* operator &() const { return &self; }
5704         const LDKCVec_CVec_RouteHopZZ* operator ->() const { return &self; }
5705 };
5706 class CResult_TrustedCommitmentTransactionNoneZ {
5707 private:
5708         LDKCResult_TrustedCommitmentTransactionNoneZ self;
5709 public:
5710         CResult_TrustedCommitmentTransactionNoneZ(const CResult_TrustedCommitmentTransactionNoneZ&) = delete;
5711         CResult_TrustedCommitmentTransactionNoneZ(CResult_TrustedCommitmentTransactionNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); }
5712         CResult_TrustedCommitmentTransactionNoneZ(LDKCResult_TrustedCommitmentTransactionNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); }
5713         operator LDKCResult_TrustedCommitmentTransactionNoneZ() && { LDKCResult_TrustedCommitmentTransactionNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ)); return res; }
5714         ~CResult_TrustedCommitmentTransactionNoneZ() { CResult_TrustedCommitmentTransactionNoneZ_free(self); }
5715         CResult_TrustedCommitmentTransactionNoneZ& operator=(CResult_TrustedCommitmentTransactionNoneZ&& o) { CResult_TrustedCommitmentTransactionNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_TrustedCommitmentTransactionNoneZ)); return *this; }
5716         LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() { return &self; }
5717         LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() { return &self; }
5718         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator &() const { return &self; }
5719         const LDKCResult_TrustedCommitmentTransactionNoneZ* operator ->() const { return &self; }
5720 };
5721 class CResult_FixedPenaltyScorerDecodeErrorZ {
5722 private:
5723         LDKCResult_FixedPenaltyScorerDecodeErrorZ self;
5724 public:
5725         CResult_FixedPenaltyScorerDecodeErrorZ(const CResult_FixedPenaltyScorerDecodeErrorZ&) = delete;
5726         CResult_FixedPenaltyScorerDecodeErrorZ(CResult_FixedPenaltyScorerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); }
5727         CResult_FixedPenaltyScorerDecodeErrorZ(LDKCResult_FixedPenaltyScorerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); }
5728         operator LDKCResult_FixedPenaltyScorerDecodeErrorZ() && { LDKCResult_FixedPenaltyScorerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FixedPenaltyScorerDecodeErrorZ)); return res; }
5729         ~CResult_FixedPenaltyScorerDecodeErrorZ() { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); }
5730         CResult_FixedPenaltyScorerDecodeErrorZ& operator=(CResult_FixedPenaltyScorerDecodeErrorZ&& o) { CResult_FixedPenaltyScorerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FixedPenaltyScorerDecodeErrorZ)); return *this; }
5731         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() { return &self; }
5732         LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() { return &self; }
5733         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator &() const { return &self; }
5734         const LDKCResult_FixedPenaltyScorerDecodeErrorZ* operator ->() const { return &self; }
5735 };
5736 class CResult_NoneLightningErrorZ {
5737 private:
5738         LDKCResult_NoneLightningErrorZ self;
5739 public:
5740         CResult_NoneLightningErrorZ(const CResult_NoneLightningErrorZ&) = delete;
5741         CResult_NoneLightningErrorZ(CResult_NoneLightningErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); }
5742         CResult_NoneLightningErrorZ(LDKCResult_NoneLightningErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); }
5743         operator LDKCResult_NoneLightningErrorZ() && { LDKCResult_NoneLightningErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneLightningErrorZ)); return res; }
5744         ~CResult_NoneLightningErrorZ() { CResult_NoneLightningErrorZ_free(self); }
5745         CResult_NoneLightningErrorZ& operator=(CResult_NoneLightningErrorZ&& o) { CResult_NoneLightningErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneLightningErrorZ)); return *this; }
5746         LDKCResult_NoneLightningErrorZ* operator &() { return &self; }
5747         LDKCResult_NoneLightningErrorZ* operator ->() { return &self; }
5748         const LDKCResult_NoneLightningErrorZ* operator &() const { return &self; }
5749         const LDKCResult_NoneLightningErrorZ* operator ->() const { return &self; }
5750 };
5751 class CResult_NonePeerHandleErrorZ {
5752 private:
5753         LDKCResult_NonePeerHandleErrorZ self;
5754 public:
5755         CResult_NonePeerHandleErrorZ(const CResult_NonePeerHandleErrorZ&) = delete;
5756         CResult_NonePeerHandleErrorZ(CResult_NonePeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); }
5757         CResult_NonePeerHandleErrorZ(LDKCResult_NonePeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); }
5758         operator LDKCResult_NonePeerHandleErrorZ() && { LDKCResult_NonePeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NonePeerHandleErrorZ)); return res; }
5759         ~CResult_NonePeerHandleErrorZ() { CResult_NonePeerHandleErrorZ_free(self); }
5760         CResult_NonePeerHandleErrorZ& operator=(CResult_NonePeerHandleErrorZ&& o) { CResult_NonePeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NonePeerHandleErrorZ)); return *this; }
5761         LDKCResult_NonePeerHandleErrorZ* operator &() { return &self; }
5762         LDKCResult_NonePeerHandleErrorZ* operator ->() { return &self; }
5763         const LDKCResult_NonePeerHandleErrorZ* operator &() const { return &self; }
5764         const LDKCResult_NonePeerHandleErrorZ* operator ->() const { return &self; }
5765 };
5766 class CResult_COption_EventZDecodeErrorZ {
5767 private:
5768         LDKCResult_COption_EventZDecodeErrorZ self;
5769 public:
5770         CResult_COption_EventZDecodeErrorZ(const CResult_COption_EventZDecodeErrorZ&) = delete;
5771         CResult_COption_EventZDecodeErrorZ(CResult_COption_EventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_EventZDecodeErrorZ)); }
5772         CResult_COption_EventZDecodeErrorZ(LDKCResult_COption_EventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); }
5773         operator LDKCResult_COption_EventZDecodeErrorZ() && { LDKCResult_COption_EventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_EventZDecodeErrorZ)); return res; }
5774         ~CResult_COption_EventZDecodeErrorZ() { CResult_COption_EventZDecodeErrorZ_free(self); }
5775         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; }
5776         LDKCResult_COption_EventZDecodeErrorZ* operator &() { return &self; }
5777         LDKCResult_COption_EventZDecodeErrorZ* operator ->() { return &self; }
5778         const LDKCResult_COption_EventZDecodeErrorZ* operator &() const { return &self; }
5779         const LDKCResult_COption_EventZDecodeErrorZ* operator ->() const { return &self; }
5780 };
5781 class CResult_CVec_SignatureZNoneZ {
5782 private:
5783         LDKCResult_CVec_SignatureZNoneZ self;
5784 public:
5785         CResult_CVec_SignatureZNoneZ(const CResult_CVec_SignatureZNoneZ&) = delete;
5786         CResult_CVec_SignatureZNoneZ(CResult_CVec_SignatureZNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CVec_SignatureZNoneZ)); }
5787         CResult_CVec_SignatureZNoneZ(LDKCResult_CVec_SignatureZNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); }
5788         operator LDKCResult_CVec_SignatureZNoneZ() && { LDKCResult_CVec_SignatureZNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_CVec_SignatureZNoneZ)); return res; }
5789         ~CResult_CVec_SignatureZNoneZ() { CResult_CVec_SignatureZNoneZ_free(self); }
5790         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; }
5791         LDKCResult_CVec_SignatureZNoneZ* operator &() { return &self; }
5792         LDKCResult_CVec_SignatureZNoneZ* operator ->() { return &self; }
5793         const LDKCResult_CVec_SignatureZNoneZ* operator &() const { return &self; }
5794         const LDKCResult_CVec_SignatureZNoneZ* operator ->() const { return &self; }
5795 };
5796 class COption_CVec_NetAddressZZ {
5797 private:
5798         LDKCOption_CVec_NetAddressZZ self;
5799 public:
5800         COption_CVec_NetAddressZZ(const COption_CVec_NetAddressZZ&) = delete;
5801         COption_CVec_NetAddressZZ(COption_CVec_NetAddressZZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_CVec_NetAddressZZ)); }
5802         COption_CVec_NetAddressZZ(LDKCOption_CVec_NetAddressZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); }
5803         operator LDKCOption_CVec_NetAddressZZ() && { LDKCOption_CVec_NetAddressZZ res = self; memset(&self, 0, sizeof(LDKCOption_CVec_NetAddressZZ)); return res; }
5804         ~COption_CVec_NetAddressZZ() { COption_CVec_NetAddressZZ_free(self); }
5805         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; }
5806         LDKCOption_CVec_NetAddressZZ* operator &() { return &self; }
5807         LDKCOption_CVec_NetAddressZZ* operator ->() { return &self; }
5808         const LDKCOption_CVec_NetAddressZZ* operator &() const { return &self; }
5809         const LDKCOption_CVec_NetAddressZZ* operator ->() const { return &self; }
5810 };
5811 class CResult__u832APIErrorZ {
5812 private:
5813         LDKCResult__u832APIErrorZ self;
5814 public:
5815         CResult__u832APIErrorZ(const CResult__u832APIErrorZ&) = delete;
5816         CResult__u832APIErrorZ(CResult__u832APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult__u832APIErrorZ)); }
5817         CResult__u832APIErrorZ(LDKCResult__u832APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult__u832APIErrorZ)); }
5818         operator LDKCResult__u832APIErrorZ() && { LDKCResult__u832APIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult__u832APIErrorZ)); return res; }
5819         ~CResult__u832APIErrorZ() { CResult__u832APIErrorZ_free(self); }
5820         CResult__u832APIErrorZ& operator=(CResult__u832APIErrorZ&& o) { CResult__u832APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult__u832APIErrorZ)); return *this; }
5821         LDKCResult__u832APIErrorZ* operator &() { return &self; }
5822         LDKCResult__u832APIErrorZ* operator ->() { return &self; }
5823         const LDKCResult__u832APIErrorZ* operator &() const { return &self; }
5824         const LDKCResult__u832APIErrorZ* operator ->() const { return &self; }
5825 };
5826 class CResult_PaymentIdPaymentErrorZ {
5827 private:
5828         LDKCResult_PaymentIdPaymentErrorZ self;
5829 public:
5830         CResult_PaymentIdPaymentErrorZ(const CResult_PaymentIdPaymentErrorZ&) = delete;
5831         CResult_PaymentIdPaymentErrorZ(CResult_PaymentIdPaymentErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); }
5832         CResult_PaymentIdPaymentErrorZ(LDKCResult_PaymentIdPaymentErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); }
5833         operator LDKCResult_PaymentIdPaymentErrorZ() && { LDKCResult_PaymentIdPaymentErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentIdPaymentErrorZ)); return res; }
5834         ~CResult_PaymentIdPaymentErrorZ() { CResult_PaymentIdPaymentErrorZ_free(self); }
5835         CResult_PaymentIdPaymentErrorZ& operator=(CResult_PaymentIdPaymentErrorZ&& o) { CResult_PaymentIdPaymentErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentIdPaymentErrorZ)); return *this; }
5836         LDKCResult_PaymentIdPaymentErrorZ* operator &() { return &self; }
5837         LDKCResult_PaymentIdPaymentErrorZ* operator ->() { return &self; }
5838         const LDKCResult_PaymentIdPaymentErrorZ* operator &() const { return &self; }
5839         const LDKCResult_PaymentIdPaymentErrorZ* operator ->() const { return &self; }
5840 };
5841 class CResult_DescriptionCreationErrorZ {
5842 private:
5843         LDKCResult_DescriptionCreationErrorZ self;
5844 public:
5845         CResult_DescriptionCreationErrorZ(const CResult_DescriptionCreationErrorZ&) = delete;
5846         CResult_DescriptionCreationErrorZ(CResult_DescriptionCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); }
5847         CResult_DescriptionCreationErrorZ(LDKCResult_DescriptionCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); }
5848         operator LDKCResult_DescriptionCreationErrorZ() && { LDKCResult_DescriptionCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_DescriptionCreationErrorZ)); return res; }
5849         ~CResult_DescriptionCreationErrorZ() { CResult_DescriptionCreationErrorZ_free(self); }
5850         CResult_DescriptionCreationErrorZ& operator=(CResult_DescriptionCreationErrorZ&& o) { CResult_DescriptionCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_DescriptionCreationErrorZ)); return *this; }
5851         LDKCResult_DescriptionCreationErrorZ* operator &() { return &self; }
5852         LDKCResult_DescriptionCreationErrorZ* operator ->() { return &self; }
5853         const LDKCResult_DescriptionCreationErrorZ* operator &() const { return &self; }
5854         const LDKCResult_DescriptionCreationErrorZ* operator ->() const { return &self; }
5855 };
5856 class CResult_COption_MonitorEventZDecodeErrorZ {
5857 private:
5858         LDKCResult_COption_MonitorEventZDecodeErrorZ self;
5859 public:
5860         CResult_COption_MonitorEventZDecodeErrorZ(const CResult_COption_MonitorEventZDecodeErrorZ&) = delete;
5861         CResult_COption_MonitorEventZDecodeErrorZ(CResult_COption_MonitorEventZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_MonitorEventZDecodeErrorZ)); }
5862         CResult_COption_MonitorEventZDecodeErrorZ(LDKCResult_COption_MonitorEventZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); }
5863         operator LDKCResult_COption_MonitorEventZDecodeErrorZ() && { LDKCResult_COption_MonitorEventZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ)); return res; }
5864         ~CResult_COption_MonitorEventZDecodeErrorZ() { CResult_COption_MonitorEventZDecodeErrorZ_free(self); }
5865         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; }
5866         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() { return &self; }
5867         LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() { return &self; }
5868         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator &() const { return &self; }
5869         const LDKCResult_COption_MonitorEventZDecodeErrorZ* operator ->() const { return &self; }
5870 };
5871 class CResult_PayeePubKeyErrorZ {
5872 private:
5873         LDKCResult_PayeePubKeyErrorZ self;
5874 public:
5875         CResult_PayeePubKeyErrorZ(const CResult_PayeePubKeyErrorZ&) = delete;
5876         CResult_PayeePubKeyErrorZ(CResult_PayeePubKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); }
5877         CResult_PayeePubKeyErrorZ(LDKCResult_PayeePubKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); }
5878         operator LDKCResult_PayeePubKeyErrorZ() && { LDKCResult_PayeePubKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PayeePubKeyErrorZ)); return res; }
5879         ~CResult_PayeePubKeyErrorZ() { CResult_PayeePubKeyErrorZ_free(self); }
5880         CResult_PayeePubKeyErrorZ& operator=(CResult_PayeePubKeyErrorZ&& o) { CResult_PayeePubKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PayeePubKeyErrorZ)); return *this; }
5881         LDKCResult_PayeePubKeyErrorZ* operator &() { return &self; }
5882         LDKCResult_PayeePubKeyErrorZ* operator ->() { return &self; }
5883         const LDKCResult_PayeePubKeyErrorZ* operator &() const { return &self; }
5884         const LDKCResult_PayeePubKeyErrorZ* operator ->() const { return &self; }
5885 };
5886 class CVec_C2Tuple_PublicKeyTypeZZ {
5887 private:
5888         LDKCVec_C2Tuple_PublicKeyTypeZZ self;
5889 public:
5890         CVec_C2Tuple_PublicKeyTypeZZ(const CVec_C2Tuple_PublicKeyTypeZZ&) = delete;
5891         CVec_C2Tuple_PublicKeyTypeZZ(CVec_C2Tuple_PublicKeyTypeZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_PublicKeyTypeZZ)); }
5892         CVec_C2Tuple_PublicKeyTypeZZ(LDKCVec_C2Tuple_PublicKeyTypeZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); }
5893         operator LDKCVec_C2Tuple_PublicKeyTypeZZ() && { LDKCVec_C2Tuple_PublicKeyTypeZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_PublicKeyTypeZZ)); return res; }
5894         ~CVec_C2Tuple_PublicKeyTypeZZ() { CVec_C2Tuple_PublicKeyTypeZZ_free(self); }
5895         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; }
5896         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() { return &self; }
5897         LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() { return &self; }
5898         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator &() const { return &self; }
5899         const LDKCVec_C2Tuple_PublicKeyTypeZZ* operator ->() const { return &self; }
5900 };
5901 class CResult_RoutingFeesDecodeErrorZ {
5902 private:
5903         LDKCResult_RoutingFeesDecodeErrorZ self;
5904 public:
5905         CResult_RoutingFeesDecodeErrorZ(const CResult_RoutingFeesDecodeErrorZ&) = delete;
5906         CResult_RoutingFeesDecodeErrorZ(CResult_RoutingFeesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); }
5907         CResult_RoutingFeesDecodeErrorZ(LDKCResult_RoutingFeesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); }
5908         operator LDKCResult_RoutingFeesDecodeErrorZ() && { LDKCResult_RoutingFeesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RoutingFeesDecodeErrorZ)); return res; }
5909         ~CResult_RoutingFeesDecodeErrorZ() { CResult_RoutingFeesDecodeErrorZ_free(self); }
5910         CResult_RoutingFeesDecodeErrorZ& operator=(CResult_RoutingFeesDecodeErrorZ&& o) { CResult_RoutingFeesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RoutingFeesDecodeErrorZ)); return *this; }
5911         LDKCResult_RoutingFeesDecodeErrorZ* operator &() { return &self; }
5912         LDKCResult_RoutingFeesDecodeErrorZ* operator ->() { return &self; }
5913         const LDKCResult_RoutingFeesDecodeErrorZ* operator &() const { return &self; }
5914         const LDKCResult_RoutingFeesDecodeErrorZ* operator ->() const { return &self; }
5915 };
5916 class CResult_QueryShortChannelIdsDecodeErrorZ {
5917 private:
5918         LDKCResult_QueryShortChannelIdsDecodeErrorZ self;
5919 public:
5920         CResult_QueryShortChannelIdsDecodeErrorZ(const CResult_QueryShortChannelIdsDecodeErrorZ&) = delete;
5921         CResult_QueryShortChannelIdsDecodeErrorZ(CResult_QueryShortChannelIdsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); }
5922         CResult_QueryShortChannelIdsDecodeErrorZ(LDKCResult_QueryShortChannelIdsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); }
5923         operator LDKCResult_QueryShortChannelIdsDecodeErrorZ() && { LDKCResult_QueryShortChannelIdsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ)); return res; }
5924         ~CResult_QueryShortChannelIdsDecodeErrorZ() { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); }
5925         CResult_QueryShortChannelIdsDecodeErrorZ& operator=(CResult_QueryShortChannelIdsDecodeErrorZ&& o) { CResult_QueryShortChannelIdsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_QueryShortChannelIdsDecodeErrorZ)); return *this; }
5926         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() { return &self; }
5927         LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() { return &self; }
5928         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator &() const { return &self; }
5929         const LDKCResult_QueryShortChannelIdsDecodeErrorZ* operator ->() const { return &self; }
5930 };
5931 class CResult_InvoiceSemanticErrorZ {
5932 private:
5933         LDKCResult_InvoiceSemanticErrorZ self;
5934 public:
5935         CResult_InvoiceSemanticErrorZ(const CResult_InvoiceSemanticErrorZ&) = delete;
5936         CResult_InvoiceSemanticErrorZ(CResult_InvoiceSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); }
5937         CResult_InvoiceSemanticErrorZ(LDKCResult_InvoiceSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); }
5938         operator LDKCResult_InvoiceSemanticErrorZ() && { LDKCResult_InvoiceSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InvoiceSemanticErrorZ)); return res; }
5939         ~CResult_InvoiceSemanticErrorZ() { CResult_InvoiceSemanticErrorZ_free(self); }
5940         CResult_InvoiceSemanticErrorZ& operator=(CResult_InvoiceSemanticErrorZ&& o) { CResult_InvoiceSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InvoiceSemanticErrorZ)); return *this; }
5941         LDKCResult_InvoiceSemanticErrorZ* operator &() { return &self; }
5942         LDKCResult_InvoiceSemanticErrorZ* operator ->() { return &self; }
5943         const LDKCResult_InvoiceSemanticErrorZ* operator &() const { return &self; }
5944         const LDKCResult_InvoiceSemanticErrorZ* operator ->() const { return &self; }
5945 };
5946 class CResult_UpdateAddHTLCDecodeErrorZ {
5947 private:
5948         LDKCResult_UpdateAddHTLCDecodeErrorZ self;
5949 public:
5950         CResult_UpdateAddHTLCDecodeErrorZ(const CResult_UpdateAddHTLCDecodeErrorZ&) = delete;
5951         CResult_UpdateAddHTLCDecodeErrorZ(CResult_UpdateAddHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); }
5952         CResult_UpdateAddHTLCDecodeErrorZ(LDKCResult_UpdateAddHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); }
5953         operator LDKCResult_UpdateAddHTLCDecodeErrorZ() && { LDKCResult_UpdateAddHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ)); return res; }
5954         ~CResult_UpdateAddHTLCDecodeErrorZ() { CResult_UpdateAddHTLCDecodeErrorZ_free(self); }
5955         CResult_UpdateAddHTLCDecodeErrorZ& operator=(CResult_UpdateAddHTLCDecodeErrorZ&& o) { CResult_UpdateAddHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateAddHTLCDecodeErrorZ)); return *this; }
5956         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() { return &self; }
5957         LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() { return &self; }
5958         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator &() const { return &self; }
5959         const LDKCResult_UpdateAddHTLCDecodeErrorZ* operator ->() const { return &self; }
5960 };
5961 class CVec_PhantomRouteHintsZ {
5962 private:
5963         LDKCVec_PhantomRouteHintsZ self;
5964 public:
5965         CVec_PhantomRouteHintsZ(const CVec_PhantomRouteHintsZ&) = delete;
5966         CVec_PhantomRouteHintsZ(CVec_PhantomRouteHintsZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); }
5967         CVec_PhantomRouteHintsZ(LDKCVec_PhantomRouteHintsZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); }
5968         operator LDKCVec_PhantomRouteHintsZ() && { LDKCVec_PhantomRouteHintsZ res = self; memset(&self, 0, sizeof(LDKCVec_PhantomRouteHintsZ)); return res; }
5969         ~CVec_PhantomRouteHintsZ() { CVec_PhantomRouteHintsZ_free(self); }
5970         CVec_PhantomRouteHintsZ& operator=(CVec_PhantomRouteHintsZ&& o) { CVec_PhantomRouteHintsZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PhantomRouteHintsZ)); return *this; }
5971         LDKCVec_PhantomRouteHintsZ* operator &() { return &self; }
5972         LDKCVec_PhantomRouteHintsZ* operator ->() { return &self; }
5973         const LDKCVec_PhantomRouteHintsZ* operator &() const { return &self; }
5974         const LDKCVec_PhantomRouteHintsZ* operator ->() const { return &self; }
5975 };
5976 class CResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
5977 private:
5978         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ self;
5979 public:
5980         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(const CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&) = delete;
5981         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
5982         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); }
5983         operator LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ() && { LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return res; }
5984         ~CResult_CounterpartyChannelTransactionParametersDecodeErrorZ() { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); }
5985         CResult_CounterpartyChannelTransactionParametersDecodeErrorZ& operator=(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ&& o) { CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyChannelTransactionParametersDecodeErrorZ)); return *this; }
5986         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() { return &self; }
5987         LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() { return &self; }
5988         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator &() const { return &self; }
5989         const LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* operator ->() const { return &self; }
5990 };
5991 class CResult_NoneAPIErrorZ {
5992 private:
5993         LDKCResult_NoneAPIErrorZ self;
5994 public:
5995         CResult_NoneAPIErrorZ(const CResult_NoneAPIErrorZ&) = delete;
5996         CResult_NoneAPIErrorZ(CResult_NoneAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); }
5997         CResult_NoneAPIErrorZ(LDKCResult_NoneAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); }
5998         operator LDKCResult_NoneAPIErrorZ() && { LDKCResult_NoneAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneAPIErrorZ)); return res; }
5999         ~CResult_NoneAPIErrorZ() { CResult_NoneAPIErrorZ_free(self); }
6000         CResult_NoneAPIErrorZ& operator=(CResult_NoneAPIErrorZ&& o) { CResult_NoneAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneAPIErrorZ)); return *this; }
6001         LDKCResult_NoneAPIErrorZ* operator &() { return &self; }
6002         LDKCResult_NoneAPIErrorZ* operator ->() { return &self; }
6003         const LDKCResult_NoneAPIErrorZ* operator &() const { return &self; }
6004         const LDKCResult_NoneAPIErrorZ* operator ->() const { return &self; }
6005 };
6006 class CVec_NetAddressZ {
6007 private:
6008         LDKCVec_NetAddressZ self;
6009 public:
6010         CVec_NetAddressZ(const CVec_NetAddressZ&) = delete;
6011         CVec_NetAddressZ(CVec_NetAddressZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_NetAddressZ)); }
6012         CVec_NetAddressZ(LDKCVec_NetAddressZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_NetAddressZ)); }
6013         operator LDKCVec_NetAddressZ() && { LDKCVec_NetAddressZ res = self; memset(&self, 0, sizeof(LDKCVec_NetAddressZ)); return res; }
6014         ~CVec_NetAddressZ() { CVec_NetAddressZ_free(self); }
6015         CVec_NetAddressZ& operator=(CVec_NetAddressZ&& o) { CVec_NetAddressZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_NetAddressZ)); return *this; }
6016         LDKCVec_NetAddressZ* operator &() { return &self; }
6017         LDKCVec_NetAddressZ* operator ->() { return &self; }
6018         const LDKCVec_NetAddressZ* operator &() const { return &self; }
6019         const LDKCVec_NetAddressZ* operator ->() const { return &self; }
6020 };
6021 class CResult_ChannelDetailsDecodeErrorZ {
6022 private:
6023         LDKCResult_ChannelDetailsDecodeErrorZ self;
6024 public:
6025         CResult_ChannelDetailsDecodeErrorZ(const CResult_ChannelDetailsDecodeErrorZ&) = delete;
6026         CResult_ChannelDetailsDecodeErrorZ(CResult_ChannelDetailsDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); }
6027         CResult_ChannelDetailsDecodeErrorZ(LDKCResult_ChannelDetailsDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); }
6028         operator LDKCResult_ChannelDetailsDecodeErrorZ() && { LDKCResult_ChannelDetailsDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelDetailsDecodeErrorZ)); return res; }
6029         ~CResult_ChannelDetailsDecodeErrorZ() { CResult_ChannelDetailsDecodeErrorZ_free(self); }
6030         CResult_ChannelDetailsDecodeErrorZ& operator=(CResult_ChannelDetailsDecodeErrorZ&& o) { CResult_ChannelDetailsDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelDetailsDecodeErrorZ)); return *this; }
6031         LDKCResult_ChannelDetailsDecodeErrorZ* operator &() { return &self; }
6032         LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() { return &self; }
6033         const LDKCResult_ChannelDetailsDecodeErrorZ* operator &() const { return &self; }
6034         const LDKCResult_ChannelDetailsDecodeErrorZ* operator ->() const { return &self; }
6035 };
6036 class CVec_C2Tuple_usizeTransactionZZ {
6037 private:
6038         LDKCVec_C2Tuple_usizeTransactionZZ self;
6039 public:
6040         CVec_C2Tuple_usizeTransactionZZ(const CVec_C2Tuple_usizeTransactionZZ&) = delete;
6041         CVec_C2Tuple_usizeTransactionZZ(CVec_C2Tuple_usizeTransactionZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_usizeTransactionZZ)); }
6042         CVec_C2Tuple_usizeTransactionZZ(LDKCVec_C2Tuple_usizeTransactionZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); }
6043         operator LDKCVec_C2Tuple_usizeTransactionZZ() && { LDKCVec_C2Tuple_usizeTransactionZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_usizeTransactionZZ)); return res; }
6044         ~CVec_C2Tuple_usizeTransactionZZ() { CVec_C2Tuple_usizeTransactionZZ_free(self); }
6045         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; }
6046         LDKCVec_C2Tuple_usizeTransactionZZ* operator &() { return &self; }
6047         LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() { return &self; }
6048         const LDKCVec_C2Tuple_usizeTransactionZZ* operator &() const { return &self; }
6049         const LDKCVec_C2Tuple_usizeTransactionZZ* operator ->() const { return &self; }
6050 };
6051 class CVec_PublicKeyZ {
6052 private:
6053         LDKCVec_PublicKeyZ self;
6054 public:
6055         CVec_PublicKeyZ(const CVec_PublicKeyZ&) = delete;
6056         CVec_PublicKeyZ(CVec_PublicKeyZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PublicKeyZ)); }
6057         CVec_PublicKeyZ(LDKCVec_PublicKeyZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PublicKeyZ)); }
6058         operator LDKCVec_PublicKeyZ() && { LDKCVec_PublicKeyZ res = self; memset(&self, 0, sizeof(LDKCVec_PublicKeyZ)); return res; }
6059         ~CVec_PublicKeyZ() { CVec_PublicKeyZ_free(self); }
6060         CVec_PublicKeyZ& operator=(CVec_PublicKeyZ&& o) { CVec_PublicKeyZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PublicKeyZ)); return *this; }
6061         LDKCVec_PublicKeyZ* operator &() { return &self; }
6062         LDKCVec_PublicKeyZ* operator ->() { return &self; }
6063         const LDKCVec_PublicKeyZ* operator &() const { return &self; }
6064         const LDKCVec_PublicKeyZ* operator ->() const { return &self; }
6065 };
6066 class COption_MonitorEventZ {
6067 private:
6068         LDKCOption_MonitorEventZ self;
6069 public:
6070         COption_MonitorEventZ(const COption_MonitorEventZ&) = delete;
6071         COption_MonitorEventZ(COption_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_MonitorEventZ)); }
6072         COption_MonitorEventZ(LDKCOption_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_MonitorEventZ)); }
6073         operator LDKCOption_MonitorEventZ() && { LDKCOption_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCOption_MonitorEventZ)); return res; }
6074         ~COption_MonitorEventZ() { COption_MonitorEventZ_free(self); }
6075         COption_MonitorEventZ& operator=(COption_MonitorEventZ&& o) { COption_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_MonitorEventZ)); return *this; }
6076         LDKCOption_MonitorEventZ* operator &() { return &self; }
6077         LDKCOption_MonitorEventZ* operator ->() { return &self; }
6078         const LDKCOption_MonitorEventZ* operator &() const { return &self; }
6079         const LDKCOption_MonitorEventZ* operator ->() const { return &self; }
6080 };
6081 class COption_TypeZ {
6082 private:
6083         LDKCOption_TypeZ self;
6084 public:
6085         COption_TypeZ(const COption_TypeZ&) = delete;
6086         COption_TypeZ(COption_TypeZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_TypeZ)); }
6087         COption_TypeZ(LDKCOption_TypeZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_TypeZ)); }
6088         operator LDKCOption_TypeZ() && { LDKCOption_TypeZ res = self; memset(&self, 0, sizeof(LDKCOption_TypeZ)); return res; }
6089         ~COption_TypeZ() { COption_TypeZ_free(self); }
6090         COption_TypeZ& operator=(COption_TypeZ&& o) { COption_TypeZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_TypeZ)); return *this; }
6091         LDKCOption_TypeZ* operator &() { return &self; }
6092         LDKCOption_TypeZ* operator ->() { return &self; }
6093         const LDKCOption_TypeZ* operator &() const { return &self; }
6094         const LDKCOption_TypeZ* operator ->() const { return &self; }
6095 };
6096 class CResult_COption_TypeZDecodeErrorZ {
6097 private:
6098         LDKCResult_COption_TypeZDecodeErrorZ self;
6099 public:
6100         CResult_COption_TypeZDecodeErrorZ(const CResult_COption_TypeZDecodeErrorZ&) = delete;
6101         CResult_COption_TypeZDecodeErrorZ(CResult_COption_TypeZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_TypeZDecodeErrorZ)); }
6102         CResult_COption_TypeZDecodeErrorZ(LDKCResult_COption_TypeZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); }
6103         operator LDKCResult_COption_TypeZDecodeErrorZ() && { LDKCResult_COption_TypeZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_TypeZDecodeErrorZ)); return res; }
6104         ~CResult_COption_TypeZDecodeErrorZ() { CResult_COption_TypeZDecodeErrorZ_free(self); }
6105         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; }
6106         LDKCResult_COption_TypeZDecodeErrorZ* operator &() { return &self; }
6107         LDKCResult_COption_TypeZDecodeErrorZ* operator ->() { return &self; }
6108         const LDKCResult_COption_TypeZDecodeErrorZ* operator &() const { return &self; }
6109         const LDKCResult_COption_TypeZDecodeErrorZ* operator ->() const { return &self; }
6110 };
6111 class C2Tuple_u32TxOutZ {
6112 private:
6113         LDKC2Tuple_u32TxOutZ self;
6114 public:
6115         C2Tuple_u32TxOutZ(const C2Tuple_u32TxOutZ&) = delete;
6116         C2Tuple_u32TxOutZ(C2Tuple_u32TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); }
6117         C2Tuple_u32TxOutZ(LDKC2Tuple_u32TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); }
6118         operator LDKC2Tuple_u32TxOutZ() && { LDKC2Tuple_u32TxOutZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32TxOutZ)); return res; }
6119         ~C2Tuple_u32TxOutZ() { C2Tuple_u32TxOutZ_free(self); }
6120         C2Tuple_u32TxOutZ& operator=(C2Tuple_u32TxOutZ&& o) { C2Tuple_u32TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32TxOutZ)); return *this; }
6121         LDKC2Tuple_u32TxOutZ* operator &() { return &self; }
6122         LDKC2Tuple_u32TxOutZ* operator ->() { return &self; }
6123         const LDKC2Tuple_u32TxOutZ* operator &() const { return &self; }
6124         const LDKC2Tuple_u32TxOutZ* operator ->() const { return &self; }
6125 };
6126 class CResult_UpdateFailHTLCDecodeErrorZ {
6127 private:
6128         LDKCResult_UpdateFailHTLCDecodeErrorZ self;
6129 public:
6130         CResult_UpdateFailHTLCDecodeErrorZ(const CResult_UpdateFailHTLCDecodeErrorZ&) = delete;
6131         CResult_UpdateFailHTLCDecodeErrorZ(CResult_UpdateFailHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); }
6132         CResult_UpdateFailHTLCDecodeErrorZ(LDKCResult_UpdateFailHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); }
6133         operator LDKCResult_UpdateFailHTLCDecodeErrorZ() && { LDKCResult_UpdateFailHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ)); return res; }
6134         ~CResult_UpdateFailHTLCDecodeErrorZ() { CResult_UpdateFailHTLCDecodeErrorZ_free(self); }
6135         CResult_UpdateFailHTLCDecodeErrorZ& operator=(CResult_UpdateFailHTLCDecodeErrorZ&& o) { CResult_UpdateFailHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFailHTLCDecodeErrorZ)); return *this; }
6136         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() { return &self; }
6137         LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() { return &self; }
6138         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator &() const { return &self; }
6139         const LDKCResult_UpdateFailHTLCDecodeErrorZ* operator ->() const { return &self; }
6140 };
6141 class CResult_PaymentSecretNoneZ {
6142 private:
6143         LDKCResult_PaymentSecretNoneZ self;
6144 public:
6145         CResult_PaymentSecretNoneZ(const CResult_PaymentSecretNoneZ&) = delete;
6146         CResult_PaymentSecretNoneZ(CResult_PaymentSecretNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); }
6147         CResult_PaymentSecretNoneZ(LDKCResult_PaymentSecretNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); }
6148         operator LDKCResult_PaymentSecretNoneZ() && { LDKCResult_PaymentSecretNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretNoneZ)); return res; }
6149         ~CResult_PaymentSecretNoneZ() { CResult_PaymentSecretNoneZ_free(self); }
6150         CResult_PaymentSecretNoneZ& operator=(CResult_PaymentSecretNoneZ&& o) { CResult_PaymentSecretNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretNoneZ)); return *this; }
6151         LDKCResult_PaymentSecretNoneZ* operator &() { return &self; }
6152         LDKCResult_PaymentSecretNoneZ* operator ->() { return &self; }
6153         const LDKCResult_PaymentSecretNoneZ* operator &() const { return &self; }
6154         const LDKCResult_PaymentSecretNoneZ* operator ->() const { return &self; }
6155 };
6156 class CResult_ChannelConfigDecodeErrorZ {
6157 private:
6158         LDKCResult_ChannelConfigDecodeErrorZ self;
6159 public:
6160         CResult_ChannelConfigDecodeErrorZ(const CResult_ChannelConfigDecodeErrorZ&) = delete;
6161         CResult_ChannelConfigDecodeErrorZ(CResult_ChannelConfigDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); }
6162         CResult_ChannelConfigDecodeErrorZ(LDKCResult_ChannelConfigDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); }
6163         operator LDKCResult_ChannelConfigDecodeErrorZ() && { LDKCResult_ChannelConfigDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelConfigDecodeErrorZ)); return res; }
6164         ~CResult_ChannelConfigDecodeErrorZ() { CResult_ChannelConfigDecodeErrorZ_free(self); }
6165         CResult_ChannelConfigDecodeErrorZ& operator=(CResult_ChannelConfigDecodeErrorZ&& o) { CResult_ChannelConfigDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelConfigDecodeErrorZ)); return *this; }
6166         LDKCResult_ChannelConfigDecodeErrorZ* operator &() { return &self; }
6167         LDKCResult_ChannelConfigDecodeErrorZ* operator ->() { return &self; }
6168         const LDKCResult_ChannelConfigDecodeErrorZ* operator &() const { return &self; }
6169         const LDKCResult_ChannelConfigDecodeErrorZ* operator ->() const { return &self; }
6170 };
6171 class CVec_PrivateRouteZ {
6172 private:
6173         LDKCVec_PrivateRouteZ self;
6174 public:
6175         CVec_PrivateRouteZ(const CVec_PrivateRouteZ&) = delete;
6176         CVec_PrivateRouteZ(CVec_PrivateRouteZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PrivateRouteZ)); }
6177         CVec_PrivateRouteZ(LDKCVec_PrivateRouteZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PrivateRouteZ)); }
6178         operator LDKCVec_PrivateRouteZ() && { LDKCVec_PrivateRouteZ res = self; memset(&self, 0, sizeof(LDKCVec_PrivateRouteZ)); return res; }
6179         ~CVec_PrivateRouteZ() { CVec_PrivateRouteZ_free(self); }
6180         CVec_PrivateRouteZ& operator=(CVec_PrivateRouteZ&& o) { CVec_PrivateRouteZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PrivateRouteZ)); return *this; }
6181         LDKCVec_PrivateRouteZ* operator &() { return &self; }
6182         LDKCVec_PrivateRouteZ* operator ->() { return &self; }
6183         const LDKCVec_PrivateRouteZ* operator &() const { return &self; }
6184         const LDKCVec_PrivateRouteZ* operator ->() const { return &self; }
6185 };
6186 class CResult_SpendableOutputDescriptorDecodeErrorZ {
6187 private:
6188         LDKCResult_SpendableOutputDescriptorDecodeErrorZ self;
6189 public:
6190         CResult_SpendableOutputDescriptorDecodeErrorZ(const CResult_SpendableOutputDescriptorDecodeErrorZ&) = delete;
6191         CResult_SpendableOutputDescriptorDecodeErrorZ(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); }
6192         CResult_SpendableOutputDescriptorDecodeErrorZ(LDKCResult_SpendableOutputDescriptorDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); }
6193         operator LDKCResult_SpendableOutputDescriptorDecodeErrorZ() && { LDKCResult_SpendableOutputDescriptorDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ)); return res; }
6194         ~CResult_SpendableOutputDescriptorDecodeErrorZ() { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); }
6195         CResult_SpendableOutputDescriptorDecodeErrorZ& operator=(CResult_SpendableOutputDescriptorDecodeErrorZ&& o) { CResult_SpendableOutputDescriptorDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SpendableOutputDescriptorDecodeErrorZ)); return *this; }
6196         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() { return &self; }
6197         LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() { return &self; }
6198         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator &() const { return &self; }
6199         const LDKCResult_SpendableOutputDescriptorDecodeErrorZ* operator ->() const { return &self; }
6200 };
6201 class CResult_RevokeAndACKDecodeErrorZ {
6202 private:
6203         LDKCResult_RevokeAndACKDecodeErrorZ self;
6204 public:
6205         CResult_RevokeAndACKDecodeErrorZ(const CResult_RevokeAndACKDecodeErrorZ&) = delete;
6206         CResult_RevokeAndACKDecodeErrorZ(CResult_RevokeAndACKDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); }
6207         CResult_RevokeAndACKDecodeErrorZ(LDKCResult_RevokeAndACKDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); }
6208         operator LDKCResult_RevokeAndACKDecodeErrorZ() && { LDKCResult_RevokeAndACKDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RevokeAndACKDecodeErrorZ)); return res; }
6209         ~CResult_RevokeAndACKDecodeErrorZ() { CResult_RevokeAndACKDecodeErrorZ_free(self); }
6210         CResult_RevokeAndACKDecodeErrorZ& operator=(CResult_RevokeAndACKDecodeErrorZ&& o) { CResult_RevokeAndACKDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RevokeAndACKDecodeErrorZ)); return *this; }
6211         LDKCResult_RevokeAndACKDecodeErrorZ* operator &() { return &self; }
6212         LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() { return &self; }
6213         const LDKCResult_RevokeAndACKDecodeErrorZ* operator &() const { return &self; }
6214         const LDKCResult_RevokeAndACKDecodeErrorZ* operator ->() const { return &self; }
6215 };
6216 class CResult_UnsignedChannelUpdateDecodeErrorZ {
6217 private:
6218         LDKCResult_UnsignedChannelUpdateDecodeErrorZ self;
6219 public:
6220         CResult_UnsignedChannelUpdateDecodeErrorZ(const CResult_UnsignedChannelUpdateDecodeErrorZ&) = delete;
6221         CResult_UnsignedChannelUpdateDecodeErrorZ(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); }
6222         CResult_UnsignedChannelUpdateDecodeErrorZ(LDKCResult_UnsignedChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); }
6223         operator LDKCResult_UnsignedChannelUpdateDecodeErrorZ() && { LDKCResult_UnsignedChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ)); return res; }
6224         ~CResult_UnsignedChannelUpdateDecodeErrorZ() { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); }
6225         CResult_UnsignedChannelUpdateDecodeErrorZ& operator=(CResult_UnsignedChannelUpdateDecodeErrorZ&& o) { CResult_UnsignedChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UnsignedChannelUpdateDecodeErrorZ)); return *this; }
6226         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() { return &self; }
6227         LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6228         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6229         const LDKCResult_UnsignedChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6230 };
6231 class CResult_ShutdownDecodeErrorZ {
6232 private:
6233         LDKCResult_ShutdownDecodeErrorZ self;
6234 public:
6235         CResult_ShutdownDecodeErrorZ(const CResult_ShutdownDecodeErrorZ&) = delete;
6236         CResult_ShutdownDecodeErrorZ(CResult_ShutdownDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); }
6237         CResult_ShutdownDecodeErrorZ(LDKCResult_ShutdownDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); }
6238         operator LDKCResult_ShutdownDecodeErrorZ() && { LDKCResult_ShutdownDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ShutdownDecodeErrorZ)); return res; }
6239         ~CResult_ShutdownDecodeErrorZ() { CResult_ShutdownDecodeErrorZ_free(self); }
6240         CResult_ShutdownDecodeErrorZ& operator=(CResult_ShutdownDecodeErrorZ&& o) { CResult_ShutdownDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ShutdownDecodeErrorZ)); return *this; }
6241         LDKCResult_ShutdownDecodeErrorZ* operator &() { return &self; }
6242         LDKCResult_ShutdownDecodeErrorZ* operator ->() { return &self; }
6243         const LDKCResult_ShutdownDecodeErrorZ* operator &() const { return &self; }
6244         const LDKCResult_ShutdownDecodeErrorZ* operator ->() const { return &self; }
6245 };
6246 class CVec_EventZ {
6247 private:
6248         LDKCVec_EventZ self;
6249 public:
6250         CVec_EventZ(const CVec_EventZ&) = delete;
6251         CVec_EventZ(CVec_EventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_EventZ)); }
6252         CVec_EventZ(LDKCVec_EventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_EventZ)); }
6253         operator LDKCVec_EventZ() && { LDKCVec_EventZ res = self; memset(&self, 0, sizeof(LDKCVec_EventZ)); return res; }
6254         ~CVec_EventZ() { CVec_EventZ_free(self); }
6255         CVec_EventZ& operator=(CVec_EventZ&& o) { CVec_EventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_EventZ)); return *this; }
6256         LDKCVec_EventZ* operator &() { return &self; }
6257         LDKCVec_EventZ* operator ->() { return &self; }
6258         const LDKCVec_EventZ* operator &() const { return &self; }
6259         const LDKCVec_EventZ* operator ->() const { return &self; }
6260 };
6261 class CResult_NoneSemanticErrorZ {
6262 private:
6263         LDKCResult_NoneSemanticErrorZ self;
6264 public:
6265         CResult_NoneSemanticErrorZ(const CResult_NoneSemanticErrorZ&) = delete;
6266         CResult_NoneSemanticErrorZ(CResult_NoneSemanticErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); }
6267         CResult_NoneSemanticErrorZ(LDKCResult_NoneSemanticErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); }
6268         operator LDKCResult_NoneSemanticErrorZ() && { LDKCResult_NoneSemanticErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneSemanticErrorZ)); return res; }
6269         ~CResult_NoneSemanticErrorZ() { CResult_NoneSemanticErrorZ_free(self); }
6270         CResult_NoneSemanticErrorZ& operator=(CResult_NoneSemanticErrorZ&& o) { CResult_NoneSemanticErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneSemanticErrorZ)); return *this; }
6271         LDKCResult_NoneSemanticErrorZ* operator &() { return &self; }
6272         LDKCResult_NoneSemanticErrorZ* operator ->() { return &self; }
6273         const LDKCResult_NoneSemanticErrorZ* operator &() const { return &self; }
6274         const LDKCResult_NoneSemanticErrorZ* operator ->() const { return &self; }
6275 };
6276 class CVec_MonitorEventZ {
6277 private:
6278         LDKCVec_MonitorEventZ self;
6279 public:
6280         CVec_MonitorEventZ(const CVec_MonitorEventZ&) = delete;
6281         CVec_MonitorEventZ(CVec_MonitorEventZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_MonitorEventZ)); }
6282         CVec_MonitorEventZ(LDKCVec_MonitorEventZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_MonitorEventZ)); }
6283         operator LDKCVec_MonitorEventZ() && { LDKCVec_MonitorEventZ res = self; memset(&self, 0, sizeof(LDKCVec_MonitorEventZ)); return res; }
6284         ~CVec_MonitorEventZ() { CVec_MonitorEventZ_free(self); }
6285         CVec_MonitorEventZ& operator=(CVec_MonitorEventZ&& o) { CVec_MonitorEventZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_MonitorEventZ)); return *this; }
6286         LDKCVec_MonitorEventZ* operator &() { return &self; }
6287         LDKCVec_MonitorEventZ* operator ->() { return &self; }
6288         const LDKCVec_MonitorEventZ* operator &() const { return &self; }
6289         const LDKCVec_MonitorEventZ* operator ->() const { return &self; }
6290 };
6291 class CVec_PaymentPreimageZ {
6292 private:
6293         LDKCVec_PaymentPreimageZ self;
6294 public:
6295         CVec_PaymentPreimageZ(const CVec_PaymentPreimageZ&) = delete;
6296         CVec_PaymentPreimageZ(CVec_PaymentPreimageZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); }
6297         CVec_PaymentPreimageZ(LDKCVec_PaymentPreimageZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_PaymentPreimageZ)); }
6298         operator LDKCVec_PaymentPreimageZ() && { LDKCVec_PaymentPreimageZ res = self; memset(&self, 0, sizeof(LDKCVec_PaymentPreimageZ)); return res; }
6299         ~CVec_PaymentPreimageZ() { CVec_PaymentPreimageZ_free(self); }
6300         CVec_PaymentPreimageZ& operator=(CVec_PaymentPreimageZ&& o) { CVec_PaymentPreimageZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_PaymentPreimageZ)); return *this; }
6301         LDKCVec_PaymentPreimageZ* operator &() { return &self; }
6302         LDKCVec_PaymentPreimageZ* operator ->() { return &self; }
6303         const LDKCVec_PaymentPreimageZ* operator &() const { return &self; }
6304         const LDKCVec_PaymentPreimageZ* operator ->() const { return &self; }
6305 };
6306 class CVec_C2Tuple_u32ScriptZZ {
6307 private:
6308         LDKCVec_C2Tuple_u32ScriptZZ self;
6309 public:
6310         CVec_C2Tuple_u32ScriptZZ(const CVec_C2Tuple_u32ScriptZZ&) = delete;
6311         CVec_C2Tuple_u32ScriptZZ(CVec_C2Tuple_u32ScriptZZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_C2Tuple_u32ScriptZZ)); }
6312         CVec_C2Tuple_u32ScriptZZ(LDKCVec_C2Tuple_u32ScriptZZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); }
6313         operator LDKCVec_C2Tuple_u32ScriptZZ() && { LDKCVec_C2Tuple_u32ScriptZZ res = self; memset(&self, 0, sizeof(LDKCVec_C2Tuple_u32ScriptZZ)); return res; }
6314         ~CVec_C2Tuple_u32ScriptZZ() { CVec_C2Tuple_u32ScriptZZ_free(self); }
6315         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; }
6316         LDKCVec_C2Tuple_u32ScriptZZ* operator &() { return &self; }
6317         LDKCVec_C2Tuple_u32ScriptZZ* operator ->() { return &self; }
6318         const LDKCVec_C2Tuple_u32ScriptZZ* operator &() const { return &self; }
6319         const LDKCVec_C2Tuple_u32ScriptZZ* operator ->() const { return &self; }
6320 };
6321 class CResult_NoneChannelMonitorUpdateErrZ {
6322 private:
6323         LDKCResult_NoneChannelMonitorUpdateErrZ self;
6324 public:
6325         CResult_NoneChannelMonitorUpdateErrZ(const CResult_NoneChannelMonitorUpdateErrZ&) = delete;
6326         CResult_NoneChannelMonitorUpdateErrZ(CResult_NoneChannelMonitorUpdateErrZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); }
6327         CResult_NoneChannelMonitorUpdateErrZ(LDKCResult_NoneChannelMonitorUpdateErrZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); }
6328         operator LDKCResult_NoneChannelMonitorUpdateErrZ() && { LDKCResult_NoneChannelMonitorUpdateErrZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ)); return res; }
6329         ~CResult_NoneChannelMonitorUpdateErrZ() { CResult_NoneChannelMonitorUpdateErrZ_free(self); }
6330         CResult_NoneChannelMonitorUpdateErrZ& operator=(CResult_NoneChannelMonitorUpdateErrZ&& o) { CResult_NoneChannelMonitorUpdateErrZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneChannelMonitorUpdateErrZ)); return *this; }
6331         LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() { return &self; }
6332         LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() { return &self; }
6333         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator &() const { return &self; }
6334         const LDKCResult_NoneChannelMonitorUpdateErrZ* operator ->() const { return &self; }
6335 };
6336 class CResult_COption_ClosureReasonZDecodeErrorZ {
6337 private:
6338         LDKCResult_COption_ClosureReasonZDecodeErrorZ self;
6339 public:
6340         CResult_COption_ClosureReasonZDecodeErrorZ(const CResult_COption_ClosureReasonZDecodeErrorZ&) = delete;
6341         CResult_COption_ClosureReasonZDecodeErrorZ(CResult_COption_ClosureReasonZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_COption_ClosureReasonZDecodeErrorZ)); }
6342         CResult_COption_ClosureReasonZDecodeErrorZ(LDKCResult_COption_ClosureReasonZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); }
6343         operator LDKCResult_COption_ClosureReasonZDecodeErrorZ() && { LDKCResult_COption_ClosureReasonZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ)); return res; }
6344         ~CResult_COption_ClosureReasonZDecodeErrorZ() { CResult_COption_ClosureReasonZDecodeErrorZ_free(self); }
6345         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; }
6346         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() { return &self; }
6347         LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() { return &self; }
6348         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator &() const { return &self; }
6349         const LDKCResult_COption_ClosureReasonZDecodeErrorZ* operator ->() const { return &self; }
6350 };
6351 class CResult_SiPrefixNoneZ {
6352 private:
6353         LDKCResult_SiPrefixNoneZ self;
6354 public:
6355         CResult_SiPrefixNoneZ(const CResult_SiPrefixNoneZ&) = delete;
6356         CResult_SiPrefixNoneZ(CResult_SiPrefixNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_SiPrefixNoneZ)); }
6357         CResult_SiPrefixNoneZ(LDKCResult_SiPrefixNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_SiPrefixNoneZ)); }
6358         operator LDKCResult_SiPrefixNoneZ() && { LDKCResult_SiPrefixNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_SiPrefixNoneZ)); return res; }
6359         ~CResult_SiPrefixNoneZ() { CResult_SiPrefixNoneZ_free(self); }
6360         CResult_SiPrefixNoneZ& operator=(CResult_SiPrefixNoneZ&& o) { CResult_SiPrefixNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_SiPrefixNoneZ)); return *this; }
6361         LDKCResult_SiPrefixNoneZ* operator &() { return &self; }
6362         LDKCResult_SiPrefixNoneZ* operator ->() { return &self; }
6363         const LDKCResult_SiPrefixNoneZ* operator &() const { return &self; }
6364         const LDKCResult_SiPrefixNoneZ* operator ->() const { return &self; }
6365 };
6366 class CResult_PublicKeyErrorZ {
6367 private:
6368         LDKCResult_PublicKeyErrorZ self;
6369 public:
6370         CResult_PublicKeyErrorZ(const CResult_PublicKeyErrorZ&) = delete;
6371         CResult_PublicKeyErrorZ(CResult_PublicKeyErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); }
6372         CResult_PublicKeyErrorZ(LDKCResult_PublicKeyErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); }
6373         operator LDKCResult_PublicKeyErrorZ() && { LDKCResult_PublicKeyErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PublicKeyErrorZ)); return res; }
6374         ~CResult_PublicKeyErrorZ() { CResult_PublicKeyErrorZ_free(self); }
6375         CResult_PublicKeyErrorZ& operator=(CResult_PublicKeyErrorZ&& o) { CResult_PublicKeyErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PublicKeyErrorZ)); return *this; }
6376         LDKCResult_PublicKeyErrorZ* operator &() { return &self; }
6377         LDKCResult_PublicKeyErrorZ* operator ->() { return &self; }
6378         const LDKCResult_PublicKeyErrorZ* operator &() const { return &self; }
6379         const LDKCResult_PublicKeyErrorZ* operator ->() const { return &self; }
6380 };
6381 class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
6382 private:
6383         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ self;
6384 public:
6385         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(const C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&) = delete;
6386         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) : self(o.self) { memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6387         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); }
6388         operator LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() && { LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ res = self; memset(&self, 0, sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return res; }
6389         ~C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ() { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); }
6390         C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ& operator=(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ&& o) { C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(self); self = o.self; memset(&o, 0, sizeof(C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ)); return *this; }
6391         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() { return &self; }
6392         LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() { return &self; }
6393         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator &() const { return &self; }
6394         const LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* operator ->() const { return &self; }
6395 };
6396 class CResult_NoneNoneZ {
6397 private:
6398         LDKCResult_NoneNoneZ self;
6399 public:
6400         CResult_NoneNoneZ(const CResult_NoneNoneZ&) = delete;
6401         CResult_NoneNoneZ(CResult_NoneNoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NoneNoneZ)); }
6402         CResult_NoneNoneZ(LDKCResult_NoneNoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NoneNoneZ)); }
6403         operator LDKCResult_NoneNoneZ() && { LDKCResult_NoneNoneZ res = self; memset(&self, 0, sizeof(LDKCResult_NoneNoneZ)); return res; }
6404         ~CResult_NoneNoneZ() { CResult_NoneNoneZ_free(self); }
6405         CResult_NoneNoneZ& operator=(CResult_NoneNoneZ&& o) { CResult_NoneNoneZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NoneNoneZ)); return *this; }
6406         LDKCResult_NoneNoneZ* operator &() { return &self; }
6407         LDKCResult_NoneNoneZ* operator ->() { return &self; }
6408         const LDKCResult_NoneNoneZ* operator &() const { return &self; }
6409         const LDKCResult_NoneNoneZ* operator ->() const { return &self; }
6410 };
6411 class CResult_RouteParametersDecodeErrorZ {
6412 private:
6413         LDKCResult_RouteParametersDecodeErrorZ self;
6414 public:
6415         CResult_RouteParametersDecodeErrorZ(const CResult_RouteParametersDecodeErrorZ&) = delete;
6416         CResult_RouteParametersDecodeErrorZ(CResult_RouteParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); }
6417         CResult_RouteParametersDecodeErrorZ(LDKCResult_RouteParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); }
6418         operator LDKCResult_RouteParametersDecodeErrorZ() && { LDKCResult_RouteParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteParametersDecodeErrorZ)); return res; }
6419         ~CResult_RouteParametersDecodeErrorZ() { CResult_RouteParametersDecodeErrorZ_free(self); }
6420         CResult_RouteParametersDecodeErrorZ& operator=(CResult_RouteParametersDecodeErrorZ&& o) { CResult_RouteParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteParametersDecodeErrorZ)); return *this; }
6421         LDKCResult_RouteParametersDecodeErrorZ* operator &() { return &self; }
6422         LDKCResult_RouteParametersDecodeErrorZ* operator ->() { return &self; }
6423         const LDKCResult_RouteParametersDecodeErrorZ* operator &() const { return &self; }
6424         const LDKCResult_RouteParametersDecodeErrorZ* operator ->() const { return &self; }
6425 };
6426 class COption_ClosureReasonZ {
6427 private:
6428         LDKCOption_ClosureReasonZ self;
6429 public:
6430         COption_ClosureReasonZ(const COption_ClosureReasonZ&) = delete;
6431         COption_ClosureReasonZ(COption_ClosureReasonZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_ClosureReasonZ)); }
6432         COption_ClosureReasonZ(LDKCOption_ClosureReasonZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_ClosureReasonZ)); }
6433         operator LDKCOption_ClosureReasonZ() && { LDKCOption_ClosureReasonZ res = self; memset(&self, 0, sizeof(LDKCOption_ClosureReasonZ)); return res; }
6434         ~COption_ClosureReasonZ() { COption_ClosureReasonZ_free(self); }
6435         COption_ClosureReasonZ& operator=(COption_ClosureReasonZ&& o) { COption_ClosureReasonZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_ClosureReasonZ)); return *this; }
6436         LDKCOption_ClosureReasonZ* operator &() { return &self; }
6437         LDKCOption_ClosureReasonZ* operator ->() { return &self; }
6438         const LDKCOption_ClosureReasonZ* operator &() const { return &self; }
6439         const LDKCOption_ClosureReasonZ* operator ->() const { return &self; }
6440 };
6441 class CVec_APIErrorZ {
6442 private:
6443         LDKCVec_APIErrorZ self;
6444 public:
6445         CVec_APIErrorZ(const CVec_APIErrorZ&) = delete;
6446         CVec_APIErrorZ(CVec_APIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_APIErrorZ)); }
6447         CVec_APIErrorZ(LDKCVec_APIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_APIErrorZ)); }
6448         operator LDKCVec_APIErrorZ() && { LDKCVec_APIErrorZ res = self; memset(&self, 0, sizeof(LDKCVec_APIErrorZ)); return res; }
6449         ~CVec_APIErrorZ() { CVec_APIErrorZ_free(self); }
6450         CVec_APIErrorZ& operator=(CVec_APIErrorZ&& o) { CVec_APIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_APIErrorZ)); return *this; }
6451         LDKCVec_APIErrorZ* operator &() { return &self; }
6452         LDKCVec_APIErrorZ* operator ->() { return &self; }
6453         const LDKCVec_APIErrorZ* operator &() const { return &self; }
6454         const LDKCVec_APIErrorZ* operator ->() const { return &self; }
6455 };
6456 class CResult_PrivateRouteCreationErrorZ {
6457 private:
6458         LDKCResult_PrivateRouteCreationErrorZ self;
6459 public:
6460         CResult_PrivateRouteCreationErrorZ(const CResult_PrivateRouteCreationErrorZ&) = delete;
6461         CResult_PrivateRouteCreationErrorZ(CResult_PrivateRouteCreationErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); }
6462         CResult_PrivateRouteCreationErrorZ(LDKCResult_PrivateRouteCreationErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); }
6463         operator LDKCResult_PrivateRouteCreationErrorZ() && { LDKCResult_PrivateRouteCreationErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PrivateRouteCreationErrorZ)); return res; }
6464         ~CResult_PrivateRouteCreationErrorZ() { CResult_PrivateRouteCreationErrorZ_free(self); }
6465         CResult_PrivateRouteCreationErrorZ& operator=(CResult_PrivateRouteCreationErrorZ&& o) { CResult_PrivateRouteCreationErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PrivateRouteCreationErrorZ)); return *this; }
6466         LDKCResult_PrivateRouteCreationErrorZ* operator &() { return &self; }
6467         LDKCResult_PrivateRouteCreationErrorZ* operator ->() { return &self; }
6468         const LDKCResult_PrivateRouteCreationErrorZ* operator &() const { return &self; }
6469         const LDKCResult_PrivateRouteCreationErrorZ* operator ->() const { return &self; }
6470 };
6471 class CResult_boolPeerHandleErrorZ {
6472 private:
6473         LDKCResult_boolPeerHandleErrorZ self;
6474 public:
6475         CResult_boolPeerHandleErrorZ(const CResult_boolPeerHandleErrorZ&) = delete;
6476         CResult_boolPeerHandleErrorZ(CResult_boolPeerHandleErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); }
6477         CResult_boolPeerHandleErrorZ(LDKCResult_boolPeerHandleErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); }
6478         operator LDKCResult_boolPeerHandleErrorZ() && { LDKCResult_boolPeerHandleErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_boolPeerHandleErrorZ)); return res; }
6479         ~CResult_boolPeerHandleErrorZ() { CResult_boolPeerHandleErrorZ_free(self); }
6480         CResult_boolPeerHandleErrorZ& operator=(CResult_boolPeerHandleErrorZ&& o) { CResult_boolPeerHandleErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_boolPeerHandleErrorZ)); return *this; }
6481         LDKCResult_boolPeerHandleErrorZ* operator &() { return &self; }
6482         LDKCResult_boolPeerHandleErrorZ* operator ->() { return &self; }
6483         const LDKCResult_boolPeerHandleErrorZ* operator &() const { return &self; }
6484         const LDKCResult_boolPeerHandleErrorZ* operator ->() const { return &self; }
6485 };
6486 class CResult_ChannelUpdateDecodeErrorZ {
6487 private:
6488         LDKCResult_ChannelUpdateDecodeErrorZ self;
6489 public:
6490         CResult_ChannelUpdateDecodeErrorZ(const CResult_ChannelUpdateDecodeErrorZ&) = delete;
6491         CResult_ChannelUpdateDecodeErrorZ(CResult_ChannelUpdateDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); }
6492         CResult_ChannelUpdateDecodeErrorZ(LDKCResult_ChannelUpdateDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); }
6493         operator LDKCResult_ChannelUpdateDecodeErrorZ() && { LDKCResult_ChannelUpdateDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateDecodeErrorZ)); return res; }
6494         ~CResult_ChannelUpdateDecodeErrorZ() { CResult_ChannelUpdateDecodeErrorZ_free(self); }
6495         CResult_ChannelUpdateDecodeErrorZ& operator=(CResult_ChannelUpdateDecodeErrorZ&& o) { CResult_ChannelUpdateDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateDecodeErrorZ)); return *this; }
6496         LDKCResult_ChannelUpdateDecodeErrorZ* operator &() { return &self; }
6497         LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() { return &self; }
6498         const LDKCResult_ChannelUpdateDecodeErrorZ* operator &() const { return &self; }
6499         const LDKCResult_ChannelUpdateDecodeErrorZ* operator ->() const { return &self; }
6500 };
6501 class CVec_UpdateFulfillHTLCZ {
6502 private:
6503         LDKCVec_UpdateFulfillHTLCZ self;
6504 public:
6505         CVec_UpdateFulfillHTLCZ(const CVec_UpdateFulfillHTLCZ&) = delete;
6506         CVec_UpdateFulfillHTLCZ(CVec_UpdateFulfillHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); }
6507         CVec_UpdateFulfillHTLCZ(LDKCVec_UpdateFulfillHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); }
6508         operator LDKCVec_UpdateFulfillHTLCZ() && { LDKCVec_UpdateFulfillHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFulfillHTLCZ)); return res; }
6509         ~CVec_UpdateFulfillHTLCZ() { CVec_UpdateFulfillHTLCZ_free(self); }
6510         CVec_UpdateFulfillHTLCZ& operator=(CVec_UpdateFulfillHTLCZ&& o) { CVec_UpdateFulfillHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFulfillHTLCZ)); return *this; }
6511         LDKCVec_UpdateFulfillHTLCZ* operator &() { return &self; }
6512         LDKCVec_UpdateFulfillHTLCZ* operator ->() { return &self; }
6513         const LDKCVec_UpdateFulfillHTLCZ* operator &() const { return &self; }
6514         const LDKCVec_UpdateFulfillHTLCZ* operator ->() const { return &self; }
6515 };
6516 class CResult_AnnouncementSignaturesDecodeErrorZ {
6517 private:
6518         LDKCResult_AnnouncementSignaturesDecodeErrorZ self;
6519 public:
6520         CResult_AnnouncementSignaturesDecodeErrorZ(const CResult_AnnouncementSignaturesDecodeErrorZ&) = delete;
6521         CResult_AnnouncementSignaturesDecodeErrorZ(CResult_AnnouncementSignaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); }
6522         CResult_AnnouncementSignaturesDecodeErrorZ(LDKCResult_AnnouncementSignaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); }
6523         operator LDKCResult_AnnouncementSignaturesDecodeErrorZ() && { LDKCResult_AnnouncementSignaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ)); return res; }
6524         ~CResult_AnnouncementSignaturesDecodeErrorZ() { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); }
6525         CResult_AnnouncementSignaturesDecodeErrorZ& operator=(CResult_AnnouncementSignaturesDecodeErrorZ&& o) { CResult_AnnouncementSignaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_AnnouncementSignaturesDecodeErrorZ)); return *this; }
6526         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() { return &self; }
6527         LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() { return &self; }
6528         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator &() const { return &self; }
6529         const LDKCResult_AnnouncementSignaturesDecodeErrorZ* operator ->() const { return &self; }
6530 };
6531 class CResult_UpdateFulfillHTLCDecodeErrorZ {
6532 private:
6533         LDKCResult_UpdateFulfillHTLCDecodeErrorZ self;
6534 public:
6535         CResult_UpdateFulfillHTLCDecodeErrorZ(const CResult_UpdateFulfillHTLCDecodeErrorZ&) = delete;
6536         CResult_UpdateFulfillHTLCDecodeErrorZ(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); }
6537         CResult_UpdateFulfillHTLCDecodeErrorZ(LDKCResult_UpdateFulfillHTLCDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); }
6538         operator LDKCResult_UpdateFulfillHTLCDecodeErrorZ() && { LDKCResult_UpdateFulfillHTLCDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ)); return res; }
6539         ~CResult_UpdateFulfillHTLCDecodeErrorZ() { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); }
6540         CResult_UpdateFulfillHTLCDecodeErrorZ& operator=(CResult_UpdateFulfillHTLCDecodeErrorZ&& o) { CResult_UpdateFulfillHTLCDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_UpdateFulfillHTLCDecodeErrorZ)); return *this; }
6541         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() { return &self; }
6542         LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() { return &self; }
6543         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator &() const { return &self; }
6544         const LDKCResult_UpdateFulfillHTLCDecodeErrorZ* operator ->() const { return &self; }
6545 };
6546 class CResult_NodeFeaturesDecodeErrorZ {
6547 private:
6548         LDKCResult_NodeFeaturesDecodeErrorZ self;
6549 public:
6550         CResult_NodeFeaturesDecodeErrorZ(const CResult_NodeFeaturesDecodeErrorZ&) = delete;
6551         CResult_NodeFeaturesDecodeErrorZ(CResult_NodeFeaturesDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); }
6552         CResult_NodeFeaturesDecodeErrorZ(LDKCResult_NodeFeaturesDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); }
6553         operator LDKCResult_NodeFeaturesDecodeErrorZ() && { LDKCResult_NodeFeaturesDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_NodeFeaturesDecodeErrorZ)); return res; }
6554         ~CResult_NodeFeaturesDecodeErrorZ() { CResult_NodeFeaturesDecodeErrorZ_free(self); }
6555         CResult_NodeFeaturesDecodeErrorZ& operator=(CResult_NodeFeaturesDecodeErrorZ&& o) { CResult_NodeFeaturesDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_NodeFeaturesDecodeErrorZ)); return *this; }
6556         LDKCResult_NodeFeaturesDecodeErrorZ* operator &() { return &self; }
6557         LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() { return &self; }
6558         const LDKCResult_NodeFeaturesDecodeErrorZ* operator &() const { return &self; }
6559         const LDKCResult_NodeFeaturesDecodeErrorZ* operator ->() const { return &self; }
6560 };
6561 class CVec_u5Z {
6562 private:
6563         LDKCVec_u5Z self;
6564 public:
6565         CVec_u5Z(const CVec_u5Z&) = delete;
6566         CVec_u5Z(CVec_u5Z&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_u5Z)); }
6567         CVec_u5Z(LDKCVec_u5Z&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_u5Z)); }
6568         operator LDKCVec_u5Z() && { LDKCVec_u5Z res = self; memset(&self, 0, sizeof(LDKCVec_u5Z)); return res; }
6569         ~CVec_u5Z() { CVec_u5Z_free(self); }
6570         CVec_u5Z& operator=(CVec_u5Z&& o) { CVec_u5Z_free(self); self = o.self; memset(&o, 0, sizeof(CVec_u5Z)); return *this; }
6571         LDKCVec_u5Z* operator &() { return &self; }
6572         LDKCVec_u5Z* operator ->() { return &self; }
6573         const LDKCVec_u5Z* operator &() const { return &self; }
6574         const LDKCVec_u5Z* operator ->() const { return &self; }
6575 };
6576 class CResult_InMemorySignerDecodeErrorZ {
6577 private:
6578         LDKCResult_InMemorySignerDecodeErrorZ self;
6579 public:
6580         CResult_InMemorySignerDecodeErrorZ(const CResult_InMemorySignerDecodeErrorZ&) = delete;
6581         CResult_InMemorySignerDecodeErrorZ(CResult_InMemorySignerDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); }
6582         CResult_InMemorySignerDecodeErrorZ(LDKCResult_InMemorySignerDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); }
6583         operator LDKCResult_InMemorySignerDecodeErrorZ() && { LDKCResult_InMemorySignerDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_InMemorySignerDecodeErrorZ)); return res; }
6584         ~CResult_InMemorySignerDecodeErrorZ() { CResult_InMemorySignerDecodeErrorZ_free(self); }
6585         CResult_InMemorySignerDecodeErrorZ& operator=(CResult_InMemorySignerDecodeErrorZ&& o) { CResult_InMemorySignerDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_InMemorySignerDecodeErrorZ)); return *this; }
6586         LDKCResult_InMemorySignerDecodeErrorZ* operator &() { return &self; }
6587         LDKCResult_InMemorySignerDecodeErrorZ* operator ->() { return &self; }
6588         const LDKCResult_InMemorySignerDecodeErrorZ* operator &() const { return &self; }
6589         const LDKCResult_InMemorySignerDecodeErrorZ* operator ->() const { return &self; }
6590 };
6591 class CResult_PaymentSecretAPIErrorZ {
6592 private:
6593         LDKCResult_PaymentSecretAPIErrorZ self;
6594 public:
6595         CResult_PaymentSecretAPIErrorZ(const CResult_PaymentSecretAPIErrorZ&) = delete;
6596         CResult_PaymentSecretAPIErrorZ(CResult_PaymentSecretAPIErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); }
6597         CResult_PaymentSecretAPIErrorZ(LDKCResult_PaymentSecretAPIErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); }
6598         operator LDKCResult_PaymentSecretAPIErrorZ() && { LDKCResult_PaymentSecretAPIErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_PaymentSecretAPIErrorZ)); return res; }
6599         ~CResult_PaymentSecretAPIErrorZ() { CResult_PaymentSecretAPIErrorZ_free(self); }
6600         CResult_PaymentSecretAPIErrorZ& operator=(CResult_PaymentSecretAPIErrorZ&& o) { CResult_PaymentSecretAPIErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_PaymentSecretAPIErrorZ)); return *this; }
6601         LDKCResult_PaymentSecretAPIErrorZ* operator &() { return &self; }
6602         LDKCResult_PaymentSecretAPIErrorZ* operator ->() { return &self; }
6603         const LDKCResult_PaymentSecretAPIErrorZ* operator &() const { return &self; }
6604         const LDKCResult_PaymentSecretAPIErrorZ* operator ->() const { return &self; }
6605 };
6606 class CResult_CounterpartyForwardingInfoDecodeErrorZ {
6607 private:
6608         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ self;
6609 public:
6610         CResult_CounterpartyForwardingInfoDecodeErrorZ(const CResult_CounterpartyForwardingInfoDecodeErrorZ&) = delete;
6611         CResult_CounterpartyForwardingInfoDecodeErrorZ(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); }
6612         CResult_CounterpartyForwardingInfoDecodeErrorZ(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); }
6613         operator LDKCResult_CounterpartyForwardingInfoDecodeErrorZ() && { LDKCResult_CounterpartyForwardingInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_CounterpartyForwardingInfoDecodeErrorZ)); return res; }
6614         ~CResult_CounterpartyForwardingInfoDecodeErrorZ() { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); }
6615         CResult_CounterpartyForwardingInfoDecodeErrorZ& operator=(CResult_CounterpartyForwardingInfoDecodeErrorZ&& o) { CResult_CounterpartyForwardingInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_CounterpartyForwardingInfoDecodeErrorZ)); return *this; }
6616         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() { return &self; }
6617         LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() { return &self; }
6618         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator &() const { return &self; }
6619         const LDKCResult_CounterpartyForwardingInfoDecodeErrorZ* operator ->() const { return &self; }
6620 };
6621 class C2Tuple_u32ScriptZ {
6622 private:
6623         LDKC2Tuple_u32ScriptZ self;
6624 public:
6625         C2Tuple_u32ScriptZ(const C2Tuple_u32ScriptZ&) = delete;
6626         C2Tuple_u32ScriptZ(C2Tuple_u32ScriptZ&& o) : self(o.self) { memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); }
6627         C2Tuple_u32ScriptZ(LDKC2Tuple_u32ScriptZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); }
6628         operator LDKC2Tuple_u32ScriptZ() && { LDKC2Tuple_u32ScriptZ res = self; memset(&self, 0, sizeof(LDKC2Tuple_u32ScriptZ)); return res; }
6629         ~C2Tuple_u32ScriptZ() { C2Tuple_u32ScriptZ_free(self); }
6630         C2Tuple_u32ScriptZ& operator=(C2Tuple_u32ScriptZ&& o) { C2Tuple_u32ScriptZ_free(self); self = o.self; memset(&o, 0, sizeof(C2Tuple_u32ScriptZ)); return *this; }
6631         LDKC2Tuple_u32ScriptZ* operator &() { return &self; }
6632         LDKC2Tuple_u32ScriptZ* operator ->() { return &self; }
6633         const LDKC2Tuple_u32ScriptZ* operator &() const { return &self; }
6634         const LDKC2Tuple_u32ScriptZ* operator ->() const { return &self; }
6635 };
6636 class CResult_ReplyShortChannelIdsEndDecodeErrorZ {
6637 private:
6638         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ self;
6639 public:
6640         CResult_ReplyShortChannelIdsEndDecodeErrorZ(const CResult_ReplyShortChannelIdsEndDecodeErrorZ&) = delete;
6641         CResult_ReplyShortChannelIdsEndDecodeErrorZ(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6642         CResult_ReplyShortChannelIdsEndDecodeErrorZ(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); }
6643         operator LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ() && { LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ)); return res; }
6644         ~CResult_ReplyShortChannelIdsEndDecodeErrorZ() { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); }
6645         CResult_ReplyShortChannelIdsEndDecodeErrorZ& operator=(CResult_ReplyShortChannelIdsEndDecodeErrorZ&& o) { CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ReplyShortChannelIdsEndDecodeErrorZ)); return *this; }
6646         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() { return &self; }
6647         LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() { return &self; }
6648         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator &() const { return &self; }
6649         const LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* operator ->() const { return &self; }
6650 };
6651 class CResult_RouteDecodeErrorZ {
6652 private:
6653         LDKCResult_RouteDecodeErrorZ self;
6654 public:
6655         CResult_RouteDecodeErrorZ(const CResult_RouteDecodeErrorZ&) = delete;
6656         CResult_RouteDecodeErrorZ(CResult_RouteDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); }
6657         CResult_RouteDecodeErrorZ(LDKCResult_RouteDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); }
6658         operator LDKCResult_RouteDecodeErrorZ() && { LDKCResult_RouteDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_RouteDecodeErrorZ)); return res; }
6659         ~CResult_RouteDecodeErrorZ() { CResult_RouteDecodeErrorZ_free(self); }
6660         CResult_RouteDecodeErrorZ& operator=(CResult_RouteDecodeErrorZ&& o) { CResult_RouteDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_RouteDecodeErrorZ)); return *this; }
6661         LDKCResult_RouteDecodeErrorZ* operator &() { return &self; }
6662         LDKCResult_RouteDecodeErrorZ* operator ->() { return &self; }
6663         const LDKCResult_RouteDecodeErrorZ* operator &() const { return &self; }
6664         const LDKCResult_RouteDecodeErrorZ* operator ->() const { return &self; }
6665 };
6666 class CResult_BuiltCommitmentTransactionDecodeErrorZ {
6667 private:
6668         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ self;
6669 public:
6670         CResult_BuiltCommitmentTransactionDecodeErrorZ(const CResult_BuiltCommitmentTransactionDecodeErrorZ&) = delete;
6671         CResult_BuiltCommitmentTransactionDecodeErrorZ(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6672         CResult_BuiltCommitmentTransactionDecodeErrorZ(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); }
6673         operator LDKCResult_BuiltCommitmentTransactionDecodeErrorZ() && { LDKCResult_BuiltCommitmentTransactionDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ)); return res; }
6674         ~CResult_BuiltCommitmentTransactionDecodeErrorZ() { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); }
6675         CResult_BuiltCommitmentTransactionDecodeErrorZ& operator=(CResult_BuiltCommitmentTransactionDecodeErrorZ&& o) { CResult_BuiltCommitmentTransactionDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_BuiltCommitmentTransactionDecodeErrorZ)); return *this; }
6676         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() { return &self; }
6677         LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() { return &self; }
6678         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator &() const { return &self; }
6679         const LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* operator ->() const { return &self; }
6680 };
6681 class COption_NoneZ {
6682 private:
6683         LDKCOption_NoneZ self;
6684 public:
6685         COption_NoneZ(const COption_NoneZ&) = delete;
6686         COption_NoneZ(COption_NoneZ&& o) : self(o.self) { memset(&o, 0, sizeof(COption_NoneZ)); }
6687         COption_NoneZ(LDKCOption_NoneZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCOption_NoneZ)); }
6688         operator LDKCOption_NoneZ() && { LDKCOption_NoneZ res = self; memset(&self, 0, sizeof(LDKCOption_NoneZ)); return res; }
6689         ~COption_NoneZ() { COption_NoneZ_free(self); }
6690         COption_NoneZ& operator=(COption_NoneZ&& o) { COption_NoneZ_free(self); self = o.self; memset(&o, 0, sizeof(COption_NoneZ)); return *this; }
6691         LDKCOption_NoneZ* operator &() { return &self; }
6692         LDKCOption_NoneZ* operator ->() { return &self; }
6693         const LDKCOption_NoneZ* operator &() const { return &self; }
6694         const LDKCOption_NoneZ* operator ->() const { return &self; }
6695 };
6696 class CVec_TxOutZ {
6697 private:
6698         LDKCVec_TxOutZ self;
6699 public:
6700         CVec_TxOutZ(const CVec_TxOutZ&) = delete;
6701         CVec_TxOutZ(CVec_TxOutZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_TxOutZ)); }
6702         CVec_TxOutZ(LDKCVec_TxOutZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_TxOutZ)); }
6703         operator LDKCVec_TxOutZ() && { LDKCVec_TxOutZ res = self; memset(&self, 0, sizeof(LDKCVec_TxOutZ)); return res; }
6704         ~CVec_TxOutZ() { CVec_TxOutZ_free(self); }
6705         CVec_TxOutZ& operator=(CVec_TxOutZ&& o) { CVec_TxOutZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_TxOutZ)); return *this; }
6706         LDKCVec_TxOutZ* operator &() { return &self; }
6707         LDKCVec_TxOutZ* operator ->() { return &self; }
6708         const LDKCVec_TxOutZ* operator &() const { return &self; }
6709         const LDKCVec_TxOutZ* operator ->() const { return &self; }
6710 };
6711 class CResult_ProbabilisticScoringParametersDecodeErrorZ {
6712 private:
6713         LDKCResult_ProbabilisticScoringParametersDecodeErrorZ self;
6714 public:
6715         CResult_ProbabilisticScoringParametersDecodeErrorZ(const CResult_ProbabilisticScoringParametersDecodeErrorZ&) = delete;
6716         CResult_ProbabilisticScoringParametersDecodeErrorZ(CResult_ProbabilisticScoringParametersDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ProbabilisticScoringParametersDecodeErrorZ)); }
6717         CResult_ProbabilisticScoringParametersDecodeErrorZ(LDKCResult_ProbabilisticScoringParametersDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ProbabilisticScoringParametersDecodeErrorZ)); }
6718         operator LDKCResult_ProbabilisticScoringParametersDecodeErrorZ() && { LDKCResult_ProbabilisticScoringParametersDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ProbabilisticScoringParametersDecodeErrorZ)); return res; }
6719         ~CResult_ProbabilisticScoringParametersDecodeErrorZ() { CResult_ProbabilisticScoringParametersDecodeErrorZ_free(self); }
6720         CResult_ProbabilisticScoringParametersDecodeErrorZ& operator=(CResult_ProbabilisticScoringParametersDecodeErrorZ&& o) { CResult_ProbabilisticScoringParametersDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ProbabilisticScoringParametersDecodeErrorZ)); return *this; }
6721         LDKCResult_ProbabilisticScoringParametersDecodeErrorZ* operator &() { return &self; }
6722         LDKCResult_ProbabilisticScoringParametersDecodeErrorZ* operator ->() { return &self; }
6723         const LDKCResult_ProbabilisticScoringParametersDecodeErrorZ* operator &() const { return &self; }
6724         const LDKCResult_ProbabilisticScoringParametersDecodeErrorZ* operator ->() const { return &self; }
6725 };
6726 class CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
6727 private:
6728         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ self;
6729 public:
6730         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(const CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&) = delete;
6731         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6732         CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); }
6733         operator LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() && { LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ)); return res; }
6734         ~CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ() { CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(self); }
6735         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; }
6736         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() { return &self; }
6737         LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() { return &self; }
6738         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator &() const { return &self; }
6739         const LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* operator ->() const { return &self; }
6740 };
6741 class CResult_ChannelUpdateInfoDecodeErrorZ {
6742 private:
6743         LDKCResult_ChannelUpdateInfoDecodeErrorZ self;
6744 public:
6745         CResult_ChannelUpdateInfoDecodeErrorZ(const CResult_ChannelUpdateInfoDecodeErrorZ&) = delete;
6746         CResult_ChannelUpdateInfoDecodeErrorZ(CResult_ChannelUpdateInfoDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); }
6747         CResult_ChannelUpdateInfoDecodeErrorZ(LDKCResult_ChannelUpdateInfoDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); }
6748         operator LDKCResult_ChannelUpdateInfoDecodeErrorZ() && { LDKCResult_ChannelUpdateInfoDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_ChannelUpdateInfoDecodeErrorZ)); return res; }
6749         ~CResult_ChannelUpdateInfoDecodeErrorZ() { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); }
6750         CResult_ChannelUpdateInfoDecodeErrorZ& operator=(CResult_ChannelUpdateInfoDecodeErrorZ&& o) { CResult_ChannelUpdateInfoDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_ChannelUpdateInfoDecodeErrorZ)); return *this; }
6751         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() { return &self; }
6752         LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() { return &self; }
6753         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator &() const { return &self; }
6754         const LDKCResult_ChannelUpdateInfoDecodeErrorZ* operator ->() const { return &self; }
6755 };
6756 class CVec_UpdateFailHTLCZ {
6757 private:
6758         LDKCVec_UpdateFailHTLCZ self;
6759 public:
6760         CVec_UpdateFailHTLCZ(const CVec_UpdateFailHTLCZ&) = delete;
6761         CVec_UpdateFailHTLCZ(CVec_UpdateFailHTLCZ&& o) : self(o.self) { memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); }
6762         CVec_UpdateFailHTLCZ(LDKCVec_UpdateFailHTLCZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); }
6763         operator LDKCVec_UpdateFailHTLCZ() && { LDKCVec_UpdateFailHTLCZ res = self; memset(&self, 0, sizeof(LDKCVec_UpdateFailHTLCZ)); return res; }
6764         ~CVec_UpdateFailHTLCZ() { CVec_UpdateFailHTLCZ_free(self); }
6765         CVec_UpdateFailHTLCZ& operator=(CVec_UpdateFailHTLCZ&& o) { CVec_UpdateFailHTLCZ_free(self); self = o.self; memset(&o, 0, sizeof(CVec_UpdateFailHTLCZ)); return *this; }
6766         LDKCVec_UpdateFailHTLCZ* operator &() { return &self; }
6767         LDKCVec_UpdateFailHTLCZ* operator ->() { return &self; }
6768         const LDKCVec_UpdateFailHTLCZ* operator &() const { return &self; }
6769         const LDKCVec_UpdateFailHTLCZ* operator ->() const { return &self; }
6770 };
6771 class CResult_FundingLockedDecodeErrorZ {
6772 private:
6773         LDKCResult_FundingLockedDecodeErrorZ self;
6774 public:
6775         CResult_FundingLockedDecodeErrorZ(const CResult_FundingLockedDecodeErrorZ&) = delete;
6776         CResult_FundingLockedDecodeErrorZ(CResult_FundingLockedDecodeErrorZ&& o) : self(o.self) { memset(&o, 0, sizeof(CResult_FundingLockedDecodeErrorZ)); }
6777         CResult_FundingLockedDecodeErrorZ(LDKCResult_FundingLockedDecodeErrorZ&& m_self) : self(m_self) { memset(&m_self, 0, sizeof(LDKCResult_FundingLockedDecodeErrorZ)); }
6778         operator LDKCResult_FundingLockedDecodeErrorZ() && { LDKCResult_FundingLockedDecodeErrorZ res = self; memset(&self, 0, sizeof(LDKCResult_FundingLockedDecodeErrorZ)); return res; }
6779         ~CResult_FundingLockedDecodeErrorZ() { CResult_FundingLockedDecodeErrorZ_free(self); }
6780         CResult_FundingLockedDecodeErrorZ& operator=(CResult_FundingLockedDecodeErrorZ&& o) { CResult_FundingLockedDecodeErrorZ_free(self); self = o.self; memset(&o, 0, sizeof(CResult_FundingLockedDecodeErrorZ)); return *this; }
6781         LDKCResult_FundingLockedDecodeErrorZ* operator &() { return &self; }
6782         LDKCResult_FundingLockedDecodeErrorZ* operator ->() { return &self; }
6783         const LDKCResult_FundingLockedDecodeErrorZ* operator &() const { return &self; }
6784         const LDKCResult_FundingLockedDecodeErrorZ* operator ->() const { return &self; }
6785 };
6786
6787 inline LDK::CResult_NoneErrorZ ChannelManagerPersister::persist_manager(const struct LDKChannelManager *NONNULL_PTR channel_manager) {
6788         LDK::CResult_NoneErrorZ ret = (self.persist_manager)(self.this_arg, channel_manager);
6789         return ret;
6790 }
6791 inline void BroadcasterInterface::broadcast_transaction(struct LDKTransaction tx) {
6792         (self.broadcast_transaction)(self.this_arg, tx);
6793 }
6794 inline uint32_t FeeEstimator::get_est_sat_per_1000_weight(enum LDKConfirmationTarget confirmation_target) {
6795         uint32_t ret = (self.get_est_sat_per_1000_weight)(self.this_arg, confirmation_target);
6796         return ret;
6797 }
6798 inline LDK::CResult_TxOutAccessErrorZ Access::get_utxo(const uint8_t (*genesis_hash)[32], uint64_t short_channel_id) {
6799         LDK::CResult_TxOutAccessErrorZ ret = (self.get_utxo)(self.this_arg, genesis_hash, short_channel_id);
6800         return ret;
6801 }
6802 inline void Listen::block_connected(struct LDKu8slice block, uint32_t height) {
6803         (self.block_connected)(self.this_arg, block, height);
6804 }
6805 inline void Listen::block_disconnected(const uint8_t (*header)[80], uint32_t height) {
6806         (self.block_disconnected)(self.this_arg, header, height);
6807 }
6808 inline void Confirm::transactions_confirmed(const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
6809         (self.transactions_confirmed)(self.this_arg, header, txdata, height);
6810 }
6811 inline void Confirm::transaction_unconfirmed(const uint8_t (*txid)[32]) {
6812         (self.transaction_unconfirmed)(self.this_arg, txid);
6813 }
6814 inline void Confirm::best_block_updated(const uint8_t (*header)[80], uint32_t height) {
6815         (self.best_block_updated)(self.this_arg, header, height);
6816 }
6817 inline LDK::CVec_TxidZ Confirm::get_relevant_txids() {
6818         LDK::CVec_TxidZ ret = (self.get_relevant_txids)(self.this_arg);
6819         return ret;
6820 }
6821 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::watch_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor) {
6822         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.watch_channel)(self.this_arg, funding_txo, monitor);
6823         return ret;
6824 }
6825 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Watch::update_channel(struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update) {
6826         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_channel)(self.this_arg, funding_txo, update);
6827         return ret;
6828 }
6829 inline LDK::CVec_MonitorEventZ Watch::release_pending_monitor_events() {
6830         LDK::CVec_MonitorEventZ ret = (self.release_pending_monitor_events)(self.this_arg);
6831         return ret;
6832 }
6833 inline void Filter::register_tx(const uint8_t (*txid)[32], struct LDKu8slice script_pubkey) {
6834         (self.register_tx)(self.this_arg, txid, script_pubkey);
6835 }
6836 inline LDK::COption_C2Tuple_usizeTransactionZZ Filter::register_output(struct LDKWatchedOutput output) {
6837         LDK::COption_C2Tuple_usizeTransactionZZ ret = (self.register_output)(self.this_arg, output);
6838         return ret;
6839 }
6840 inline LDK::CVec_MessageSendEventZ MessageSendEventsProvider::get_and_clear_pending_msg_events() {
6841         LDK::CVec_MessageSendEventZ ret = (self.get_and_clear_pending_msg_events)(self.this_arg);
6842         return ret;
6843 }
6844 inline void EventsProvider::process_pending_events(struct LDKEventHandler handler) {
6845         (self.process_pending_events)(self.this_arg, handler);
6846 }
6847 inline void EventHandler::handle_event(const struct LDKEvent *NONNULL_PTR event) {
6848         (self.handle_event)(self.this_arg, event);
6849 }
6850 inline uint64_t Score::channel_penalty_msat(uint64_t short_channel_id, uint64_t send_amt_msat, uint64_t capacity_msat, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target) {
6851         uint64_t ret = (self.channel_penalty_msat)(self.this_arg, short_channel_id, send_amt_msat, capacity_msat, source, target);
6852         return ret;
6853 }
6854 inline void Score::payment_path_failed(struct LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
6855         (self.payment_path_failed)(self.this_arg, path, short_channel_id);
6856 }
6857 inline void Score::payment_path_successful(struct LDKCVec_RouteHopZ path) {
6858         (self.payment_path_successful)(self.this_arg, path);
6859 }
6860 inline LDK::Score LockableScore::lock() {
6861         LDK::Score ret = (self.lock)(self.this_arg);
6862         return ret;
6863 }
6864 inline LDKPublicKey BaseSign::get_per_commitment_point(uint64_t idx) {
6865         LDKPublicKey ret = (self.get_per_commitment_point)(self.this_arg, idx);
6866         return ret;
6867 }
6868 inline LDKThirtyTwoBytes BaseSign::release_commitment_secret(uint64_t idx) {
6869         LDKThirtyTwoBytes ret = (self.release_commitment_secret)(self.this_arg, idx);
6870         return ret;
6871 }
6872 inline LDK::CResult_NoneNoneZ BaseSign::validate_holder_commitment(const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages) {
6873         LDK::CResult_NoneNoneZ ret = (self.validate_holder_commitment)(self.this_arg, holder_tx, preimages);
6874         return ret;
6875 }
6876 inline LDKThirtyTwoBytes BaseSign::channel_keys_id() {
6877         LDKThirtyTwoBytes ret = (self.channel_keys_id)(self.this_arg);
6878         return ret;
6879 }
6880 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_counterparty_commitment(const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages) {
6881         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_counterparty_commitment)(self.this_arg, commitment_tx, preimages);
6882         return ret;
6883 }
6884 inline LDK::CResult_NoneNoneZ BaseSign::validate_counterparty_revocation(uint64_t idx, const uint8_t (*secret)[32]) {
6885         LDK::CResult_NoneNoneZ ret = (self.validate_counterparty_revocation)(self.this_arg, idx, secret);
6886         return ret;
6887 }
6888 inline LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign::sign_holder_commitment_and_htlcs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx) {
6889         LDK::CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = (self.sign_holder_commitment_and_htlcs)(self.this_arg, commitment_tx);
6890         return ret;
6891 }
6892 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]) {
6893         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_output)(self.this_arg, justice_tx, input, amount, per_commitment_key);
6894         return ret;
6895 }
6896 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) {
6897         LDK::CResult_SignatureNoneZ ret = (self.sign_justice_revoked_htlc)(self.this_arg, justice_tx, input, amount, per_commitment_key, htlc);
6898         return ret;
6899 }
6900 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) {
6901         LDK::CResult_SignatureNoneZ ret = (self.sign_counterparty_htlc_transaction)(self.this_arg, htlc_tx, input, amount, per_commitment_point, htlc);
6902         return ret;
6903 }
6904 inline LDK::CResult_SignatureNoneZ BaseSign::sign_closing_transaction(const struct LDKClosingTransaction *NONNULL_PTR closing_tx) {
6905         LDK::CResult_SignatureNoneZ ret = (self.sign_closing_transaction)(self.this_arg, closing_tx);
6906         return ret;
6907 }
6908 inline LDK::CResult_C2Tuple_SignatureSignatureZNoneZ BaseSign::sign_channel_announcement(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg) {
6909         LDK::CResult_C2Tuple_SignatureSignatureZNoneZ ret = (self.sign_channel_announcement)(self.this_arg, msg);
6910         return ret;
6911 }
6912 inline void BaseSign::ready_channel(const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters) {
6913         (self.ready_channel)(self.this_arg, channel_parameters);
6914 }
6915 inline LDK::CResult_SecretKeyNoneZ KeysInterface::get_node_secret(enum LDKRecipient recipient) {
6916         LDK::CResult_SecretKeyNoneZ ret = (self.get_node_secret)(self.this_arg, recipient);
6917         return ret;
6918 }
6919 inline LDK::CVec_u8Z KeysInterface::get_destination_script() {
6920         LDK::CVec_u8Z ret = (self.get_destination_script)(self.this_arg);
6921         return ret;
6922 }
6923 inline LDK::ShutdownScript KeysInterface::get_shutdown_scriptpubkey() {
6924         LDK::ShutdownScript ret = (self.get_shutdown_scriptpubkey)(self.this_arg);
6925         return ret;
6926 }
6927 inline LDK::Sign KeysInterface::get_channel_signer(bool inbound, uint64_t channel_value_satoshis) {
6928         LDK::Sign ret = (self.get_channel_signer)(self.this_arg, inbound, channel_value_satoshis);
6929         return ret;
6930 }
6931 inline LDKThirtyTwoBytes KeysInterface::get_secure_random_bytes() {
6932         LDKThirtyTwoBytes ret = (self.get_secure_random_bytes)(self.this_arg);
6933         return ret;
6934 }
6935 inline LDK::CResult_SignDecodeErrorZ KeysInterface::read_chan_signer(struct LDKu8slice reader) {
6936         LDK::CResult_SignDecodeErrorZ ret = (self.read_chan_signer)(self.this_arg, reader);
6937         return ret;
6938 }
6939 inline LDK::CResult_RecoverableSignatureNoneZ KeysInterface::sign_invoice(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient) {
6940         LDK::CResult_RecoverableSignatureNoneZ ret = (self.sign_invoice)(self.this_arg, hrp_bytes, invoice_data, receipient);
6941         return ret;
6942 }
6943 inline LDKThirtyTwoBytes KeysInterface::get_inbound_payment_key_material() {
6944         LDKThirtyTwoBytes ret = (self.get_inbound_payment_key_material)(self.this_arg);
6945         return ret;
6946 }
6947 inline LDK::CResult_COption_TypeZDecodeErrorZ CustomMessageReader::read(uint16_t message_type, struct LDKu8slice buffer) {
6948         LDK::CResult_COption_TypeZDecodeErrorZ ret = (self.read)(self.this_arg, message_type, buffer);
6949         return ret;
6950 }
6951 inline uint16_t Type::type_id() {
6952         uint16_t ret = (self.type_id)(self.this_arg);
6953         return ret;
6954 }
6955 inline LDK::Str Type::debug_str() {
6956         LDK::Str ret = (self.debug_str)(self.this_arg);
6957         return ret;
6958 }
6959 inline LDKPublicKey Payer::node_id() {
6960         LDKPublicKey ret = (self.node_id)(self.this_arg);
6961         return ret;
6962 }
6963 inline LDK::CVec_ChannelDetailsZ Payer::first_hops() {
6964         LDK::CVec_ChannelDetailsZ ret = (self.first_hops)(self.this_arg);
6965         return ret;
6966 }
6967 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret) {
6968         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_payment)(self.this_arg, route, payment_hash, payment_secret);
6969         return ret;
6970 }
6971 inline LDK::CResult_PaymentIdPaymentSendFailureZ Payer::send_spontaneous_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage) {
6972         LDK::CResult_PaymentIdPaymentSendFailureZ ret = (self.send_spontaneous_payment)(self.this_arg, route, payment_preimage);
6973         return ret;
6974 }
6975 inline LDK::CResult_NonePaymentSendFailureZ Payer::retry_payment(const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id) {
6976         LDK::CResult_NonePaymentSendFailureZ ret = (self.retry_payment)(self.this_arg, route, payment_id);
6977         return ret;
6978 }
6979 inline void Payer::abandon_payment(struct LDKThirtyTwoBytes payment_id) {
6980         (self.abandon_payment)(self.this_arg, payment_id);
6981 }
6982 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) {
6983         LDK::CResult_RouteLightningErrorZ ret = (self.find_route)(self.this_arg, payer, route_params, payment_hash, first_hops, scorer);
6984         return ret;
6985 }
6986 inline LDK::CResult_NoneLightningErrorZ CustomMessageHandler::handle_custom_message(struct LDKType msg, struct LDKPublicKey sender_node_id) {
6987         LDK::CResult_NoneLightningErrorZ ret = (self.handle_custom_message)(self.this_arg, msg, sender_node_id);
6988         return ret;
6989 }
6990 inline LDK::CVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler::get_and_clear_pending_msg() {
6991         LDK::CVec_C2Tuple_PublicKeyTypeZZ ret = (self.get_and_clear_pending_msg)(self.this_arg);
6992         return ret;
6993 }
6994 inline uintptr_t SocketDescriptor::send_data(struct LDKu8slice data, bool resume_read) {
6995         uintptr_t ret = (self.send_data)(self.this_arg, data, resume_read);
6996         return ret;
6997 }
6998 inline void SocketDescriptor::disconnect_socket() {
6999         (self.disconnect_socket)(self.this_arg);
7000 }
7001 inline bool SocketDescriptor::eq(const struct LDKSocketDescriptor *NONNULL_PTR other_arg) {
7002         bool ret = (self.eq)(self.this_arg, other_arg);
7003         return ret;
7004 }
7005 inline uint64_t SocketDescriptor::hash() {
7006         uint64_t ret = (self.hash)(self.this_arg);
7007         return ret;
7008 }
7009 inline void ChannelMessageHandler::handle_open_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg) {
7010         (self.handle_open_channel)(self.this_arg, their_node_id, their_features, msg);
7011 }
7012 inline void ChannelMessageHandler::handle_accept_channel(struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg) {
7013         (self.handle_accept_channel)(self.this_arg, their_node_id, their_features, msg);
7014 }
7015 inline void ChannelMessageHandler::handle_funding_created(struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg) {
7016         (self.handle_funding_created)(self.this_arg, their_node_id, msg);
7017 }
7018 inline void ChannelMessageHandler::handle_funding_signed(struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg) {
7019         (self.handle_funding_signed)(self.this_arg, their_node_id, msg);
7020 }
7021 inline void ChannelMessageHandler::handle_funding_locked(struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg) {
7022         (self.handle_funding_locked)(self.this_arg, their_node_id, msg);
7023 }
7024 inline void ChannelMessageHandler::handle_shutdown(struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg) {
7025         (self.handle_shutdown)(self.this_arg, their_node_id, their_features, msg);
7026 }
7027 inline void ChannelMessageHandler::handle_closing_signed(struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg) {
7028         (self.handle_closing_signed)(self.this_arg, their_node_id, msg);
7029 }
7030 inline void ChannelMessageHandler::handle_update_add_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg) {
7031         (self.handle_update_add_htlc)(self.this_arg, their_node_id, msg);
7032 }
7033 inline void ChannelMessageHandler::handle_update_fulfill_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg) {
7034         (self.handle_update_fulfill_htlc)(self.this_arg, their_node_id, msg);
7035 }
7036 inline void ChannelMessageHandler::handle_update_fail_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg) {
7037         (self.handle_update_fail_htlc)(self.this_arg, their_node_id, msg);
7038 }
7039 inline void ChannelMessageHandler::handle_update_fail_malformed_htlc(struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg) {
7040         (self.handle_update_fail_malformed_htlc)(self.this_arg, their_node_id, msg);
7041 }
7042 inline void ChannelMessageHandler::handle_commitment_signed(struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg) {
7043         (self.handle_commitment_signed)(self.this_arg, their_node_id, msg);
7044 }
7045 inline void ChannelMessageHandler::handle_revoke_and_ack(struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg) {
7046         (self.handle_revoke_and_ack)(self.this_arg, their_node_id, msg);
7047 }
7048 inline void ChannelMessageHandler::handle_update_fee(struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg) {
7049         (self.handle_update_fee)(self.this_arg, their_node_id, msg);
7050 }
7051 inline void ChannelMessageHandler::handle_announcement_signatures(struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg) {
7052         (self.handle_announcement_signatures)(self.this_arg, their_node_id, msg);
7053 }
7054 inline void ChannelMessageHandler::peer_disconnected(struct LDKPublicKey their_node_id, bool no_connection_possible) {
7055         (self.peer_disconnected)(self.this_arg, their_node_id, no_connection_possible);
7056 }
7057 inline void ChannelMessageHandler::peer_connected(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg) {
7058         (self.peer_connected)(self.this_arg, their_node_id, msg);
7059 }
7060 inline void ChannelMessageHandler::handle_channel_reestablish(struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg) {
7061         (self.handle_channel_reestablish)(self.this_arg, their_node_id, msg);
7062 }
7063 inline void ChannelMessageHandler::handle_channel_update(struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg) {
7064         (self.handle_channel_update)(self.this_arg, their_node_id, msg);
7065 }
7066 inline void ChannelMessageHandler::handle_error(struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg) {
7067         (self.handle_error)(self.this_arg, their_node_id, msg);
7068 }
7069 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_node_announcement(const struct LDKNodeAnnouncement *NONNULL_PTR msg) {
7070         LDK::CResult_boolLightningErrorZ ret = (self.handle_node_announcement)(self.this_arg, msg);
7071         return ret;
7072 }
7073 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_announcement(const struct LDKChannelAnnouncement *NONNULL_PTR msg) {
7074         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_announcement)(self.this_arg, msg);
7075         return ret;
7076 }
7077 inline LDK::CResult_boolLightningErrorZ RoutingMessageHandler::handle_channel_update(const struct LDKChannelUpdate *NONNULL_PTR msg) {
7078         LDK::CResult_boolLightningErrorZ ret = (self.handle_channel_update)(self.this_arg, msg);
7079         return ret;
7080 }
7081 inline LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler::get_next_channel_announcements(uint64_t starting_point, uint8_t batch_amount) {
7082         LDK::CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = (self.get_next_channel_announcements)(self.this_arg, starting_point, batch_amount);
7083         return ret;
7084 }
7085 inline LDK::CVec_NodeAnnouncementZ RoutingMessageHandler::get_next_node_announcements(struct LDKPublicKey starting_point, uint8_t batch_amount) {
7086         LDK::CVec_NodeAnnouncementZ ret = (self.get_next_node_announcements)(self.this_arg, starting_point, batch_amount);
7087         return ret;
7088 }
7089 inline void RoutingMessageHandler::sync_routing_table(struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init) {
7090         (self.sync_routing_table)(self.this_arg, their_node_id, init);
7091 }
7092 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_channel_range(struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg) {
7093         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_channel_range)(self.this_arg, their_node_id, msg);
7094         return ret;
7095 }
7096 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_reply_short_channel_ids_end(struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg) {
7097         LDK::CResult_NoneLightningErrorZ ret = (self.handle_reply_short_channel_ids_end)(self.this_arg, their_node_id, msg);
7098         return ret;
7099 }
7100 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_channel_range(struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg) {
7101         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_channel_range)(self.this_arg, their_node_id, msg);
7102         return ret;
7103 }
7104 inline LDK::CResult_NoneLightningErrorZ RoutingMessageHandler::handle_query_short_channel_ids(struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg) {
7105         LDK::CResult_NoneLightningErrorZ ret = (self.handle_query_short_channel_ids)(self.this_arg, their_node_id, msg);
7106         return ret;
7107 }
7108 inline void Logger::log(const struct LDKRecord *NONNULL_PTR record) {
7109         (self.log)(self.this_arg, record);
7110 }
7111 inline LDK::CResult_NoneChannelMonitorUpdateErrZ Persist::persist_new_channel(struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id) {
7112         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.persist_new_channel)(self.this_arg, channel_id, data, update_id);
7113         return ret;
7114 }
7115 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) {
7116         LDK::CResult_NoneChannelMonitorUpdateErrZ ret = (self.update_persisted_channel)(self.this_arg, channel_id, update, data, update_id);
7117         return ret;
7118 }
7119 }