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