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