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