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