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