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