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