Update auto-generated bindings with latest upstream + generator
[ldk-c-bindings] / lightning-c-bindings / include / lightning.h
1 /* Text to put at the beginning of the generated file. Probably a license. */
2
3 /* Generated with cbindgen:0.16.0 */
4
5 /* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */
6
7 #include <stdarg.h>
8 #include <stdbool.h>
9 #include <stdint.h>
10
11
12 /**
13  * An error when accessing the chain via [`Access`].
14  */
15 typedef enum LDKAccessError {
16    /**
17     * The requested chain is unknown.
18     */
19    LDKAccessError_UnknownChain,
20    /**
21     * The requested transaction doesn't exist or hasn't confirmed.
22     */
23    LDKAccessError_UnknownTx,
24    /**
25     * Must be last for serialization purposes
26     */
27    LDKAccessError_Sentinel,
28 } LDKAccessError;
29
30 /**
31  * An error enum representing a failure to persist a channel monitor update.
32  */
33 typedef enum LDKChannelMonitorUpdateErr {
34    /**
35     * Used to indicate a temporary failure (eg connection to a watchtower or remote backup of
36     * our state failed, but is expected to succeed at some point in the future).
37     *
38     * Such a failure will \"freeze\" a channel, preventing us from revoking old states or
39     * submitting new commitment transactions to the counterparty. Once the update(s) which failed
40     * have been successfully applied, ChannelManager::channel_monitor_updated can be used to
41     * restore the channel to an operational state.
42     *
43     * Note that a given ChannelManager will *never* re-generate a given ChannelMonitorUpdate. If
44     * you return a TemporaryFailure you must ensure that it is written to disk safely before
45     * writing out the latest ChannelManager state.
46     *
47     * Even when a channel has been \"frozen\" updates to the ChannelMonitor can continue to occur
48     * (eg if an inbound HTLC which we forwarded was claimed upstream resulting in us attempting
49     * to claim it on this channel) and those updates must be applied wherever they can be. At
50     * least one such updated ChannelMonitor must be persisted otherwise PermanentFailure should
51     * be returned to get things on-chain ASAP using only the in-memory copy. Obviously updates to
52     * the channel which would invalidate previous ChannelMonitors are not made when a channel has
53     * been \"frozen\".
54     *
55     * Note that even if updates made after TemporaryFailure succeed you must still call
56     * channel_monitor_updated to ensure you have the latest monitor and re-enable normal channel
57     * operation.
58     *
59     * Note that the update being processed here will not be replayed for you when you call
60     * ChannelManager::channel_monitor_updated, so you must store the update itself along
61     * with the persisted ChannelMonitor on your own local disk prior to returning a
62     * TemporaryFailure. You may, of course, employ a journaling approach, storing only the
63     * ChannelMonitorUpdate on disk without updating the monitor itself, replaying the journal at
64     * reload-time.
65     *
66     * For deployments where a copy of ChannelMonitors and other local state are backed up in a
67     * remote location (with local copies persisted immediately), it is anticipated that all
68     * updates will return TemporaryFailure until the remote copies could be updated.
69     */
70    LDKChannelMonitorUpdateErr_TemporaryFailure,
71    /**
72     * Used to indicate no further channel monitor updates will be allowed (eg we've moved on to a
73     * different watchtower and cannot update with all watchtowers that were previously informed
74     * of this channel).
75     *
76     * At reception of this error, ChannelManager will force-close the channel and return at
77     * least a final ChannelMonitorUpdate::ChannelForceClosed which must be delivered to at
78     * least one ChannelMonitor copy. Revocation secret MUST NOT be released and offchain channel
79     * update must be rejected.
80     *
81     * This failure may also signal a failure to update the local persisted copy of one of
82     * the channel monitor instance.
83     *
84     * Note that even when you fail a holder commitment transaction update, you must store the
85     * update to ensure you can claim from it in case of a duplicate copy of this ChannelMonitor
86     * broadcasts it (e.g distributed channel-monitor deployment)
87     *
88     * In case of distributed watchtowers deployment, the new version must be written to disk, as
89     * state may have been stored but rejected due to a block forcing a commitment broadcast. This
90     * storage is used to claim outputs of rejected state confirmed onchain by another watchtower,
91     * lagging behind on block processing.
92     */
93    LDKChannelMonitorUpdateErr_PermanentFailure,
94    /**
95     * Must be last for serialization purposes
96     */
97    LDKChannelMonitorUpdateErr_Sentinel,
98 } LDKChannelMonitorUpdateErr;
99
100 /**
101  * An enum that represents the speed at which we want a transaction to confirm used for feerate
102  * estimation.
103  */
104 typedef enum LDKConfirmationTarget {
105    /**
106     * We are happy with this transaction confirming slowly when feerate drops some.
107     */
108    LDKConfirmationTarget_Background,
109    /**
110     * We'd like this transaction to confirm without major delay, but 12-18 blocks is fine.
111     */
112    LDKConfirmationTarget_Normal,
113    /**
114     * We'd like this transaction to confirm in the next few blocks.
115     */
116    LDKConfirmationTarget_HighPriority,
117    /**
118     * Must be last for serialization purposes
119     */
120    LDKConfirmationTarget_Sentinel,
121 } LDKConfirmationTarget;
122
123 /**
124  * An enum representing the available verbosity levels of the logger.
125  */
126 typedef enum LDKLevel {
127    /**
128     *Designates logger being silent
129     */
130    LDKLevel_Off,
131    /**
132     * Designates very serious errors
133     */
134    LDKLevel_Error,
135    /**
136     * Designates hazardous situations
137     */
138    LDKLevel_Warn,
139    /**
140     * Designates useful information
141     */
142    LDKLevel_Info,
143    /**
144     * Designates lower priority information
145     */
146    LDKLevel_Debug,
147    /**
148     * Designates very low priority, often extremely verbose, information
149     */
150    LDKLevel_Trace,
151    /**
152     * Must be last for serialization purposes
153     */
154    LDKLevel_Sentinel,
155 } LDKLevel;
156
157 /**
158  * An enum representing the possible Bitcoin or test networks which we can run on
159  */
160 typedef enum LDKNetwork {
161    /**
162     * The main Bitcoin blockchain.
163     */
164    LDKNetwork_Bitcoin,
165    /**
166     * The testnet3 blockchain.
167     */
168    LDKNetwork_Testnet,
169    /**
170     * A local test blockchain.
171     */
172    LDKNetwork_Regtest,
173    /**
174     * A blockchain on which blocks are signed instead of mined.
175     */
176    LDKNetwork_Signet,
177    /**
178     * Must be last for serialization purposes
179     */
180    LDKNetwork_Sentinel,
181 } LDKNetwork;
182
183 /**
184  * Represents an error returned from libsecp256k1 during validation of some secp256k1 data
185  */
186 typedef enum LDKSecp256k1Error {
187    /**
188     * Signature failed verification
189     */
190    LDKSecp256k1Error_IncorrectSignature,
191    /**
192     * Badly sized message ("messages" are actually fixed-sized digests; see the MESSAGE_SIZE constant)
193     */
194    LDKSecp256k1Error_InvalidMessage,
195    /**
196     * Bad public key
197     */
198    LDKSecp256k1Error_InvalidPublicKey,
199    /**
200     * Bad signature
201     */
202    LDKSecp256k1Error_InvalidSignature,
203    /**
204     * Bad secret key
205     */
206    LDKSecp256k1Error_InvalidSecretKey,
207    /**
208     * Bad recovery id
209     */
210    LDKSecp256k1Error_InvalidRecoveryId,
211    /**
212     * Invalid tweak for add_assign or mul_assign
213     */
214    LDKSecp256k1Error_InvalidTweak,
215    /**
216     * tweak_add_check failed on an xonly public key
217     */
218    LDKSecp256k1Error_TweakCheckFailed,
219    /**
220     * Didn't pass enough memory to context creation with preallocated memory
221     */
222    LDKSecp256k1Error_NotEnoughMemory,
223    /**
224     * Must be last for serialization purposes
225     */
226    LDKSecp256k1Error_Sentinel,
227 } LDKSecp256k1Error;
228
229 /**
230  * A serialized transaction, in (pointer, length) form.
231  *
232  * This type optionally owns its own memory, and thus the semantics around access change based on
233  * the `data_is_owned` flag. If `data_is_owned` is set, you must call `Transaction_free` to free
234  * the underlying buffer before the object goes out of scope. If `data_is_owned` is not set, any
235  * access to the buffer after the scope in which the object was provided to you is invalid. eg,
236  * access after you return from the call in which a `!data_is_owned` `Transaction` is provided to
237  * you would be invalid.
238  *
239  * Note that, while it may change in the future, because transactions on the Rust side are stored
240  * in a deserialized form, all `Transaction`s generated on the Rust side will have `data_is_owned`
241  * set. Similarly, while it may change in the future, all `Transaction`s you pass to Rust may have
242  * `data_is_owned` either set or unset at your discretion.
243  */
244 typedef struct LDKTransaction {
245    /**
246     * The serialized transaction data.
247     *
248     * This is non-const for your convenience, an object passed to Rust is never written to.
249     */
250    uint8_t *data;
251    /**
252     * The length of the serialized transaction
253     */
254    uintptr_t datalen;
255    /**
256     * Whether the data pointed to by `data` should be freed or not.
257     */
258    bool data_is_owned;
259 } LDKTransaction;
260
261 /**
262  * A dynamically-allocated array of u8s of arbitrary size.
263  * This corresponds to std::vector in C++
264  */
265 typedef struct LDKCVec_u8Z {
266    /**
267     * The elements in the array.
268     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
269     */
270    uint8_t *data;
271    /**
272     * The number of elements pointed to by `data`.
273     */
274    uintptr_t datalen;
275 } LDKCVec_u8Z;
276
277 /**
278  * A transaction output including a scriptPubKey and value.
279  * This type *does* own its own memory, so must be free'd appropriately.
280  */
281 typedef struct LDKTxOut {
282    /**
283     * The script_pubkey in this output
284     */
285    struct LDKCVec_u8Z script_pubkey;
286    /**
287     * The value, in satoshis, of this output
288     */
289    uint64_t value;
290 } LDKTxOut;
291
292 /**
293  * Represents a valid secp256k1 secret key serialized as a 32 byte array.
294  */
295 typedef struct LDKSecretKey {
296    /**
297     * The bytes of the secret key
298     */
299    uint8_t bytes[32];
300 } LDKSecretKey;
301
302 /**
303  * The contents of CResult_SecretKeyErrorZ
304  */
305 typedef union LDKCResult_SecretKeyErrorZPtr {
306    /**
307     * A pointer to the contents in the success state.
308     * Reading from this pointer when `result_ok` is not set is undefined.
309     */
310    struct LDKSecretKey *result;
311    /**
312     * A pointer to the contents in the error state.
313     * Reading from this pointer when `result_ok` is set is undefined.
314     */
315    enum LDKSecp256k1Error *err;
316 } LDKCResult_SecretKeyErrorZPtr;
317
318 /**
319  * A CResult_SecretKeyErrorZ represents the result of a fallible operation,
320  * containing a crate::c_types::SecretKey on success and a crate::c_types::Secp256k1Error on failure.
321  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
322  */
323 typedef struct LDKCResult_SecretKeyErrorZ {
324    /**
325     * The contents of this CResult_SecretKeyErrorZ, accessible via either
326     * `err` or `result` depending on the state of `result_ok`.
327     */
328    union LDKCResult_SecretKeyErrorZPtr contents;
329    /**
330     * Whether this CResult_SecretKeyErrorZ represents a success state.
331     */
332    bool result_ok;
333 } LDKCResult_SecretKeyErrorZ;
334
335 /**
336  * Represents a valid secp256k1 public key serialized in "compressed form" as a 33 byte array.
337  */
338 typedef struct LDKPublicKey {
339    /**
340     * The bytes of the public key
341     */
342    uint8_t compressed_form[33];
343 } LDKPublicKey;
344
345 /**
346  * The contents of CResult_PublicKeyErrorZ
347  */
348 typedef union LDKCResult_PublicKeyErrorZPtr {
349    /**
350     * A pointer to the contents in the success state.
351     * Reading from this pointer when `result_ok` is not set is undefined.
352     */
353    struct LDKPublicKey *result;
354    /**
355     * A pointer to the contents in the error state.
356     * Reading from this pointer when `result_ok` is set is undefined.
357     */
358    enum LDKSecp256k1Error *err;
359 } LDKCResult_PublicKeyErrorZPtr;
360
361 /**
362  * A CResult_PublicKeyErrorZ represents the result of a fallible operation,
363  * containing a crate::c_types::PublicKey on success and a crate::c_types::Secp256k1Error on failure.
364  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
365  */
366 typedef struct LDKCResult_PublicKeyErrorZ {
367    /**
368     * The contents of this CResult_PublicKeyErrorZ, accessible via either
369     * `err` or `result` depending on the state of `result_ok`.
370     */
371    union LDKCResult_PublicKeyErrorZPtr contents;
372    /**
373     * Whether this CResult_PublicKeyErrorZ represents a success state.
374     */
375    bool result_ok;
376 } LDKCResult_PublicKeyErrorZ;
377
378
379
380 /**
381  * The set of public keys which are used in the creation of one commitment transaction.
382  * These are derived from the channel base keys and per-commitment data.
383  *
384  * A broadcaster key is provided from potential broadcaster of the computed transaction.
385  * A countersignatory key is coming from a protocol participant unable to broadcast the
386  * transaction.
387  *
388  * These keys are assumed to be good, either because the code derived them from
389  * channel basepoints via the new function, or they were obtained via
390  * CommitmentTransaction.trust().keys() because we trusted the source of the
391  * pre-calculated keys.
392  */
393 typedef struct MUST_USE_STRUCT LDKTxCreationKeys {
394    /**
395     * A pointer to the opaque Rust object.
396     * Nearly everywhere, inner must be non-null, however in places where
397     * the Rust equivalent takes an Option, it may be set to null to indicate None.
398     */
399    LDKnativeTxCreationKeys *inner;
400    /**
401     * Indicates that this is the only struct which contains the same pointer.
402     * Rust functions which take ownership of an object provided via an argument require
403     * this to be true and invalidate the object pointed to by inner.
404     */
405    bool is_owned;
406 } LDKTxCreationKeys;
407
408
409
410 /**
411  * An error in decoding a message or struct.
412  */
413 typedef struct MUST_USE_STRUCT LDKDecodeError {
414    /**
415     * A pointer to the opaque Rust object.
416     * Nearly everywhere, inner must be non-null, however in places where
417     * the Rust equivalent takes an Option, it may be set to null to indicate None.
418     */
419    LDKnativeDecodeError *inner;
420    /**
421     * Indicates that this is the only struct which contains the same pointer.
422     * Rust functions which take ownership of an object provided via an argument require
423     * this to be true and invalidate the object pointed to by inner.
424     */
425    bool is_owned;
426 } LDKDecodeError;
427
428 /**
429  * The contents of CResult_TxCreationKeysDecodeErrorZ
430  */
431 typedef union LDKCResult_TxCreationKeysDecodeErrorZPtr {
432    /**
433     * A pointer to the contents in the success state.
434     * Reading from this pointer when `result_ok` is not set is undefined.
435     */
436    struct LDKTxCreationKeys *result;
437    /**
438     * A pointer to the contents in the error state.
439     * Reading from this pointer when `result_ok` is set is undefined.
440     */
441    struct LDKDecodeError *err;
442 } LDKCResult_TxCreationKeysDecodeErrorZPtr;
443
444 /**
445  * A CResult_TxCreationKeysDecodeErrorZ represents the result of a fallible operation,
446  * containing a crate::ln::chan_utils::TxCreationKeys on success and a crate::ln::msgs::DecodeError on failure.
447  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
448  */
449 typedef struct LDKCResult_TxCreationKeysDecodeErrorZ {
450    /**
451     * The contents of this CResult_TxCreationKeysDecodeErrorZ, accessible via either
452     * `err` or `result` depending on the state of `result_ok`.
453     */
454    union LDKCResult_TxCreationKeysDecodeErrorZPtr contents;
455    /**
456     * Whether this CResult_TxCreationKeysDecodeErrorZ represents a success state.
457     */
458    bool result_ok;
459 } LDKCResult_TxCreationKeysDecodeErrorZ;
460
461
462
463 /**
464  * One counterparty's public keys which do not change over the life of a channel.
465  */
466 typedef struct MUST_USE_STRUCT LDKChannelPublicKeys {
467    /**
468     * A pointer to the opaque Rust object.
469     * Nearly everywhere, inner must be non-null, however in places where
470     * the Rust equivalent takes an Option, it may be set to null to indicate None.
471     */
472    LDKnativeChannelPublicKeys *inner;
473    /**
474     * Indicates that this is the only struct which contains the same pointer.
475     * Rust functions which take ownership of an object provided via an argument require
476     * this to be true and invalidate the object pointed to by inner.
477     */
478    bool is_owned;
479 } LDKChannelPublicKeys;
480
481 /**
482  * The contents of CResult_ChannelPublicKeysDecodeErrorZ
483  */
484 typedef union LDKCResult_ChannelPublicKeysDecodeErrorZPtr {
485    /**
486     * A pointer to the contents in the success state.
487     * Reading from this pointer when `result_ok` is not set is undefined.
488     */
489    struct LDKChannelPublicKeys *result;
490    /**
491     * A pointer to the contents in the error state.
492     * Reading from this pointer when `result_ok` is set is undefined.
493     */
494    struct LDKDecodeError *err;
495 } LDKCResult_ChannelPublicKeysDecodeErrorZPtr;
496
497 /**
498  * A CResult_ChannelPublicKeysDecodeErrorZ represents the result of a fallible operation,
499  * containing a crate::ln::chan_utils::ChannelPublicKeys on success and a crate::ln::msgs::DecodeError on failure.
500  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
501  */
502 typedef struct LDKCResult_ChannelPublicKeysDecodeErrorZ {
503    /**
504     * The contents of this CResult_ChannelPublicKeysDecodeErrorZ, accessible via either
505     * `err` or `result` depending on the state of `result_ok`.
506     */
507    union LDKCResult_ChannelPublicKeysDecodeErrorZPtr contents;
508    /**
509     * Whether this CResult_ChannelPublicKeysDecodeErrorZ represents a success state.
510     */
511    bool result_ok;
512 } LDKCResult_ChannelPublicKeysDecodeErrorZ;
513
514 /**
515  * The contents of CResult_TxCreationKeysErrorZ
516  */
517 typedef union LDKCResult_TxCreationKeysErrorZPtr {
518    /**
519     * A pointer to the contents in the success state.
520     * Reading from this pointer when `result_ok` is not set is undefined.
521     */
522    struct LDKTxCreationKeys *result;
523    /**
524     * A pointer to the contents in the error state.
525     * Reading from this pointer when `result_ok` is set is undefined.
526     */
527    enum LDKSecp256k1Error *err;
528 } LDKCResult_TxCreationKeysErrorZPtr;
529
530 /**
531  * A CResult_TxCreationKeysErrorZ represents the result of a fallible operation,
532  * containing a crate::ln::chan_utils::TxCreationKeys on success and a crate::c_types::Secp256k1Error on failure.
533  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
534  */
535 typedef struct LDKCResult_TxCreationKeysErrorZ {
536    /**
537     * The contents of this CResult_TxCreationKeysErrorZ, accessible via either
538     * `err` or `result` depending on the state of `result_ok`.
539     */
540    union LDKCResult_TxCreationKeysErrorZPtr contents;
541    /**
542     * Whether this CResult_TxCreationKeysErrorZ represents a success state.
543     */
544    bool result_ok;
545 } LDKCResult_TxCreationKeysErrorZ;
546
547 /**
548  * An enum which can either contain a u32 or not
549  */
550 typedef enum LDKCOption_u32Z_Tag {
551    /**
552     * When we're in this state, this COption_u32Z contains a u32
553     */
554    LDKCOption_u32Z_Some,
555    /**
556     * When we're in this state, this COption_u32Z contains nothing
557     */
558    LDKCOption_u32Z_None,
559    /**
560     * Must be last for serialization purposes
561     */
562    LDKCOption_u32Z_Sentinel,
563 } LDKCOption_u32Z_Tag;
564
565 typedef struct LDKCOption_u32Z {
566    LDKCOption_u32Z_Tag tag;
567    union {
568       struct {
569          uint32_t some;
570       };
571    };
572 } LDKCOption_u32Z;
573
574
575
576 /**
577  * Information about an HTLC as it appears in a commitment transaction
578  */
579 typedef struct MUST_USE_STRUCT LDKHTLCOutputInCommitment {
580    /**
581     * A pointer to the opaque Rust object.
582     * Nearly everywhere, inner must be non-null, however in places where
583     * the Rust equivalent takes an Option, it may be set to null to indicate None.
584     */
585    LDKnativeHTLCOutputInCommitment *inner;
586    /**
587     * Indicates that this is the only struct which contains the same pointer.
588     * Rust functions which take ownership of an object provided via an argument require
589     * this to be true and invalidate the object pointed to by inner.
590     */
591    bool is_owned;
592 } LDKHTLCOutputInCommitment;
593
594 /**
595  * The contents of CResult_HTLCOutputInCommitmentDecodeErrorZ
596  */
597 typedef union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr {
598    /**
599     * A pointer to the contents in the success state.
600     * Reading from this pointer when `result_ok` is not set is undefined.
601     */
602    struct LDKHTLCOutputInCommitment *result;
603    /**
604     * A pointer to the contents in the error state.
605     * Reading from this pointer when `result_ok` is set is undefined.
606     */
607    struct LDKDecodeError *err;
608 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr;
609
610 /**
611  * A CResult_HTLCOutputInCommitmentDecodeErrorZ represents the result of a fallible operation,
612  * containing a crate::ln::chan_utils::HTLCOutputInCommitment on success and a crate::ln::msgs::DecodeError on failure.
613  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
614  */
615 typedef struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ {
616    /**
617     * The contents of this CResult_HTLCOutputInCommitmentDecodeErrorZ, accessible via either
618     * `err` or `result` depending on the state of `result_ok`.
619     */
620    union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr contents;
621    /**
622     * Whether this CResult_HTLCOutputInCommitmentDecodeErrorZ represents a success state.
623     */
624    bool result_ok;
625 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZ;
626
627
628
629 /**
630  * Late-bound per-channel counterparty data used to build transactions.
631  */
632 typedef struct MUST_USE_STRUCT LDKCounterpartyChannelTransactionParameters {
633    /**
634     * A pointer to the opaque Rust object.
635     * Nearly everywhere, inner must be non-null, however in places where
636     * the Rust equivalent takes an Option, it may be set to null to indicate None.
637     */
638    LDKnativeCounterpartyChannelTransactionParameters *inner;
639    /**
640     * Indicates that this is the only struct which contains the same pointer.
641     * Rust functions which take ownership of an object provided via an argument require
642     * this to be true and invalidate the object pointed to by inner.
643     */
644    bool is_owned;
645 } LDKCounterpartyChannelTransactionParameters;
646
647 /**
648  * The contents of CResult_CounterpartyChannelTransactionParametersDecodeErrorZ
649  */
650 typedef union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr {
651    /**
652     * A pointer to the contents in the success state.
653     * Reading from this pointer when `result_ok` is not set is undefined.
654     */
655    struct LDKCounterpartyChannelTransactionParameters *result;
656    /**
657     * A pointer to the contents in the error state.
658     * Reading from this pointer when `result_ok` is set is undefined.
659     */
660    struct LDKDecodeError *err;
661 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr;
662
663 /**
664  * A CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
665  * containing a crate::ln::chan_utils::CounterpartyChannelTransactionParameters on success and a crate::ln::msgs::DecodeError on failure.
666  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
667  */
668 typedef struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
669    /**
670     * The contents of this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ, accessible via either
671     * `err` or `result` depending on the state of `result_ok`.
672     */
673    union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr contents;
674    /**
675     * Whether this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents a success state.
676     */
677    bool result_ok;
678 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
679
680
681
682 /**
683  * Per-channel data used to build transactions in conjunction with the per-commitment data (CommitmentTransaction).
684  * The fields are organized by holder/counterparty.
685  *
686  * Normally, this is converted to the broadcaster/countersignatory-organized DirectedChannelTransactionParameters
687  * before use, via the as_holder_broadcastable and as_counterparty_broadcastable functions.
688  */
689 typedef struct MUST_USE_STRUCT LDKChannelTransactionParameters {
690    /**
691     * A pointer to the opaque Rust object.
692     * Nearly everywhere, inner must be non-null, however in places where
693     * the Rust equivalent takes an Option, it may be set to null to indicate None.
694     */
695    LDKnativeChannelTransactionParameters *inner;
696    /**
697     * Indicates that this is the only struct which contains the same pointer.
698     * Rust functions which take ownership of an object provided via an argument require
699     * this to be true and invalidate the object pointed to by inner.
700     */
701    bool is_owned;
702 } LDKChannelTransactionParameters;
703
704 /**
705  * The contents of CResult_ChannelTransactionParametersDecodeErrorZ
706  */
707 typedef union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr {
708    /**
709     * A pointer to the contents in the success state.
710     * Reading from this pointer when `result_ok` is not set is undefined.
711     */
712    struct LDKChannelTransactionParameters *result;
713    /**
714     * A pointer to the contents in the error state.
715     * Reading from this pointer when `result_ok` is set is undefined.
716     */
717    struct LDKDecodeError *err;
718 } LDKCResult_ChannelTransactionParametersDecodeErrorZPtr;
719
720 /**
721  * A CResult_ChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
722  * containing a crate::ln::chan_utils::ChannelTransactionParameters on success and a crate::ln::msgs::DecodeError on failure.
723  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
724  */
725 typedef struct LDKCResult_ChannelTransactionParametersDecodeErrorZ {
726    /**
727     * The contents of this CResult_ChannelTransactionParametersDecodeErrorZ, accessible via either
728     * `err` or `result` depending on the state of `result_ok`.
729     */
730    union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr contents;
731    /**
732     * Whether this CResult_ChannelTransactionParametersDecodeErrorZ represents a success state.
733     */
734    bool result_ok;
735 } LDKCResult_ChannelTransactionParametersDecodeErrorZ;
736
737 /**
738  * Represents a secp256k1 signature serialized as two 32-byte numbers
739  */
740 typedef struct LDKSignature {
741    /**
742     * The bytes of the signature in "compact" form
743     */
744    uint8_t compact_form[64];
745 } LDKSignature;
746
747 /**
748  * A dynamically-allocated array of crate::c_types::Signatures of arbitrary size.
749  * This corresponds to std::vector in C++
750  */
751 typedef struct LDKCVec_SignatureZ {
752    /**
753     * The elements in the array.
754     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
755     */
756    struct LDKSignature *data;
757    /**
758     * The number of elements pointed to by `data`.
759     */
760    uintptr_t datalen;
761 } LDKCVec_SignatureZ;
762
763
764
765 /**
766  * Information needed to build and sign a holder's commitment transaction.
767  *
768  * The transaction is only signed once we are ready to broadcast.
769  */
770 typedef struct MUST_USE_STRUCT LDKHolderCommitmentTransaction {
771    /**
772     * A pointer to the opaque Rust object.
773     * Nearly everywhere, inner must be non-null, however in places where
774     * the Rust equivalent takes an Option, it may be set to null to indicate None.
775     */
776    LDKnativeHolderCommitmentTransaction *inner;
777    /**
778     * Indicates that this is the only struct which contains the same pointer.
779     * Rust functions which take ownership of an object provided via an argument require
780     * this to be true and invalidate the object pointed to by inner.
781     */
782    bool is_owned;
783 } LDKHolderCommitmentTransaction;
784
785 /**
786  * The contents of CResult_HolderCommitmentTransactionDecodeErrorZ
787  */
788 typedef union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr {
789    /**
790     * A pointer to the contents in the success state.
791     * Reading from this pointer when `result_ok` is not set is undefined.
792     */
793    struct LDKHolderCommitmentTransaction *result;
794    /**
795     * A pointer to the contents in the error state.
796     * Reading from this pointer when `result_ok` is set is undefined.
797     */
798    struct LDKDecodeError *err;
799 } LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr;
800
801 /**
802  * A CResult_HolderCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
803  * containing a crate::ln::chan_utils::HolderCommitmentTransaction on success and a crate::ln::msgs::DecodeError on failure.
804  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
805  */
806 typedef struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ {
807    /**
808     * The contents of this CResult_HolderCommitmentTransactionDecodeErrorZ, accessible via either
809     * `err` or `result` depending on the state of `result_ok`.
810     */
811    union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr contents;
812    /**
813     * Whether this CResult_HolderCommitmentTransactionDecodeErrorZ represents a success state.
814     */
815    bool result_ok;
816 } LDKCResult_HolderCommitmentTransactionDecodeErrorZ;
817
818
819
820 /**
821  * A pre-built Bitcoin commitment transaction and its txid.
822  */
823 typedef struct MUST_USE_STRUCT LDKBuiltCommitmentTransaction {
824    /**
825     * A pointer to the opaque Rust object.
826     * Nearly everywhere, inner must be non-null, however in places where
827     * the Rust equivalent takes an Option, it may be set to null to indicate None.
828     */
829    LDKnativeBuiltCommitmentTransaction *inner;
830    /**
831     * Indicates that this is the only struct which contains the same pointer.
832     * Rust functions which take ownership of an object provided via an argument require
833     * this to be true and invalidate the object pointed to by inner.
834     */
835    bool is_owned;
836 } LDKBuiltCommitmentTransaction;
837
838 /**
839  * The contents of CResult_BuiltCommitmentTransactionDecodeErrorZ
840  */
841 typedef union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr {
842    /**
843     * A pointer to the contents in the success state.
844     * Reading from this pointer when `result_ok` is not set is undefined.
845     */
846    struct LDKBuiltCommitmentTransaction *result;
847    /**
848     * A pointer to the contents in the error state.
849     * Reading from this pointer when `result_ok` is set is undefined.
850     */
851    struct LDKDecodeError *err;
852 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr;
853
854 /**
855  * A CResult_BuiltCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
856  * containing a crate::ln::chan_utils::BuiltCommitmentTransaction on success and a crate::ln::msgs::DecodeError on failure.
857  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
858  */
859 typedef struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ {
860    /**
861     * The contents of this CResult_BuiltCommitmentTransactionDecodeErrorZ, accessible via either
862     * `err` or `result` depending on the state of `result_ok`.
863     */
864    union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr contents;
865    /**
866     * Whether this CResult_BuiltCommitmentTransactionDecodeErrorZ represents a success state.
867     */
868    bool result_ok;
869 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZ;
870
871
872
873 /**
874  * This class tracks the per-transaction information needed to build a commitment transaction and to
875  * actually build it and sign.  It is used for holder transactions that we sign only when needed
876  * and for transactions we sign for the counterparty.
877  *
878  * This class can be used inside a signer implementation to generate a signature given the relevant
879  * secret key.
880  */
881 typedef struct MUST_USE_STRUCT LDKCommitmentTransaction {
882    /**
883     * A pointer to the opaque Rust object.
884     * Nearly everywhere, inner must be non-null, however in places where
885     * the Rust equivalent takes an Option, it may be set to null to indicate None.
886     */
887    LDKnativeCommitmentTransaction *inner;
888    /**
889     * Indicates that this is the only struct which contains the same pointer.
890     * Rust functions which take ownership of an object provided via an argument require
891     * this to be true and invalidate the object pointed to by inner.
892     */
893    bool is_owned;
894 } LDKCommitmentTransaction;
895
896 /**
897  * The contents of CResult_CommitmentTransactionDecodeErrorZ
898  */
899 typedef union LDKCResult_CommitmentTransactionDecodeErrorZPtr {
900    /**
901     * A pointer to the contents in the success state.
902     * Reading from this pointer when `result_ok` is not set is undefined.
903     */
904    struct LDKCommitmentTransaction *result;
905    /**
906     * A pointer to the contents in the error state.
907     * Reading from this pointer when `result_ok` is set is undefined.
908     */
909    struct LDKDecodeError *err;
910 } LDKCResult_CommitmentTransactionDecodeErrorZPtr;
911
912 /**
913  * A CResult_CommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
914  * containing a crate::ln::chan_utils::CommitmentTransaction on success and a crate::ln::msgs::DecodeError on failure.
915  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
916  */
917 typedef struct LDKCResult_CommitmentTransactionDecodeErrorZ {
918    /**
919     * The contents of this CResult_CommitmentTransactionDecodeErrorZ, accessible via either
920     * `err` or `result` depending on the state of `result_ok`.
921     */
922    union LDKCResult_CommitmentTransactionDecodeErrorZPtr contents;
923    /**
924     * Whether this CResult_CommitmentTransactionDecodeErrorZ represents a success state.
925     */
926    bool result_ok;
927 } LDKCResult_CommitmentTransactionDecodeErrorZ;
928
929
930
931 /**
932  * A wrapper on CommitmentTransaction indicating that the derived fields (the built bitcoin
933  * transaction and the transaction creation keys) are trusted.
934  *
935  * See trust() and verify() functions on CommitmentTransaction.
936  *
937  * This structure implements Deref.
938  */
939 typedef struct MUST_USE_STRUCT LDKTrustedCommitmentTransaction {
940    /**
941     * A pointer to the opaque Rust object.
942     * Nearly everywhere, inner must be non-null, however in places where
943     * the Rust equivalent takes an Option, it may be set to null to indicate None.
944     */
945    LDKnativeTrustedCommitmentTransaction *inner;
946    /**
947     * Indicates that this is the only struct which contains the same pointer.
948     * Rust functions which take ownership of an object provided via an argument require
949     * this to be true and invalidate the object pointed to by inner.
950     */
951    bool is_owned;
952 } LDKTrustedCommitmentTransaction;
953
954 /**
955  * The contents of CResult_TrustedCommitmentTransactionNoneZ
956  */
957 typedef union LDKCResult_TrustedCommitmentTransactionNoneZPtr {
958    /**
959     * A pointer to the contents in the success state.
960     * Reading from this pointer when `result_ok` is not set is undefined.
961     */
962    struct LDKTrustedCommitmentTransaction *result;
963    /**
964     * Note that this value is always NULL, as there are no contents in the Err variant
965     */
966    void *err;
967 } LDKCResult_TrustedCommitmentTransactionNoneZPtr;
968
969 /**
970  * A CResult_TrustedCommitmentTransactionNoneZ represents the result of a fallible operation,
971  * containing a crate::ln::chan_utils::TrustedCommitmentTransaction on success and a () on failure.
972  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
973  */
974 typedef struct LDKCResult_TrustedCommitmentTransactionNoneZ {
975    /**
976     * The contents of this CResult_TrustedCommitmentTransactionNoneZ, accessible via either
977     * `err` or `result` depending on the state of `result_ok`.
978     */
979    union LDKCResult_TrustedCommitmentTransactionNoneZPtr contents;
980    /**
981     * Whether this CResult_TrustedCommitmentTransactionNoneZ represents a success state.
982     */
983    bool result_ok;
984 } LDKCResult_TrustedCommitmentTransactionNoneZ;
985
986 /**
987  * The contents of CResult_CVec_SignatureZNoneZ
988  */
989 typedef union LDKCResult_CVec_SignatureZNoneZPtr {
990    /**
991     * A pointer to the contents in the success state.
992     * Reading from this pointer when `result_ok` is not set is undefined.
993     */
994    struct LDKCVec_SignatureZ *result;
995    /**
996     * Note that this value is always NULL, as there are no contents in the Err variant
997     */
998    void *err;
999 } LDKCResult_CVec_SignatureZNoneZPtr;
1000
1001 /**
1002  * A CResult_CVec_SignatureZNoneZ represents the result of a fallible operation,
1003  * containing a crate::c_types::derived::CVec_SignatureZ on success and a () on failure.
1004  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1005  */
1006 typedef struct LDKCResult_CVec_SignatureZNoneZ {
1007    /**
1008     * The contents of this CResult_CVec_SignatureZNoneZ, accessible via either
1009     * `err` or `result` depending on the state of `result_ok`.
1010     */
1011    union LDKCResult_CVec_SignatureZNoneZPtr contents;
1012    /**
1013     * Whether this CResult_CVec_SignatureZNoneZ represents a success state.
1014     */
1015    bool result_ok;
1016 } LDKCResult_CVec_SignatureZNoneZ;
1017
1018
1019
1020 /**
1021  * An accept_channel message to be sent or received from a peer
1022  */
1023 typedef struct MUST_USE_STRUCT LDKAcceptChannel {
1024    /**
1025     * A pointer to the opaque Rust object.
1026     * Nearly everywhere, inner must be non-null, however in places where
1027     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1028     */
1029    LDKnativeAcceptChannel *inner;
1030    /**
1031     * Indicates that this is the only struct which contains the same pointer.
1032     * Rust functions which take ownership of an object provided via an argument require
1033     * this to be true and invalidate the object pointed to by inner.
1034     */
1035    bool is_owned;
1036 } LDKAcceptChannel;
1037
1038
1039
1040 /**
1041  * An open_channel message to be sent or received from a peer
1042  */
1043 typedef struct MUST_USE_STRUCT LDKOpenChannel {
1044    /**
1045     * A pointer to the opaque Rust object.
1046     * Nearly everywhere, inner must be non-null, however in places where
1047     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1048     */
1049    LDKnativeOpenChannel *inner;
1050    /**
1051     * Indicates that this is the only struct which contains the same pointer.
1052     * Rust functions which take ownership of an object provided via an argument require
1053     * this to be true and invalidate the object pointed to by inner.
1054     */
1055    bool is_owned;
1056 } LDKOpenChannel;
1057
1058
1059
1060 /**
1061  * A funding_created message to be sent or received from a peer
1062  */
1063 typedef struct MUST_USE_STRUCT LDKFundingCreated {
1064    /**
1065     * A pointer to the opaque Rust object.
1066     * Nearly everywhere, inner must be non-null, however in places where
1067     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1068     */
1069    LDKnativeFundingCreated *inner;
1070    /**
1071     * Indicates that this is the only struct which contains the same pointer.
1072     * Rust functions which take ownership of an object provided via an argument require
1073     * this to be true and invalidate the object pointed to by inner.
1074     */
1075    bool is_owned;
1076 } LDKFundingCreated;
1077
1078
1079
1080 /**
1081  * A funding_signed message to be sent or received from a peer
1082  */
1083 typedef struct MUST_USE_STRUCT LDKFundingSigned {
1084    /**
1085     * A pointer to the opaque Rust object.
1086     * Nearly everywhere, inner must be non-null, however in places where
1087     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1088     */
1089    LDKnativeFundingSigned *inner;
1090    /**
1091     * Indicates that this is the only struct which contains the same pointer.
1092     * Rust functions which take ownership of an object provided via an argument require
1093     * this to be true and invalidate the object pointed to by inner.
1094     */
1095    bool is_owned;
1096 } LDKFundingSigned;
1097
1098
1099
1100 /**
1101  * A funding_locked message to be sent or received from a peer
1102  */
1103 typedef struct MUST_USE_STRUCT LDKFundingLocked {
1104    /**
1105     * A pointer to the opaque Rust object.
1106     * Nearly everywhere, inner must be non-null, however in places where
1107     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1108     */
1109    LDKnativeFundingLocked *inner;
1110    /**
1111     * Indicates that this is the only struct which contains the same pointer.
1112     * Rust functions which take ownership of an object provided via an argument require
1113     * this to be true and invalidate the object pointed to by inner.
1114     */
1115    bool is_owned;
1116 } LDKFundingLocked;
1117
1118
1119
1120 /**
1121  * An announcement_signatures message to be sent or received from a peer
1122  */
1123 typedef struct MUST_USE_STRUCT LDKAnnouncementSignatures {
1124    /**
1125     * A pointer to the opaque Rust object.
1126     * Nearly everywhere, inner must be non-null, however in places where
1127     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1128     */
1129    LDKnativeAnnouncementSignatures *inner;
1130    /**
1131     * Indicates that this is the only struct which contains the same pointer.
1132     * Rust functions which take ownership of an object provided via an argument require
1133     * this to be true and invalidate the object pointed to by inner.
1134     */
1135    bool is_owned;
1136 } LDKAnnouncementSignatures;
1137
1138
1139
1140 /**
1141  * Struct used to return values from revoke_and_ack messages, containing a bunch of commitment
1142  * transaction updates if they were pending.
1143  */
1144 typedef struct MUST_USE_STRUCT LDKCommitmentUpdate {
1145    /**
1146     * A pointer to the opaque Rust object.
1147     * Nearly everywhere, inner must be non-null, however in places where
1148     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1149     */
1150    LDKnativeCommitmentUpdate *inner;
1151    /**
1152     * Indicates that this is the only struct which contains the same pointer.
1153     * Rust functions which take ownership of an object provided via an argument require
1154     * this to be true and invalidate the object pointed to by inner.
1155     */
1156    bool is_owned;
1157 } LDKCommitmentUpdate;
1158
1159
1160
1161 /**
1162  * A revoke_and_ack message to be sent or received from a peer
1163  */
1164 typedef struct MUST_USE_STRUCT LDKRevokeAndACK {
1165    /**
1166     * A pointer to the opaque Rust object.
1167     * Nearly everywhere, inner must be non-null, however in places where
1168     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1169     */
1170    LDKnativeRevokeAndACK *inner;
1171    /**
1172     * Indicates that this is the only struct which contains the same pointer.
1173     * Rust functions which take ownership of an object provided via an argument require
1174     * this to be true and invalidate the object pointed to by inner.
1175     */
1176    bool is_owned;
1177 } LDKRevokeAndACK;
1178
1179
1180
1181 /**
1182  * A closing_signed message to be sent or received from a peer
1183  */
1184 typedef struct MUST_USE_STRUCT LDKClosingSigned {
1185    /**
1186     * A pointer to the opaque Rust object.
1187     * Nearly everywhere, inner must be non-null, however in places where
1188     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1189     */
1190    LDKnativeClosingSigned *inner;
1191    /**
1192     * Indicates that this is the only struct which contains the same pointer.
1193     * Rust functions which take ownership of an object provided via an argument require
1194     * this to be true and invalidate the object pointed to by inner.
1195     */
1196    bool is_owned;
1197 } LDKClosingSigned;
1198
1199
1200
1201 /**
1202  * A shutdown message to be sent or received from a peer
1203  */
1204 typedef struct MUST_USE_STRUCT LDKShutdown {
1205    /**
1206     * A pointer to the opaque Rust object.
1207     * Nearly everywhere, inner must be non-null, however in places where
1208     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1209     */
1210    LDKnativeShutdown *inner;
1211    /**
1212     * Indicates that this is the only struct which contains the same pointer.
1213     * Rust functions which take ownership of an object provided via an argument require
1214     * this to be true and invalidate the object pointed to by inner.
1215     */
1216    bool is_owned;
1217 } LDKShutdown;
1218
1219
1220
1221 /**
1222  * A channel_reestablish message to be sent or received from a peer
1223  */
1224 typedef struct MUST_USE_STRUCT LDKChannelReestablish {
1225    /**
1226     * A pointer to the opaque Rust object.
1227     * Nearly everywhere, inner must be non-null, however in places where
1228     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1229     */
1230    LDKnativeChannelReestablish *inner;
1231    /**
1232     * Indicates that this is the only struct which contains the same pointer.
1233     * Rust functions which take ownership of an object provided via an argument require
1234     * this to be true and invalidate the object pointed to by inner.
1235     */
1236    bool is_owned;
1237 } LDKChannelReestablish;
1238
1239
1240
1241 /**
1242  * A channel_announcement message to be sent or received from a peer
1243  */
1244 typedef struct MUST_USE_STRUCT LDKChannelAnnouncement {
1245    /**
1246     * A pointer to the opaque Rust object.
1247     * Nearly everywhere, inner must be non-null, however in places where
1248     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1249     */
1250    LDKnativeChannelAnnouncement *inner;
1251    /**
1252     * Indicates that this is the only struct which contains the same pointer.
1253     * Rust functions which take ownership of an object provided via an argument require
1254     * this to be true and invalidate the object pointed to by inner.
1255     */
1256    bool is_owned;
1257 } LDKChannelAnnouncement;
1258
1259
1260
1261 /**
1262  * A channel_update message to be sent or received from a peer
1263  */
1264 typedef struct MUST_USE_STRUCT LDKChannelUpdate {
1265    /**
1266     * A pointer to the opaque Rust object.
1267     * Nearly everywhere, inner must be non-null, however in places where
1268     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1269     */
1270    LDKnativeChannelUpdate *inner;
1271    /**
1272     * Indicates that this is the only struct which contains the same pointer.
1273     * Rust functions which take ownership of an object provided via an argument require
1274     * this to be true and invalidate the object pointed to by inner.
1275     */
1276    bool is_owned;
1277 } LDKChannelUpdate;
1278
1279
1280
1281 /**
1282  * A node_announcement message to be sent or received from a peer
1283  */
1284 typedef struct MUST_USE_STRUCT LDKNodeAnnouncement {
1285    /**
1286     * A pointer to the opaque Rust object.
1287     * Nearly everywhere, inner must be non-null, however in places where
1288     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1289     */
1290    LDKnativeNodeAnnouncement *inner;
1291    /**
1292     * Indicates that this is the only struct which contains the same pointer.
1293     * Rust functions which take ownership of an object provided via an argument require
1294     * this to be true and invalidate the object pointed to by inner.
1295     */
1296    bool is_owned;
1297 } LDKNodeAnnouncement;
1298
1299
1300
1301 /**
1302  * An error message to be sent or received from a peer
1303  */
1304 typedef struct MUST_USE_STRUCT LDKErrorMessage {
1305    /**
1306     * A pointer to the opaque Rust object.
1307     * Nearly everywhere, inner must be non-null, however in places where
1308     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1309     */
1310    LDKnativeErrorMessage *inner;
1311    /**
1312     * Indicates that this is the only struct which contains the same pointer.
1313     * Rust functions which take ownership of an object provided via an argument require
1314     * this to be true and invalidate the object pointed to by inner.
1315     */
1316    bool is_owned;
1317 } LDKErrorMessage;
1318
1319 /**
1320  * Used to put an error message in a LightningError
1321  */
1322 typedef enum LDKErrorAction_Tag {
1323    /**
1324     * The peer took some action which made us think they were useless. Disconnect them.
1325     */
1326    LDKErrorAction_DisconnectPeer,
1327    /**
1328     * The peer did something harmless that we weren't able to process, just log and ignore
1329     */
1330    LDKErrorAction_IgnoreError,
1331    /**
1332     * The peer did something incorrect. Tell them.
1333     */
1334    LDKErrorAction_SendErrorMessage,
1335    /**
1336     * Must be last for serialization purposes
1337     */
1338    LDKErrorAction_Sentinel,
1339 } LDKErrorAction_Tag;
1340
1341 typedef struct LDKErrorAction_LDKDisconnectPeer_Body {
1342    /**
1343     * An error message which we should make an effort to send before we disconnect.
1344     */
1345    struct LDKErrorMessage msg;
1346 } LDKErrorAction_LDKDisconnectPeer_Body;
1347
1348 typedef struct LDKErrorAction_LDKSendErrorMessage_Body {
1349    /**
1350     * The message to send.
1351     */
1352    struct LDKErrorMessage msg;
1353 } LDKErrorAction_LDKSendErrorMessage_Body;
1354
1355 typedef struct MUST_USE_STRUCT LDKErrorAction {
1356    LDKErrorAction_Tag tag;
1357    union {
1358       LDKErrorAction_LDKDisconnectPeer_Body disconnect_peer;
1359       LDKErrorAction_LDKSendErrorMessage_Body send_error_message;
1360    };
1361 } LDKErrorAction;
1362
1363 /**
1364  * The information we received from a peer along the route of a payment we originated. This is
1365  * returned by ChannelMessageHandler::handle_update_fail_htlc to be passed into
1366  * RoutingMessageHandler::handle_htlc_fail_channel_update to update our network map.
1367  */
1368 typedef enum LDKHTLCFailChannelUpdate_Tag {
1369    /**
1370     * We received an error which included a full ChannelUpdate message.
1371     */
1372    LDKHTLCFailChannelUpdate_ChannelUpdateMessage,
1373    /**
1374     * We received an error which indicated only that a channel has been closed
1375     */
1376    LDKHTLCFailChannelUpdate_ChannelClosed,
1377    /**
1378     * We received an error which indicated only that a node has failed
1379     */
1380    LDKHTLCFailChannelUpdate_NodeFailure,
1381    /**
1382     * Must be last for serialization purposes
1383     */
1384    LDKHTLCFailChannelUpdate_Sentinel,
1385 } LDKHTLCFailChannelUpdate_Tag;
1386
1387 typedef struct LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body {
1388    /**
1389     * The unwrapped message we received
1390     */
1391    struct LDKChannelUpdate msg;
1392 } LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body;
1393
1394 typedef struct LDKHTLCFailChannelUpdate_LDKChannelClosed_Body {
1395    /**
1396     * The short_channel_id which has now closed.
1397     */
1398    uint64_t short_channel_id;
1399    /**
1400     * when this true, this channel should be permanently removed from the
1401     * consideration. Otherwise, this channel can be restored as new channel_update is received
1402     */
1403    bool is_permanent;
1404 } LDKHTLCFailChannelUpdate_LDKChannelClosed_Body;
1405
1406 typedef struct LDKHTLCFailChannelUpdate_LDKNodeFailure_Body {
1407    /**
1408     * The node_id that has failed.
1409     */
1410    struct LDKPublicKey node_id;
1411    /**
1412     * when this true, node should be permanently removed from the
1413     * consideration. Otherwise, the channels connected to this node can be
1414     * restored as new channel_update is received
1415     */
1416    bool is_permanent;
1417 } LDKHTLCFailChannelUpdate_LDKNodeFailure_Body;
1418
1419 typedef struct MUST_USE_STRUCT LDKHTLCFailChannelUpdate {
1420    LDKHTLCFailChannelUpdate_Tag tag;
1421    union {
1422       LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body channel_update_message;
1423       LDKHTLCFailChannelUpdate_LDKChannelClosed_Body channel_closed;
1424       LDKHTLCFailChannelUpdate_LDKNodeFailure_Body node_failure;
1425    };
1426 } LDKHTLCFailChannelUpdate;
1427
1428
1429
1430 /**
1431  * A query_channel_range message is used to query a peer for channel
1432  * UTXOs in a range of blocks. The recipient of a query makes a best
1433  * effort to reply to the query using one or more reply_channel_range
1434  * messages.
1435  */
1436 typedef struct MUST_USE_STRUCT LDKQueryChannelRange {
1437    /**
1438     * A pointer to the opaque Rust object.
1439     * Nearly everywhere, inner must be non-null, however in places where
1440     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1441     */
1442    LDKnativeQueryChannelRange *inner;
1443    /**
1444     * Indicates that this is the only struct which contains the same pointer.
1445     * Rust functions which take ownership of an object provided via an argument require
1446     * this to be true and invalidate the object pointed to by inner.
1447     */
1448    bool is_owned;
1449 } LDKQueryChannelRange;
1450
1451
1452
1453 /**
1454  * A query_short_channel_ids message is used to query a peer for
1455  * routing gossip messages related to one or more short_channel_ids.
1456  * The query recipient will reply with the latest, if available,
1457  * channel_announcement, channel_update and node_announcement messages
1458  * it maintains for the requested short_channel_ids followed by a
1459  * reply_short_channel_ids_end message. The short_channel_ids sent in
1460  * this query are encoded. We only support encoding_type=0 uncompressed
1461  * serialization and do not support encoding_type=1 zlib serialization.
1462  */
1463 typedef struct MUST_USE_STRUCT LDKQueryShortChannelIds {
1464    /**
1465     * A pointer to the opaque Rust object.
1466     * Nearly everywhere, inner must be non-null, however in places where
1467     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1468     */
1469    LDKnativeQueryShortChannelIds *inner;
1470    /**
1471     * Indicates that this is the only struct which contains the same pointer.
1472     * Rust functions which take ownership of an object provided via an argument require
1473     * this to be true and invalidate the object pointed to by inner.
1474     */
1475    bool is_owned;
1476 } LDKQueryShortChannelIds;
1477
1478
1479
1480 /**
1481  * A reply_channel_range message is a reply to a query_channel_range
1482  * message. Multiple reply_channel_range messages can be sent in reply
1483  * to a single query_channel_range message. The query recipient makes a
1484  * best effort to respond based on their local network view which may
1485  * not be a perfect view of the network. The short_channel_ids in the
1486  * reply are encoded. We only support encoding_type=0 uncompressed
1487  * serialization and do not support encoding_type=1 zlib serialization.
1488  */
1489 typedef struct MUST_USE_STRUCT LDKReplyChannelRange {
1490    /**
1491     * A pointer to the opaque Rust object.
1492     * Nearly everywhere, inner must be non-null, however in places where
1493     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1494     */
1495    LDKnativeReplyChannelRange *inner;
1496    /**
1497     * Indicates that this is the only struct which contains the same pointer.
1498     * Rust functions which take ownership of an object provided via an argument require
1499     * this to be true and invalidate the object pointed to by inner.
1500     */
1501    bool is_owned;
1502 } LDKReplyChannelRange;
1503
1504 /**
1505  * An event generated by ChannelManager which indicates a message should be sent to a peer (or
1506  * broadcast to most peers).
1507  * These events are handled by PeerManager::process_events if you are using a PeerManager.
1508  */
1509 typedef enum LDKMessageSendEvent_Tag {
1510    /**
1511     * Used to indicate that we've accepted a channel open and should send the accept_channel
1512     * message provided to the given peer.
1513     */
1514    LDKMessageSendEvent_SendAcceptChannel,
1515    /**
1516     * Used to indicate that we've initiated a channel open and should send the open_channel
1517     * message provided to the given peer.
1518     */
1519    LDKMessageSendEvent_SendOpenChannel,
1520    /**
1521     * Used to indicate that a funding_created message should be sent to the peer with the given node_id.
1522     */
1523    LDKMessageSendEvent_SendFundingCreated,
1524    /**
1525     * Used to indicate that a funding_signed message should be sent to the peer with the given node_id.
1526     */
1527    LDKMessageSendEvent_SendFundingSigned,
1528    /**
1529     * Used to indicate that a funding_locked message should be sent to the peer with the given node_id.
1530     */
1531    LDKMessageSendEvent_SendFundingLocked,
1532    /**
1533     * Used to indicate that an announcement_signatures message should be sent to the peer with the given node_id.
1534     */
1535    LDKMessageSendEvent_SendAnnouncementSignatures,
1536    /**
1537     * Used to indicate that a series of HTLC update messages, as well as a commitment_signed
1538     * message should be sent to the peer with the given node_id.
1539     */
1540    LDKMessageSendEvent_UpdateHTLCs,
1541    /**
1542     * Used to indicate that a revoke_and_ack message should be sent to the peer with the given node_id.
1543     */
1544    LDKMessageSendEvent_SendRevokeAndACK,
1545    /**
1546     * Used to indicate that a closing_signed message should be sent to the peer with the given node_id.
1547     */
1548    LDKMessageSendEvent_SendClosingSigned,
1549    /**
1550     * Used to indicate that a shutdown message should be sent to the peer with the given node_id.
1551     */
1552    LDKMessageSendEvent_SendShutdown,
1553    /**
1554     * Used to indicate that a channel_reestablish message should be sent to the peer with the given node_id.
1555     */
1556    LDKMessageSendEvent_SendChannelReestablish,
1557    /**
1558     * Used to indicate that a channel_announcement and channel_update should be broadcast to all
1559     * peers (except the peer with node_id either msg.contents.node_id_1 or msg.contents.node_id_2).
1560     *
1561     * Note that after doing so, you very likely (unless you did so very recently) want to call
1562     * ChannelManager::broadcast_node_announcement to trigger a BroadcastNodeAnnouncement event.
1563     * This ensures that any nodes which see our channel_announcement also have a relevant
1564     * node_announcement, including relevant feature flags which may be important for routing
1565     * through or to us.
1566     */
1567    LDKMessageSendEvent_BroadcastChannelAnnouncement,
1568    /**
1569     * Used to indicate that a node_announcement should be broadcast to all peers.
1570     */
1571    LDKMessageSendEvent_BroadcastNodeAnnouncement,
1572    /**
1573     * Used to indicate that a channel_update should be broadcast to all peers.
1574     */
1575    LDKMessageSendEvent_BroadcastChannelUpdate,
1576    /**
1577     * Broadcast an error downstream to be handled
1578     */
1579    LDKMessageSendEvent_HandleError,
1580    /**
1581     * When a payment fails we may receive updates back from the hop where it failed. In such
1582     * cases this event is generated so that we can inform the network graph of this information.
1583     */
1584    LDKMessageSendEvent_PaymentFailureNetworkUpdate,
1585    /**
1586     * Query a peer for channels with funding transaction UTXOs in a block range.
1587     */
1588    LDKMessageSendEvent_SendChannelRangeQuery,
1589    /**
1590     * Request routing gossip messages from a peer for a list of channels identified by
1591     * their short_channel_ids.
1592     */
1593    LDKMessageSendEvent_SendShortIdsQuery,
1594    /**
1595     * Sends a reply to a channel range query. This may be one of several SendReplyChannelRange events
1596     * emitted during processing of the query.
1597     */
1598    LDKMessageSendEvent_SendReplyChannelRange,
1599    /**
1600     * Must be last for serialization purposes
1601     */
1602    LDKMessageSendEvent_Sentinel,
1603 } LDKMessageSendEvent_Tag;
1604
1605 typedef struct LDKMessageSendEvent_LDKSendAcceptChannel_Body {
1606    /**
1607     * The node_id of the node which should receive this message
1608     */
1609    struct LDKPublicKey node_id;
1610    /**
1611     * The message which should be sent.
1612     */
1613    struct LDKAcceptChannel msg;
1614 } LDKMessageSendEvent_LDKSendAcceptChannel_Body;
1615
1616 typedef struct LDKMessageSendEvent_LDKSendOpenChannel_Body {
1617    /**
1618     * The node_id of the node which should receive this message
1619     */
1620    struct LDKPublicKey node_id;
1621    /**
1622     * The message which should be sent.
1623     */
1624    struct LDKOpenChannel msg;
1625 } LDKMessageSendEvent_LDKSendOpenChannel_Body;
1626
1627 typedef struct LDKMessageSendEvent_LDKSendFundingCreated_Body {
1628    /**
1629     * The node_id of the node which should receive this message
1630     */
1631    struct LDKPublicKey node_id;
1632    /**
1633     * The message which should be sent.
1634     */
1635    struct LDKFundingCreated msg;
1636 } LDKMessageSendEvent_LDKSendFundingCreated_Body;
1637
1638 typedef struct LDKMessageSendEvent_LDKSendFundingSigned_Body {
1639    /**
1640     * The node_id of the node which should receive this message
1641     */
1642    struct LDKPublicKey node_id;
1643    /**
1644     * The message which should be sent.
1645     */
1646    struct LDKFundingSigned msg;
1647 } LDKMessageSendEvent_LDKSendFundingSigned_Body;
1648
1649 typedef struct LDKMessageSendEvent_LDKSendFundingLocked_Body {
1650    /**
1651     * The node_id of the node which should receive these message(s)
1652     */
1653    struct LDKPublicKey node_id;
1654    /**
1655     * The funding_locked message which should be sent.
1656     */
1657    struct LDKFundingLocked msg;
1658 } LDKMessageSendEvent_LDKSendFundingLocked_Body;
1659
1660 typedef struct LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body {
1661    /**
1662     * The node_id of the node which should receive these message(s)
1663     */
1664    struct LDKPublicKey node_id;
1665    /**
1666     * The announcement_signatures message which should be sent.
1667     */
1668    struct LDKAnnouncementSignatures msg;
1669 } LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body;
1670
1671 typedef struct LDKMessageSendEvent_LDKUpdateHTLCs_Body {
1672    /**
1673     * The node_id of the node which should receive these message(s)
1674     */
1675    struct LDKPublicKey node_id;
1676    /**
1677     * The update messages which should be sent. ALL messages in the struct should be sent!
1678     */
1679    struct LDKCommitmentUpdate updates;
1680 } LDKMessageSendEvent_LDKUpdateHTLCs_Body;
1681
1682 typedef struct LDKMessageSendEvent_LDKSendRevokeAndACK_Body {
1683    /**
1684     * The node_id of the node which should receive this message
1685     */
1686    struct LDKPublicKey node_id;
1687    /**
1688     * The message which should be sent.
1689     */
1690    struct LDKRevokeAndACK msg;
1691 } LDKMessageSendEvent_LDKSendRevokeAndACK_Body;
1692
1693 typedef struct LDKMessageSendEvent_LDKSendClosingSigned_Body {
1694    /**
1695     * The node_id of the node which should receive this message
1696     */
1697    struct LDKPublicKey node_id;
1698    /**
1699     * The message which should be sent.
1700     */
1701    struct LDKClosingSigned msg;
1702 } LDKMessageSendEvent_LDKSendClosingSigned_Body;
1703
1704 typedef struct LDKMessageSendEvent_LDKSendShutdown_Body {
1705    /**
1706     * The node_id of the node which should receive this message
1707     */
1708    struct LDKPublicKey node_id;
1709    /**
1710     * The message which should be sent.
1711     */
1712    struct LDKShutdown msg;
1713 } LDKMessageSendEvent_LDKSendShutdown_Body;
1714
1715 typedef struct LDKMessageSendEvent_LDKSendChannelReestablish_Body {
1716    /**
1717     * The node_id of the node which should receive this message
1718     */
1719    struct LDKPublicKey node_id;
1720    /**
1721     * The message which should be sent.
1722     */
1723    struct LDKChannelReestablish msg;
1724 } LDKMessageSendEvent_LDKSendChannelReestablish_Body;
1725
1726 typedef struct LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body {
1727    /**
1728     * The channel_announcement which should be sent.
1729     */
1730    struct LDKChannelAnnouncement msg;
1731    /**
1732     * The followup channel_update which should be sent.
1733     */
1734    struct LDKChannelUpdate update_msg;
1735 } LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body;
1736
1737 typedef struct LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body {
1738    /**
1739     * The node_announcement which should be sent.
1740     */
1741    struct LDKNodeAnnouncement msg;
1742 } LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body;
1743
1744 typedef struct LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body {
1745    /**
1746     * The channel_update which should be sent.
1747     */
1748    struct LDKChannelUpdate msg;
1749 } LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body;
1750
1751 typedef struct LDKMessageSendEvent_LDKHandleError_Body {
1752    /**
1753     * The node_id of the node which should receive this message
1754     */
1755    struct LDKPublicKey node_id;
1756    /**
1757     * The action which should be taken.
1758     */
1759    struct LDKErrorAction action;
1760 } LDKMessageSendEvent_LDKHandleError_Body;
1761
1762 typedef struct LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body {
1763    /**
1764     * The channel/node update which should be sent to NetGraphMsgHandler
1765     */
1766    struct LDKHTLCFailChannelUpdate update;
1767 } LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body;
1768
1769 typedef struct LDKMessageSendEvent_LDKSendChannelRangeQuery_Body {
1770    /**
1771     * The node_id of this message recipient
1772     */
1773    struct LDKPublicKey node_id;
1774    /**
1775     * The query_channel_range which should be sent.
1776     */
1777    struct LDKQueryChannelRange msg;
1778 } LDKMessageSendEvent_LDKSendChannelRangeQuery_Body;
1779
1780 typedef struct LDKMessageSendEvent_LDKSendShortIdsQuery_Body {
1781    /**
1782     * The node_id of this message recipient
1783     */
1784    struct LDKPublicKey node_id;
1785    /**
1786     * The query_short_channel_ids which should be sent.
1787     */
1788    struct LDKQueryShortChannelIds msg;
1789 } LDKMessageSendEvent_LDKSendShortIdsQuery_Body;
1790
1791 typedef struct LDKMessageSendEvent_LDKSendReplyChannelRange_Body {
1792    /**
1793     * The node_id of this message recipient
1794     */
1795    struct LDKPublicKey node_id;
1796    /**
1797     * The reply_channel_range which should be sent.
1798     */
1799    struct LDKReplyChannelRange msg;
1800 } LDKMessageSendEvent_LDKSendReplyChannelRange_Body;
1801
1802 typedef struct MUST_USE_STRUCT LDKMessageSendEvent {
1803    LDKMessageSendEvent_Tag tag;
1804    union {
1805       LDKMessageSendEvent_LDKSendAcceptChannel_Body send_accept_channel;
1806       LDKMessageSendEvent_LDKSendOpenChannel_Body send_open_channel;
1807       LDKMessageSendEvent_LDKSendFundingCreated_Body send_funding_created;
1808       LDKMessageSendEvent_LDKSendFundingSigned_Body send_funding_signed;
1809       LDKMessageSendEvent_LDKSendFundingLocked_Body send_funding_locked;
1810       LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body send_announcement_signatures;
1811       LDKMessageSendEvent_LDKUpdateHTLCs_Body update_htl_cs;
1812       LDKMessageSendEvent_LDKSendRevokeAndACK_Body send_revoke_and_ack;
1813       LDKMessageSendEvent_LDKSendClosingSigned_Body send_closing_signed;
1814       LDKMessageSendEvent_LDKSendShutdown_Body send_shutdown;
1815       LDKMessageSendEvent_LDKSendChannelReestablish_Body send_channel_reestablish;
1816       LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body broadcast_channel_announcement;
1817       LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body broadcast_node_announcement;
1818       LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body broadcast_channel_update;
1819       LDKMessageSendEvent_LDKHandleError_Body handle_error;
1820       LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body payment_failure_network_update;
1821       LDKMessageSendEvent_LDKSendChannelRangeQuery_Body send_channel_range_query;
1822       LDKMessageSendEvent_LDKSendShortIdsQuery_Body send_short_ids_query;
1823       LDKMessageSendEvent_LDKSendReplyChannelRange_Body send_reply_channel_range;
1824    };
1825 } LDKMessageSendEvent;
1826
1827 /**
1828  * A dynamically-allocated array of crate::util::events::MessageSendEvents of arbitrary size.
1829  * This corresponds to std::vector in C++
1830  */
1831 typedef struct LDKCVec_MessageSendEventZ {
1832    /**
1833     * The elements in the array.
1834     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1835     */
1836    struct LDKMessageSendEvent *data;
1837    /**
1838     * The number of elements pointed to by `data`.
1839     */
1840    uintptr_t datalen;
1841 } LDKCVec_MessageSendEventZ;
1842
1843
1844
1845 /**
1846  * An Err type for failure to process messages.
1847  */
1848 typedef struct MUST_USE_STRUCT LDKLightningError {
1849    /**
1850     * A pointer to the opaque Rust object.
1851     * Nearly everywhere, inner must be non-null, however in places where
1852     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1853     */
1854    LDKnativeLightningError *inner;
1855    /**
1856     * Indicates that this is the only struct which contains the same pointer.
1857     * Rust functions which take ownership of an object provided via an argument require
1858     * this to be true and invalidate the object pointed to by inner.
1859     */
1860    bool is_owned;
1861 } LDKLightningError;
1862
1863 /**
1864  * The contents of CResult_boolLightningErrorZ
1865  */
1866 typedef union LDKCResult_boolLightningErrorZPtr {
1867    /**
1868     * A pointer to the contents in the success state.
1869     * Reading from this pointer when `result_ok` is not set is undefined.
1870     */
1871    bool *result;
1872    /**
1873     * A pointer to the contents in the error state.
1874     * Reading from this pointer when `result_ok` is set is undefined.
1875     */
1876    struct LDKLightningError *err;
1877 } LDKCResult_boolLightningErrorZPtr;
1878
1879 /**
1880  * A CResult_boolLightningErrorZ represents the result of a fallible operation,
1881  * containing a bool on success and a crate::ln::msgs::LightningError on failure.
1882  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1883  */
1884 typedef struct LDKCResult_boolLightningErrorZ {
1885    /**
1886     * The contents of this CResult_boolLightningErrorZ, accessible via either
1887     * `err` or `result` depending on the state of `result_ok`.
1888     */
1889    union LDKCResult_boolLightningErrorZPtr contents;
1890    /**
1891     * Whether this CResult_boolLightningErrorZ represents a success state.
1892     */
1893    bool result_ok;
1894 } LDKCResult_boolLightningErrorZ;
1895
1896 /**
1897  * A tuple of 3 elements. See the individual fields for the types contained.
1898  */
1899 typedef struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
1900    /**
1901     * The element at position 0
1902     */
1903    struct LDKChannelAnnouncement a;
1904    /**
1905     * The element at position 1
1906     */
1907    struct LDKChannelUpdate b;
1908    /**
1909     * The element at position 2
1910     */
1911    struct LDKChannelUpdate c;
1912 } LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
1913
1914 /**
1915  * A dynamically-allocated array of crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZs of arbitrary size.
1916  * This corresponds to std::vector in C++
1917  */
1918 typedef struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
1919    /**
1920     * The elements in the array.
1921     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1922     */
1923    struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *data;
1924    /**
1925     * The number of elements pointed to by `data`.
1926     */
1927    uintptr_t datalen;
1928 } LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
1929
1930 /**
1931  * A dynamically-allocated array of crate::ln::msgs::NodeAnnouncements of arbitrary size.
1932  * This corresponds to std::vector in C++
1933  */
1934 typedef struct LDKCVec_NodeAnnouncementZ {
1935    /**
1936     * The elements in the array.
1937     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1938     */
1939    struct LDKNodeAnnouncement *data;
1940    /**
1941     * The number of elements pointed to by `data`.
1942     */
1943    uintptr_t datalen;
1944 } LDKCVec_NodeAnnouncementZ;
1945
1946 /**
1947  * The contents of CResult_NoneLightningErrorZ
1948  */
1949 typedef union LDKCResult_NoneLightningErrorZPtr {
1950    /**
1951     * Note that this value is always NULL, as there are no contents in the OK variant
1952     */
1953    void *result;
1954    /**
1955     * A pointer to the contents in the error state.
1956     * Reading from this pointer when `result_ok` is set is undefined.
1957     */
1958    struct LDKLightningError *err;
1959 } LDKCResult_NoneLightningErrorZPtr;
1960
1961 /**
1962  * A CResult_NoneLightningErrorZ represents the result of a fallible operation,
1963  * containing a () on success and a crate::ln::msgs::LightningError on failure.
1964  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1965  */
1966 typedef struct LDKCResult_NoneLightningErrorZ {
1967    /**
1968     * The contents of this CResult_NoneLightningErrorZ, accessible via either
1969     * `err` or `result` depending on the state of `result_ok`.
1970     */
1971    union LDKCResult_NoneLightningErrorZPtr contents;
1972    /**
1973     * Whether this CResult_NoneLightningErrorZ represents a success state.
1974     */
1975    bool result_ok;
1976 } LDKCResult_NoneLightningErrorZ;
1977
1978 /**
1979  * A dynamically-allocated array of crate::c_types::PublicKeys of arbitrary size.
1980  * This corresponds to std::vector in C++
1981  */
1982 typedef struct LDKCVec_PublicKeyZ {
1983    /**
1984     * The elements in the array.
1985     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1986     */
1987    struct LDKPublicKey *data;
1988    /**
1989     * The number of elements pointed to by `data`.
1990     */
1991    uintptr_t datalen;
1992 } LDKCVec_PublicKeyZ;
1993
1994
1995
1996 /**
1997  * Error for PeerManager errors. If you get one of these, you must disconnect the socket and
1998  * generate no further read_event/write_buffer_space_avail/socket_disconnected calls for the
1999  * descriptor.
2000  */
2001 typedef struct MUST_USE_STRUCT LDKPeerHandleError {
2002    /**
2003     * A pointer to the opaque Rust object.
2004     * Nearly everywhere, inner must be non-null, however in places where
2005     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2006     */
2007    LDKnativePeerHandleError *inner;
2008    /**
2009     * Indicates that this is the only struct which contains the same pointer.
2010     * Rust functions which take ownership of an object provided via an argument require
2011     * this to be true and invalidate the object pointed to by inner.
2012     */
2013    bool is_owned;
2014 } LDKPeerHandleError;
2015
2016 /**
2017  * The contents of CResult_CVec_u8ZPeerHandleErrorZ
2018  */
2019 typedef union LDKCResult_CVec_u8ZPeerHandleErrorZPtr {
2020    /**
2021     * A pointer to the contents in the success state.
2022     * Reading from this pointer when `result_ok` is not set is undefined.
2023     */
2024    struct LDKCVec_u8Z *result;
2025    /**
2026     * A pointer to the contents in the error state.
2027     * Reading from this pointer when `result_ok` is set is undefined.
2028     */
2029    struct LDKPeerHandleError *err;
2030 } LDKCResult_CVec_u8ZPeerHandleErrorZPtr;
2031
2032 /**
2033  * A CResult_CVec_u8ZPeerHandleErrorZ represents the result of a fallible operation,
2034  * containing a crate::c_types::derived::CVec_u8Z on success and a crate::ln::peer_handler::PeerHandleError on failure.
2035  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2036  */
2037 typedef struct LDKCResult_CVec_u8ZPeerHandleErrorZ {
2038    /**
2039     * The contents of this CResult_CVec_u8ZPeerHandleErrorZ, accessible via either
2040     * `err` or `result` depending on the state of `result_ok`.
2041     */
2042    union LDKCResult_CVec_u8ZPeerHandleErrorZPtr contents;
2043    /**
2044     * Whether this CResult_CVec_u8ZPeerHandleErrorZ represents a success state.
2045     */
2046    bool result_ok;
2047 } LDKCResult_CVec_u8ZPeerHandleErrorZ;
2048
2049 /**
2050  * The contents of CResult_NonePeerHandleErrorZ
2051  */
2052 typedef union LDKCResult_NonePeerHandleErrorZPtr {
2053    /**
2054     * Note that this value is always NULL, as there are no contents in the OK variant
2055     */
2056    void *result;
2057    /**
2058     * A pointer to the contents in the error state.
2059     * Reading from this pointer when `result_ok` is set is undefined.
2060     */
2061    struct LDKPeerHandleError *err;
2062 } LDKCResult_NonePeerHandleErrorZPtr;
2063
2064 /**
2065  * A CResult_NonePeerHandleErrorZ represents the result of a fallible operation,
2066  * containing a () on success and a crate::ln::peer_handler::PeerHandleError on failure.
2067  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2068  */
2069 typedef struct LDKCResult_NonePeerHandleErrorZ {
2070    /**
2071     * The contents of this CResult_NonePeerHandleErrorZ, accessible via either
2072     * `err` or `result` depending on the state of `result_ok`.
2073     */
2074    union LDKCResult_NonePeerHandleErrorZPtr contents;
2075    /**
2076     * Whether this CResult_NonePeerHandleErrorZ represents a success state.
2077     */
2078    bool result_ok;
2079 } LDKCResult_NonePeerHandleErrorZ;
2080
2081 /**
2082  * The contents of CResult_boolPeerHandleErrorZ
2083  */
2084 typedef union LDKCResult_boolPeerHandleErrorZPtr {
2085    /**
2086     * A pointer to the contents in the success state.
2087     * Reading from this pointer when `result_ok` is not set is undefined.
2088     */
2089    bool *result;
2090    /**
2091     * A pointer to the contents in the error state.
2092     * Reading from this pointer when `result_ok` is set is undefined.
2093     */
2094    struct LDKPeerHandleError *err;
2095 } LDKCResult_boolPeerHandleErrorZPtr;
2096
2097 /**
2098  * A CResult_boolPeerHandleErrorZ represents the result of a fallible operation,
2099  * containing a bool on success and a crate::ln::peer_handler::PeerHandleError on failure.
2100  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2101  */
2102 typedef struct LDKCResult_boolPeerHandleErrorZ {
2103    /**
2104     * The contents of this CResult_boolPeerHandleErrorZ, accessible via either
2105     * `err` or `result` depending on the state of `result_ok`.
2106     */
2107    union LDKCResult_boolPeerHandleErrorZPtr contents;
2108    /**
2109     * Whether this CResult_boolPeerHandleErrorZ represents a success state.
2110     */
2111    bool result_ok;
2112 } LDKCResult_boolPeerHandleErrorZ;
2113
2114
2115
2116 /**
2117  * Features used within an `init` message.
2118  */
2119 typedef struct MUST_USE_STRUCT LDKInitFeatures {
2120    /**
2121     * A pointer to the opaque Rust object.
2122     * Nearly everywhere, inner must be non-null, however in places where
2123     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2124     */
2125    LDKnativeInitFeatures *inner;
2126    /**
2127     * Indicates that this is the only struct which contains the same pointer.
2128     * Rust functions which take ownership of an object provided via an argument require
2129     * this to be true and invalidate the object pointed to by inner.
2130     */
2131    bool is_owned;
2132 } LDKInitFeatures;
2133
2134 /**
2135  * The contents of CResult_InitFeaturesDecodeErrorZ
2136  */
2137 typedef union LDKCResult_InitFeaturesDecodeErrorZPtr {
2138    /**
2139     * A pointer to the contents in the success state.
2140     * Reading from this pointer when `result_ok` is not set is undefined.
2141     */
2142    struct LDKInitFeatures *result;
2143    /**
2144     * A pointer to the contents in the error state.
2145     * Reading from this pointer when `result_ok` is set is undefined.
2146     */
2147    struct LDKDecodeError *err;
2148 } LDKCResult_InitFeaturesDecodeErrorZPtr;
2149
2150 /**
2151  * A CResult_InitFeaturesDecodeErrorZ represents the result of a fallible operation,
2152  * containing a crate::ln::features::InitFeatures on success and a crate::ln::msgs::DecodeError on failure.
2153  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2154  */
2155 typedef struct LDKCResult_InitFeaturesDecodeErrorZ {
2156    /**
2157     * The contents of this CResult_InitFeaturesDecodeErrorZ, accessible via either
2158     * `err` or `result` depending on the state of `result_ok`.
2159     */
2160    union LDKCResult_InitFeaturesDecodeErrorZPtr contents;
2161    /**
2162     * Whether this CResult_InitFeaturesDecodeErrorZ represents a success state.
2163     */
2164    bool result_ok;
2165 } LDKCResult_InitFeaturesDecodeErrorZ;
2166
2167
2168
2169 /**
2170  * Features used within a `node_announcement` message.
2171  */
2172 typedef struct MUST_USE_STRUCT LDKNodeFeatures {
2173    /**
2174     * A pointer to the opaque Rust object.
2175     * Nearly everywhere, inner must be non-null, however in places where
2176     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2177     */
2178    LDKnativeNodeFeatures *inner;
2179    /**
2180     * Indicates that this is the only struct which contains the same pointer.
2181     * Rust functions which take ownership of an object provided via an argument require
2182     * this to be true and invalidate the object pointed to by inner.
2183     */
2184    bool is_owned;
2185 } LDKNodeFeatures;
2186
2187 /**
2188  * The contents of CResult_NodeFeaturesDecodeErrorZ
2189  */
2190 typedef union LDKCResult_NodeFeaturesDecodeErrorZPtr {
2191    /**
2192     * A pointer to the contents in the success state.
2193     * Reading from this pointer when `result_ok` is not set is undefined.
2194     */
2195    struct LDKNodeFeatures *result;
2196    /**
2197     * A pointer to the contents in the error state.
2198     * Reading from this pointer when `result_ok` is set is undefined.
2199     */
2200    struct LDKDecodeError *err;
2201 } LDKCResult_NodeFeaturesDecodeErrorZPtr;
2202
2203 /**
2204  * A CResult_NodeFeaturesDecodeErrorZ represents the result of a fallible operation,
2205  * containing a crate::ln::features::NodeFeatures on success and a crate::ln::msgs::DecodeError on failure.
2206  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2207  */
2208 typedef struct LDKCResult_NodeFeaturesDecodeErrorZ {
2209    /**
2210     * The contents of this CResult_NodeFeaturesDecodeErrorZ, accessible via either
2211     * `err` or `result` depending on the state of `result_ok`.
2212     */
2213    union LDKCResult_NodeFeaturesDecodeErrorZPtr contents;
2214    /**
2215     * Whether this CResult_NodeFeaturesDecodeErrorZ represents a success state.
2216     */
2217    bool result_ok;
2218 } LDKCResult_NodeFeaturesDecodeErrorZ;
2219
2220
2221
2222 /**
2223  * Features used within a `channel_announcement` message.
2224  */
2225 typedef struct MUST_USE_STRUCT LDKChannelFeatures {
2226    /**
2227     * A pointer to the opaque Rust object.
2228     * Nearly everywhere, inner must be non-null, however in places where
2229     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2230     */
2231    LDKnativeChannelFeatures *inner;
2232    /**
2233     * Indicates that this is the only struct which contains the same pointer.
2234     * Rust functions which take ownership of an object provided via an argument require
2235     * this to be true and invalidate the object pointed to by inner.
2236     */
2237    bool is_owned;
2238 } LDKChannelFeatures;
2239
2240 /**
2241  * The contents of CResult_ChannelFeaturesDecodeErrorZ
2242  */
2243 typedef union LDKCResult_ChannelFeaturesDecodeErrorZPtr {
2244    /**
2245     * A pointer to the contents in the success state.
2246     * Reading from this pointer when `result_ok` is not set is undefined.
2247     */
2248    struct LDKChannelFeatures *result;
2249    /**
2250     * A pointer to the contents in the error state.
2251     * Reading from this pointer when `result_ok` is set is undefined.
2252     */
2253    struct LDKDecodeError *err;
2254 } LDKCResult_ChannelFeaturesDecodeErrorZPtr;
2255
2256 /**
2257  * A CResult_ChannelFeaturesDecodeErrorZ represents the result of a fallible operation,
2258  * containing a crate::ln::features::ChannelFeatures on success and a crate::ln::msgs::DecodeError on failure.
2259  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2260  */
2261 typedef struct LDKCResult_ChannelFeaturesDecodeErrorZ {
2262    /**
2263     * The contents of this CResult_ChannelFeaturesDecodeErrorZ, accessible via either
2264     * `err` or `result` depending on the state of `result_ok`.
2265     */
2266    union LDKCResult_ChannelFeaturesDecodeErrorZPtr contents;
2267    /**
2268     * Whether this CResult_ChannelFeaturesDecodeErrorZ represents a success state.
2269     */
2270    bool result_ok;
2271 } LDKCResult_ChannelFeaturesDecodeErrorZ;
2272
2273
2274
2275 /**
2276  * Features used within an invoice.
2277  */
2278 typedef struct MUST_USE_STRUCT LDKInvoiceFeatures {
2279    /**
2280     * A pointer to the opaque Rust object.
2281     * Nearly everywhere, inner must be non-null, however in places where
2282     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2283     */
2284    LDKnativeInvoiceFeatures *inner;
2285    /**
2286     * Indicates that this is the only struct which contains the same pointer.
2287     * Rust functions which take ownership of an object provided via an argument require
2288     * this to be true and invalidate the object pointed to by inner.
2289     */
2290    bool is_owned;
2291 } LDKInvoiceFeatures;
2292
2293 /**
2294  * The contents of CResult_InvoiceFeaturesDecodeErrorZ
2295  */
2296 typedef union LDKCResult_InvoiceFeaturesDecodeErrorZPtr {
2297    /**
2298     * A pointer to the contents in the success state.
2299     * Reading from this pointer when `result_ok` is not set is undefined.
2300     */
2301    struct LDKInvoiceFeatures *result;
2302    /**
2303     * A pointer to the contents in the error state.
2304     * Reading from this pointer when `result_ok` is set is undefined.
2305     */
2306    struct LDKDecodeError *err;
2307 } LDKCResult_InvoiceFeaturesDecodeErrorZPtr;
2308
2309 /**
2310  * A CResult_InvoiceFeaturesDecodeErrorZ represents the result of a fallible operation,
2311  * containing a crate::ln::features::InvoiceFeatures on success and a crate::ln::msgs::DecodeError on failure.
2312  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2313  */
2314 typedef struct LDKCResult_InvoiceFeaturesDecodeErrorZ {
2315    /**
2316     * The contents of this CResult_InvoiceFeaturesDecodeErrorZ, accessible via either
2317     * `err` or `result` depending on the state of `result_ok`.
2318     */
2319    union LDKCResult_InvoiceFeaturesDecodeErrorZPtr contents;
2320    /**
2321     * Whether this CResult_InvoiceFeaturesDecodeErrorZ represents a success state.
2322     */
2323    bool result_ok;
2324 } LDKCResult_InvoiceFeaturesDecodeErrorZ;
2325
2326
2327
2328 /**
2329  * Options which apply on a per-channel basis and may change at runtime or based on negotiation
2330  * with our counterparty.
2331  */
2332 typedef struct MUST_USE_STRUCT LDKChannelConfig {
2333    /**
2334     * A pointer to the opaque Rust object.
2335     * Nearly everywhere, inner must be non-null, however in places where
2336     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2337     */
2338    LDKnativeChannelConfig *inner;
2339    /**
2340     * Indicates that this is the only struct which contains the same pointer.
2341     * Rust functions which take ownership of an object provided via an argument require
2342     * this to be true and invalidate the object pointed to by inner.
2343     */
2344    bool is_owned;
2345 } LDKChannelConfig;
2346
2347 /**
2348  * The contents of CResult_ChannelConfigDecodeErrorZ
2349  */
2350 typedef union LDKCResult_ChannelConfigDecodeErrorZPtr {
2351    /**
2352     * A pointer to the contents in the success state.
2353     * Reading from this pointer when `result_ok` is not set is undefined.
2354     */
2355    struct LDKChannelConfig *result;
2356    /**
2357     * A pointer to the contents in the error state.
2358     * Reading from this pointer when `result_ok` is set is undefined.
2359     */
2360    struct LDKDecodeError *err;
2361 } LDKCResult_ChannelConfigDecodeErrorZPtr;
2362
2363 /**
2364  * A CResult_ChannelConfigDecodeErrorZ represents the result of a fallible operation,
2365  * containing a crate::util::config::ChannelConfig on success and a crate::ln::msgs::DecodeError on failure.
2366  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2367  */
2368 typedef struct LDKCResult_ChannelConfigDecodeErrorZ {
2369    /**
2370     * The contents of this CResult_ChannelConfigDecodeErrorZ, accessible via either
2371     * `err` or `result` depending on the state of `result_ok`.
2372     */
2373    union LDKCResult_ChannelConfigDecodeErrorZPtr contents;
2374    /**
2375     * Whether this CResult_ChannelConfigDecodeErrorZ represents a success state.
2376     */
2377    bool result_ok;
2378 } LDKCResult_ChannelConfigDecodeErrorZ;
2379
2380 /**
2381  * An enum which can either contain a u64 or not
2382  */
2383 typedef enum LDKCOption_u64Z_Tag {
2384    /**
2385     * When we're in this state, this COption_u64Z contains a u64
2386     */
2387    LDKCOption_u64Z_Some,
2388    /**
2389     * When we're in this state, this COption_u64Z contains nothing
2390     */
2391    LDKCOption_u64Z_None,
2392    /**
2393     * Must be last for serialization purposes
2394     */
2395    LDKCOption_u64Z_Sentinel,
2396 } LDKCOption_u64Z_Tag;
2397
2398 typedef struct LDKCOption_u64Z {
2399    LDKCOption_u64Z_Tag tag;
2400    union {
2401       struct {
2402          uint64_t some;
2403       };
2404    };
2405 } LDKCOption_u64Z;
2406
2407
2408
2409 /**
2410  * Details about one direction of a channel. Received
2411  * within a channel update.
2412  */
2413 typedef struct MUST_USE_STRUCT LDKDirectionalChannelInfo {
2414    /**
2415     * A pointer to the opaque Rust object.
2416     * Nearly everywhere, inner must be non-null, however in places where
2417     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2418     */
2419    LDKnativeDirectionalChannelInfo *inner;
2420    /**
2421     * Indicates that this is the only struct which contains the same pointer.
2422     * Rust functions which take ownership of an object provided via an argument require
2423     * this to be true and invalidate the object pointed to by inner.
2424     */
2425    bool is_owned;
2426 } LDKDirectionalChannelInfo;
2427
2428 /**
2429  * The contents of CResult_DirectionalChannelInfoDecodeErrorZ
2430  */
2431 typedef union LDKCResult_DirectionalChannelInfoDecodeErrorZPtr {
2432    /**
2433     * A pointer to the contents in the success state.
2434     * Reading from this pointer when `result_ok` is not set is undefined.
2435     */
2436    struct LDKDirectionalChannelInfo *result;
2437    /**
2438     * A pointer to the contents in the error state.
2439     * Reading from this pointer when `result_ok` is set is undefined.
2440     */
2441    struct LDKDecodeError *err;
2442 } LDKCResult_DirectionalChannelInfoDecodeErrorZPtr;
2443
2444 /**
2445  * A CResult_DirectionalChannelInfoDecodeErrorZ represents the result of a fallible operation,
2446  * containing a crate::routing::network_graph::DirectionalChannelInfo on success and a crate::ln::msgs::DecodeError on failure.
2447  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2448  */
2449 typedef struct LDKCResult_DirectionalChannelInfoDecodeErrorZ {
2450    /**
2451     * The contents of this CResult_DirectionalChannelInfoDecodeErrorZ, accessible via either
2452     * `err` or `result` depending on the state of `result_ok`.
2453     */
2454    union LDKCResult_DirectionalChannelInfoDecodeErrorZPtr contents;
2455    /**
2456     * Whether this CResult_DirectionalChannelInfoDecodeErrorZ represents a success state.
2457     */
2458    bool result_ok;
2459 } LDKCResult_DirectionalChannelInfoDecodeErrorZ;
2460
2461
2462
2463 /**
2464  * Details about a channel (both directions).
2465  * Received within a channel announcement.
2466  */
2467 typedef struct MUST_USE_STRUCT LDKChannelInfo {
2468    /**
2469     * A pointer to the opaque Rust object.
2470     * Nearly everywhere, inner must be non-null, however in places where
2471     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2472     */
2473    LDKnativeChannelInfo *inner;
2474    /**
2475     * Indicates that this is the only struct which contains the same pointer.
2476     * Rust functions which take ownership of an object provided via an argument require
2477     * this to be true and invalidate the object pointed to by inner.
2478     */
2479    bool is_owned;
2480 } LDKChannelInfo;
2481
2482 /**
2483  * The contents of CResult_ChannelInfoDecodeErrorZ
2484  */
2485 typedef union LDKCResult_ChannelInfoDecodeErrorZPtr {
2486    /**
2487     * A pointer to the contents in the success state.
2488     * Reading from this pointer when `result_ok` is not set is undefined.
2489     */
2490    struct LDKChannelInfo *result;
2491    /**
2492     * A pointer to the contents in the error state.
2493     * Reading from this pointer when `result_ok` is set is undefined.
2494     */
2495    struct LDKDecodeError *err;
2496 } LDKCResult_ChannelInfoDecodeErrorZPtr;
2497
2498 /**
2499  * A CResult_ChannelInfoDecodeErrorZ represents the result of a fallible operation,
2500  * containing a crate::routing::network_graph::ChannelInfo on success and a crate::ln::msgs::DecodeError on failure.
2501  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2502  */
2503 typedef struct LDKCResult_ChannelInfoDecodeErrorZ {
2504    /**
2505     * The contents of this CResult_ChannelInfoDecodeErrorZ, accessible via either
2506     * `err` or `result` depending on the state of `result_ok`.
2507     */
2508    union LDKCResult_ChannelInfoDecodeErrorZPtr contents;
2509    /**
2510     * Whether this CResult_ChannelInfoDecodeErrorZ represents a success state.
2511     */
2512    bool result_ok;
2513 } LDKCResult_ChannelInfoDecodeErrorZ;
2514
2515
2516
2517 /**
2518  * Fees for routing via a given channel or a node
2519  */
2520 typedef struct MUST_USE_STRUCT LDKRoutingFees {
2521    /**
2522     * A pointer to the opaque Rust object.
2523     * Nearly everywhere, inner must be non-null, however in places where
2524     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2525     */
2526    LDKnativeRoutingFees *inner;
2527    /**
2528     * Indicates that this is the only struct which contains the same pointer.
2529     * Rust functions which take ownership of an object provided via an argument require
2530     * this to be true and invalidate the object pointed to by inner.
2531     */
2532    bool is_owned;
2533 } LDKRoutingFees;
2534
2535 /**
2536  * The contents of CResult_RoutingFeesDecodeErrorZ
2537  */
2538 typedef union LDKCResult_RoutingFeesDecodeErrorZPtr {
2539    /**
2540     * A pointer to the contents in the success state.
2541     * Reading from this pointer when `result_ok` is not set is undefined.
2542     */
2543    struct LDKRoutingFees *result;
2544    /**
2545     * A pointer to the contents in the error state.
2546     * Reading from this pointer when `result_ok` is set is undefined.
2547     */
2548    struct LDKDecodeError *err;
2549 } LDKCResult_RoutingFeesDecodeErrorZPtr;
2550
2551 /**
2552  * A CResult_RoutingFeesDecodeErrorZ represents the result of a fallible operation,
2553  * containing a crate::routing::network_graph::RoutingFees on success and a crate::ln::msgs::DecodeError on failure.
2554  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2555  */
2556 typedef struct LDKCResult_RoutingFeesDecodeErrorZ {
2557    /**
2558     * The contents of this CResult_RoutingFeesDecodeErrorZ, accessible via either
2559     * `err` or `result` depending on the state of `result_ok`.
2560     */
2561    union LDKCResult_RoutingFeesDecodeErrorZPtr contents;
2562    /**
2563     * Whether this CResult_RoutingFeesDecodeErrorZ represents a success state.
2564     */
2565    bool result_ok;
2566 } LDKCResult_RoutingFeesDecodeErrorZ;
2567
2568 /**
2569  * A 4-byte byte array.
2570  */
2571 typedef struct LDKFourBytes {
2572    /**
2573     * The four bytes
2574     */
2575    uint8_t data[4];
2576 } LDKFourBytes;
2577
2578 /**
2579  * A 16-byte byte array.
2580  */
2581 typedef struct LDKSixteenBytes {
2582    /**
2583     * The sixteen bytes
2584     */
2585    uint8_t data[16];
2586 } LDKSixteenBytes;
2587
2588 /**
2589  * A 10-byte byte array.
2590  */
2591 typedef struct LDKTenBytes {
2592    /**
2593     * The ten bytes
2594     */
2595    uint8_t data[10];
2596 } LDKTenBytes;
2597
2598 /**
2599  * Arbitrary 32 bytes, which could represent one of a few different things. You probably want to
2600  * look up the corresponding function in rust-lightning's docs.
2601  */
2602 typedef struct LDKThirtyTwoBytes {
2603    /**
2604     * The thirty-two bytes
2605     */
2606    uint8_t data[32];
2607 } LDKThirtyTwoBytes;
2608
2609 /**
2610  * An address which can be used to connect to a remote peer
2611  */
2612 typedef enum LDKNetAddress_Tag {
2613    /**
2614     * An IPv4 address/port on which the peer is listening.
2615     */
2616    LDKNetAddress_IPv4,
2617    /**
2618     * An IPv6 address/port on which the peer is listening.
2619     */
2620    LDKNetAddress_IPv6,
2621    /**
2622     * An old-style Tor onion address/port on which the peer is listening.
2623     */
2624    LDKNetAddress_OnionV2,
2625    /**
2626     * A new-style Tor onion address/port on which the peer is listening.
2627     * To create the human-readable \"hostname\", concatenate ed25519_pubkey, checksum, and version,
2628     * wrap as base32 and append \".onion\".
2629     */
2630    LDKNetAddress_OnionV3,
2631    /**
2632     * Must be last for serialization purposes
2633     */
2634    LDKNetAddress_Sentinel,
2635 } LDKNetAddress_Tag;
2636
2637 typedef struct LDKNetAddress_LDKIPv4_Body {
2638    /**
2639     * The 4-byte IPv4 address
2640     */
2641    struct LDKFourBytes addr;
2642    /**
2643     * The port on which the node is listening
2644     */
2645    uint16_t port;
2646 } LDKNetAddress_LDKIPv4_Body;
2647
2648 typedef struct LDKNetAddress_LDKIPv6_Body {
2649    /**
2650     * The 16-byte IPv6 address
2651     */
2652    struct LDKSixteenBytes addr;
2653    /**
2654     * The port on which the node is listening
2655     */
2656    uint16_t port;
2657 } LDKNetAddress_LDKIPv6_Body;
2658
2659 typedef struct LDKNetAddress_LDKOnionV2_Body {
2660    /**
2661     * The bytes (usually encoded in base32 with \".onion\" appended)
2662     */
2663    struct LDKTenBytes addr;
2664    /**
2665     * The port on which the node is listening
2666     */
2667    uint16_t port;
2668 } LDKNetAddress_LDKOnionV2_Body;
2669
2670 typedef struct LDKNetAddress_LDKOnionV3_Body {
2671    /**
2672     * The ed25519 long-term public key of the peer
2673     */
2674    struct LDKThirtyTwoBytes ed25519_pubkey;
2675    /**
2676     * The checksum of the pubkey and version, as included in the onion address
2677     */
2678    uint16_t checksum;
2679    /**
2680     * The version byte, as defined by the Tor Onion v3 spec.
2681     */
2682    uint8_t version;
2683    /**
2684     * The port on which the node is listening
2685     */
2686    uint16_t port;
2687 } LDKNetAddress_LDKOnionV3_Body;
2688
2689 typedef struct MUST_USE_STRUCT LDKNetAddress {
2690    LDKNetAddress_Tag tag;
2691    union {
2692       LDKNetAddress_LDKIPv4_Body i_pv4;
2693       LDKNetAddress_LDKIPv6_Body i_pv6;
2694       LDKNetAddress_LDKOnionV2_Body onion_v2;
2695       LDKNetAddress_LDKOnionV3_Body onion_v3;
2696    };
2697 } LDKNetAddress;
2698
2699 /**
2700  * A dynamically-allocated array of crate::ln::msgs::NetAddresss of arbitrary size.
2701  * This corresponds to std::vector in C++
2702  */
2703 typedef struct LDKCVec_NetAddressZ {
2704    /**
2705     * The elements in the array.
2706     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2707     */
2708    struct LDKNetAddress *data;
2709    /**
2710     * The number of elements pointed to by `data`.
2711     */
2712    uintptr_t datalen;
2713 } LDKCVec_NetAddressZ;
2714
2715
2716
2717 /**
2718  * Information received in the latest node_announcement from this node.
2719  */
2720 typedef struct MUST_USE_STRUCT LDKNodeAnnouncementInfo {
2721    /**
2722     * A pointer to the opaque Rust object.
2723     * Nearly everywhere, inner must be non-null, however in places where
2724     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2725     */
2726    LDKnativeNodeAnnouncementInfo *inner;
2727    /**
2728     * Indicates that this is the only struct which contains the same pointer.
2729     * Rust functions which take ownership of an object provided via an argument require
2730     * this to be true and invalidate the object pointed to by inner.
2731     */
2732    bool is_owned;
2733 } LDKNodeAnnouncementInfo;
2734
2735 /**
2736  * The contents of CResult_NodeAnnouncementInfoDecodeErrorZ
2737  */
2738 typedef union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr {
2739    /**
2740     * A pointer to the contents in the success state.
2741     * Reading from this pointer when `result_ok` is not set is undefined.
2742     */
2743    struct LDKNodeAnnouncementInfo *result;
2744    /**
2745     * A pointer to the contents in the error state.
2746     * Reading from this pointer when `result_ok` is set is undefined.
2747     */
2748    struct LDKDecodeError *err;
2749 } LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr;
2750
2751 /**
2752  * A CResult_NodeAnnouncementInfoDecodeErrorZ represents the result of a fallible operation,
2753  * containing a crate::routing::network_graph::NodeAnnouncementInfo on success and a crate::ln::msgs::DecodeError on failure.
2754  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2755  */
2756 typedef struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ {
2757    /**
2758     * The contents of this CResult_NodeAnnouncementInfoDecodeErrorZ, accessible via either
2759     * `err` or `result` depending on the state of `result_ok`.
2760     */
2761    union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr contents;
2762    /**
2763     * Whether this CResult_NodeAnnouncementInfoDecodeErrorZ represents a success state.
2764     */
2765    bool result_ok;
2766 } LDKCResult_NodeAnnouncementInfoDecodeErrorZ;
2767
2768 /**
2769  * A dynamically-allocated array of u64s of arbitrary size.
2770  * This corresponds to std::vector in C++
2771  */
2772 typedef struct LDKCVec_u64Z {
2773    /**
2774     * The elements in the array.
2775     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2776     */
2777    uint64_t *data;
2778    /**
2779     * The number of elements pointed to by `data`.
2780     */
2781    uintptr_t datalen;
2782 } LDKCVec_u64Z;
2783
2784
2785
2786 /**
2787  * Details about a node in the network, known from the network announcement.
2788  */
2789 typedef struct MUST_USE_STRUCT LDKNodeInfo {
2790    /**
2791     * A pointer to the opaque Rust object.
2792     * Nearly everywhere, inner must be non-null, however in places where
2793     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2794     */
2795    LDKnativeNodeInfo *inner;
2796    /**
2797     * Indicates that this is the only struct which contains the same pointer.
2798     * Rust functions which take ownership of an object provided via an argument require
2799     * this to be true and invalidate the object pointed to by inner.
2800     */
2801    bool is_owned;
2802 } LDKNodeInfo;
2803
2804 /**
2805  * The contents of CResult_NodeInfoDecodeErrorZ
2806  */
2807 typedef union LDKCResult_NodeInfoDecodeErrorZPtr {
2808    /**
2809     * A pointer to the contents in the success state.
2810     * Reading from this pointer when `result_ok` is not set is undefined.
2811     */
2812    struct LDKNodeInfo *result;
2813    /**
2814     * A pointer to the contents in the error state.
2815     * Reading from this pointer when `result_ok` is set is undefined.
2816     */
2817    struct LDKDecodeError *err;
2818 } LDKCResult_NodeInfoDecodeErrorZPtr;
2819
2820 /**
2821  * A CResult_NodeInfoDecodeErrorZ represents the result of a fallible operation,
2822  * containing a crate::routing::network_graph::NodeInfo on success and a crate::ln::msgs::DecodeError on failure.
2823  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2824  */
2825 typedef struct LDKCResult_NodeInfoDecodeErrorZ {
2826    /**
2827     * The contents of this CResult_NodeInfoDecodeErrorZ, accessible via either
2828     * `err` or `result` depending on the state of `result_ok`.
2829     */
2830    union LDKCResult_NodeInfoDecodeErrorZPtr contents;
2831    /**
2832     * Whether this CResult_NodeInfoDecodeErrorZ represents a success state.
2833     */
2834    bool result_ok;
2835 } LDKCResult_NodeInfoDecodeErrorZ;
2836
2837
2838
2839 /**
2840  * Represents the network as nodes and channels between them
2841  */
2842 typedef struct MUST_USE_STRUCT LDKNetworkGraph {
2843    /**
2844     * A pointer to the opaque Rust object.
2845     * Nearly everywhere, inner must be non-null, however in places where
2846     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2847     */
2848    LDKnativeNetworkGraph *inner;
2849    /**
2850     * Indicates that this is the only struct which contains the same pointer.
2851     * Rust functions which take ownership of an object provided via an argument require
2852     * this to be true and invalidate the object pointed to by inner.
2853     */
2854    bool is_owned;
2855 } LDKNetworkGraph;
2856
2857 /**
2858  * The contents of CResult_NetworkGraphDecodeErrorZ
2859  */
2860 typedef union LDKCResult_NetworkGraphDecodeErrorZPtr {
2861    /**
2862     * A pointer to the contents in the success state.
2863     * Reading from this pointer when `result_ok` is not set is undefined.
2864     */
2865    struct LDKNetworkGraph *result;
2866    /**
2867     * A pointer to the contents in the error state.
2868     * Reading from this pointer when `result_ok` is set is undefined.
2869     */
2870    struct LDKDecodeError *err;
2871 } LDKCResult_NetworkGraphDecodeErrorZPtr;
2872
2873 /**
2874  * A CResult_NetworkGraphDecodeErrorZ represents the result of a fallible operation,
2875  * containing a crate::routing::network_graph::NetworkGraph on success and a crate::ln::msgs::DecodeError on failure.
2876  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2877  */
2878 typedef struct LDKCResult_NetworkGraphDecodeErrorZ {
2879    /**
2880     * The contents of this CResult_NetworkGraphDecodeErrorZ, accessible via either
2881     * `err` or `result` depending on the state of `result_ok`.
2882     */
2883    union LDKCResult_NetworkGraphDecodeErrorZPtr contents;
2884    /**
2885     * Whether this CResult_NetworkGraphDecodeErrorZ represents a success state.
2886     */
2887    bool result_ok;
2888 } LDKCResult_NetworkGraphDecodeErrorZ;
2889
2890 /**
2891  * A tuple of 2 elements. See the individual fields for the types contained.
2892  */
2893 typedef struct LDKC2Tuple_usizeTransactionZ {
2894    /**
2895     * The element at position 0
2896     */
2897    uintptr_t a;
2898    /**
2899     * The element at position 1
2900     */
2901    struct LDKTransaction b;
2902 } LDKC2Tuple_usizeTransactionZ;
2903
2904 /**
2905  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_usizeTransactionZs of arbitrary size.
2906  * This corresponds to std::vector in C++
2907  */
2908 typedef struct LDKCVec_C2Tuple_usizeTransactionZZ {
2909    /**
2910     * The elements in the array.
2911     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2912     */
2913    struct LDKC2Tuple_usizeTransactionZ *data;
2914    /**
2915     * The number of elements pointed to by `data`.
2916     */
2917    uintptr_t datalen;
2918 } LDKCVec_C2Tuple_usizeTransactionZZ;
2919
2920 /**
2921  * The contents of CResult_NoneChannelMonitorUpdateErrZ
2922  */
2923 typedef union LDKCResult_NoneChannelMonitorUpdateErrZPtr {
2924    /**
2925     * Note that this value is always NULL, as there are no contents in the OK variant
2926     */
2927    void *result;
2928    /**
2929     * A pointer to the contents in the error state.
2930     * Reading from this pointer when `result_ok` is set is undefined.
2931     */
2932    enum LDKChannelMonitorUpdateErr *err;
2933 } LDKCResult_NoneChannelMonitorUpdateErrZPtr;
2934
2935 /**
2936  * A CResult_NoneChannelMonitorUpdateErrZ represents the result of a fallible operation,
2937  * containing a () on success and a crate::chain::channelmonitor::ChannelMonitorUpdateErr on failure.
2938  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2939  */
2940 typedef struct LDKCResult_NoneChannelMonitorUpdateErrZ {
2941    /**
2942     * The contents of this CResult_NoneChannelMonitorUpdateErrZ, accessible via either
2943     * `err` or `result` depending on the state of `result_ok`.
2944     */
2945    union LDKCResult_NoneChannelMonitorUpdateErrZPtr contents;
2946    /**
2947     * Whether this CResult_NoneChannelMonitorUpdateErrZ represents a success state.
2948     */
2949    bool result_ok;
2950 } LDKCResult_NoneChannelMonitorUpdateErrZ;
2951
2952
2953
2954 /**
2955  * Simple structure sent back by `chain::Watch` when an HTLC from a forward channel is detected on
2956  * chain. Used to update the corresponding HTLC in the backward channel. Failing to pass the
2957  * preimage claim backward will lead to loss of funds.
2958  */
2959 typedef struct MUST_USE_STRUCT LDKHTLCUpdate {
2960    /**
2961     * A pointer to the opaque Rust object.
2962     * Nearly everywhere, inner must be non-null, however in places where
2963     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2964     */
2965    LDKnativeHTLCUpdate *inner;
2966    /**
2967     * Indicates that this is the only struct which contains the same pointer.
2968     * Rust functions which take ownership of an object provided via an argument require
2969     * this to be true and invalidate the object pointed to by inner.
2970     */
2971    bool is_owned;
2972 } LDKHTLCUpdate;
2973
2974
2975
2976 /**
2977  * A reference to a transaction output.
2978  *
2979  * Differs from bitcoin::blockdata::transaction::OutPoint as the index is a u16 instead of u32
2980  * due to LN's restrictions on index values. Should reduce (possibly) unsafe conversions this way.
2981  */
2982 typedef struct MUST_USE_STRUCT LDKOutPoint {
2983    /**
2984     * A pointer to the opaque Rust object.
2985     * Nearly everywhere, inner must be non-null, however in places where
2986     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2987     */
2988    LDKnativeOutPoint *inner;
2989    /**
2990     * Indicates that this is the only struct which contains the same pointer.
2991     * Rust functions which take ownership of an object provided via an argument require
2992     * this to be true and invalidate the object pointed to by inner.
2993     */
2994    bool is_owned;
2995 } LDKOutPoint;
2996
2997 /**
2998  * An event to be processed by the ChannelManager.
2999  */
3000 typedef enum LDKMonitorEvent_Tag {
3001    /**
3002     * A monitor event containing an HTLCUpdate.
3003     */
3004    LDKMonitorEvent_HTLCEvent,
3005    /**
3006     * A monitor event that the Channel's commitment transaction was broadcasted.
3007     */
3008    LDKMonitorEvent_CommitmentTxBroadcasted,
3009    /**
3010     * Must be last for serialization purposes
3011     */
3012    LDKMonitorEvent_Sentinel,
3013 } LDKMonitorEvent_Tag;
3014
3015 typedef struct MUST_USE_STRUCT LDKMonitorEvent {
3016    LDKMonitorEvent_Tag tag;
3017    union {
3018       struct {
3019          struct LDKHTLCUpdate htlc_event;
3020       };
3021       struct {
3022          struct LDKOutPoint commitment_tx_broadcasted;
3023       };
3024    };
3025 } LDKMonitorEvent;
3026
3027 /**
3028  * A dynamically-allocated array of crate::chain::channelmonitor::MonitorEvents of arbitrary size.
3029  * This corresponds to std::vector in C++
3030  */
3031 typedef struct LDKCVec_MonitorEventZ {
3032    /**
3033     * The elements in the array.
3034     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3035     */
3036    struct LDKMonitorEvent *data;
3037    /**
3038     * The number of elements pointed to by `data`.
3039     */
3040    uintptr_t datalen;
3041 } LDKCVec_MonitorEventZ;
3042
3043
3044
3045 /**
3046  * Information about a spendable output to a P2WSH script. See
3047  * SpendableOutputDescriptor::DelayedPaymentOutput for more details on how to spend this.
3048  */
3049 typedef struct MUST_USE_STRUCT LDKDelayedPaymentOutputDescriptor {
3050    /**
3051     * A pointer to the opaque Rust object.
3052     * Nearly everywhere, inner must be non-null, however in places where
3053     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3054     */
3055    LDKnativeDelayedPaymentOutputDescriptor *inner;
3056    /**
3057     * Indicates that this is the only struct which contains the same pointer.
3058     * Rust functions which take ownership of an object provided via an argument require
3059     * this to be true and invalidate the object pointed to by inner.
3060     */
3061    bool is_owned;
3062 } LDKDelayedPaymentOutputDescriptor;
3063
3064
3065
3066 /**
3067  * Information about a spendable output to our \"payment key\". See
3068  * SpendableOutputDescriptor::StaticPaymentOutput for more details on how to spend this.
3069  */
3070 typedef struct MUST_USE_STRUCT LDKStaticPaymentOutputDescriptor {
3071    /**
3072     * A pointer to the opaque Rust object.
3073     * Nearly everywhere, inner must be non-null, however in places where
3074     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3075     */
3076    LDKnativeStaticPaymentOutputDescriptor *inner;
3077    /**
3078     * Indicates that this is the only struct which contains the same pointer.
3079     * Rust functions which take ownership of an object provided via an argument require
3080     * this to be true and invalidate the object pointed to by inner.
3081     */
3082    bool is_owned;
3083 } LDKStaticPaymentOutputDescriptor;
3084
3085 /**
3086  * When on-chain outputs are created by rust-lightning (which our counterparty is not able to
3087  * claim at any point in the future) an event is generated which you must track and be able to
3088  * spend on-chain. The information needed to do this is provided in this enum, including the
3089  * outpoint describing which txid and output index is available, the full output which exists at
3090  * that txid/index, and any keys or other information required to sign.
3091  */
3092 typedef enum LDKSpendableOutputDescriptor_Tag {
3093    /**
3094     * An output to a script which was provided via KeysInterface directly, either from
3095     * `get_destination_script()` or `get_shutdown_pubkey()`, thus you should already know how to
3096     * spend it. No secret keys are provided as rust-lightning was never given any key.
3097     * These may include outputs from a transaction punishing our counterparty or claiming an HTLC
3098     * on-chain using the payment preimage or after it has timed out.
3099     */
3100    LDKSpendableOutputDescriptor_StaticOutput,
3101    /**
3102     * An output to a P2WSH script which can be spent with a single signature after a CSV delay.
3103     *
3104     * The witness in the spending input should be:
3105     * <BIP 143 signature> <empty vector> (MINIMALIF standard rule) <provided witnessScript>
3106     *
3107     * Note that the nSequence field in the spending input must be set to to_self_delay
3108     * (which means the transaction is not broadcastable until at least to_self_delay
3109     * blocks after the outpoint confirms).
3110     *
3111     * These are generally the result of a \"revocable\" output to us, spendable only by us unless
3112     * it is an output from an old state which we broadcast (which should never happen).
3113     *
3114     * To derive the delayed_payment key which is used to sign for this input, you must pass the
3115     * holder delayed_payment_base_key (ie the private key which corresponds to the pubkey in
3116     * Sign::pubkeys().delayed_payment_basepoint) and the provided per_commitment_point to
3117     * chan_utils::derive_private_key. The public key can be generated without the secret key
3118     * using chan_utils::derive_public_key and only the delayed_payment_basepoint which appears in
3119     * Sign::pubkeys().
3120     *
3121     * To derive the revocation_pubkey provided here (which is used in the witness
3122     * script generation), you must pass the counterparty revocation_basepoint (which appears in the
3123     * call to Sign::ready_channel) and the provided per_commitment point
3124     * to chan_utils::derive_public_revocation_key.
3125     *
3126     * The witness script which is hashed and included in the output script_pubkey may be
3127     * regenerated by passing the revocation_pubkey (derived as above), our delayed_payment pubkey
3128     * (derived as above), and the to_self_delay contained here to
3129     * chan_utils::get_revokeable_redeemscript.
3130     */
3131    LDKSpendableOutputDescriptor_DelayedPaymentOutput,
3132    /**
3133     * An output to a P2WPKH, spendable exclusively by our payment key (ie the private key which
3134     * corresponds to the public key in Sign::pubkeys().payment_point).
3135     * The witness in the spending input, is, thus, simply:
3136     * <BIP 143 signature> <payment key>
3137     *
3138     * These are generally the result of our counterparty having broadcast the current state,
3139     * allowing us to claim the non-HTLC-encumbered outputs immediately.
3140     */
3141    LDKSpendableOutputDescriptor_StaticPaymentOutput,
3142    /**
3143     * Must be last for serialization purposes
3144     */
3145    LDKSpendableOutputDescriptor_Sentinel,
3146 } LDKSpendableOutputDescriptor_Tag;
3147
3148 typedef struct LDKSpendableOutputDescriptor_LDKStaticOutput_Body {
3149    /**
3150     * The outpoint which is spendable
3151     */
3152    struct LDKOutPoint outpoint;
3153    /**
3154     * The output which is referenced by the given outpoint.
3155     */
3156    struct LDKTxOut output;
3157 } LDKSpendableOutputDescriptor_LDKStaticOutput_Body;
3158
3159 typedef struct MUST_USE_STRUCT LDKSpendableOutputDescriptor {
3160    LDKSpendableOutputDescriptor_Tag tag;
3161    union {
3162       LDKSpendableOutputDescriptor_LDKStaticOutput_Body static_output;
3163       struct {
3164          struct LDKDelayedPaymentOutputDescriptor delayed_payment_output;
3165       };
3166       struct {
3167          struct LDKStaticPaymentOutputDescriptor static_payment_output;
3168       };
3169    };
3170 } LDKSpendableOutputDescriptor;
3171
3172 /**
3173  * A dynamically-allocated array of crate::chain::keysinterface::SpendableOutputDescriptors of arbitrary size.
3174  * This corresponds to std::vector in C++
3175  */
3176 typedef struct LDKCVec_SpendableOutputDescriptorZ {
3177    /**
3178     * The elements in the array.
3179     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3180     */
3181    struct LDKSpendableOutputDescriptor *data;
3182    /**
3183     * The number of elements pointed to by `data`.
3184     */
3185    uintptr_t datalen;
3186 } LDKCVec_SpendableOutputDescriptorZ;
3187
3188 /**
3189  * An Event which you should probably take some action in response to.
3190  *
3191  * Note that while Writeable and Readable are implemented for Event, you probably shouldn't use
3192  * them directly as they don't round-trip exactly (for example FundingGenerationReady is never
3193  * written as it makes no sense to respond to it after reconnecting to peers).
3194  */
3195 typedef enum LDKEvent_Tag {
3196    /**
3197     * Used to indicate that the client should generate a funding transaction with the given
3198     * parameters and then call ChannelManager::funding_transaction_generated.
3199     * Generated in ChannelManager message handling.
3200     * Note that *all inputs* in the funding transaction must spend SegWit outputs or your
3201     * counterparty can steal your funds!
3202     */
3203    LDKEvent_FundingGenerationReady,
3204    /**
3205     * Indicates we've received money! Just gotta dig out that payment preimage and feed it to
3206     * ChannelManager::claim_funds to get it....
3207     * Note that if the preimage is not known or the amount paid is incorrect, you should call
3208     * ChannelManager::fail_htlc_backwards to free up resources for this HTLC and avoid
3209     * network congestion.
3210     * The amount paid should be considered 'incorrect' when it is less than or more than twice
3211     * the amount expected.
3212     * If you fail to call either ChannelManager::claim_funds or
3213     * ChannelManager::fail_htlc_backwards within the HTLC's timeout, the HTLC will be
3214     * automatically failed.
3215     */
3216    LDKEvent_PaymentReceived,
3217    /**
3218     * Indicates an outbound payment we made succeeded (ie it made it all the way to its target
3219     * and we got back the payment preimage for it).
3220     * Note that duplicative PaymentSent Events may be generated - it is your responsibility to
3221     * deduplicate them by payment_preimage (which MUST be unique)!
3222     */
3223    LDKEvent_PaymentSent,
3224    /**
3225     * Indicates an outbound payment we made failed. Probably some intermediary node dropped
3226     * something. You may wish to retry with a different route.
3227     * Note that duplicative PaymentFailed Events may be generated - it is your responsibility to
3228     * deduplicate them by payment_hash (which MUST be unique)!
3229     */
3230    LDKEvent_PaymentFailed,
3231    /**
3232     * Used to indicate that ChannelManager::process_pending_htlc_forwards should be called at a
3233     * time in the future.
3234     */
3235    LDKEvent_PendingHTLCsForwardable,
3236    /**
3237     * Used to indicate that an output was generated on-chain which you should know how to spend.
3238     * Such an output will *not* ever be spent by rust-lightning, and are not at risk of your
3239     * counterparty spending them due to some kind of timeout. Thus, you need to store them
3240     * somewhere and spend them when you create on-chain transactions.
3241     */
3242    LDKEvent_SpendableOutputs,
3243    /**
3244     * Must be last for serialization purposes
3245     */
3246    LDKEvent_Sentinel,
3247 } LDKEvent_Tag;
3248
3249 typedef struct LDKEvent_LDKFundingGenerationReady_Body {
3250    /**
3251     * The random channel_id we picked which you'll need to pass into
3252     * ChannelManager::funding_transaction_generated.
3253     */
3254    struct LDKThirtyTwoBytes temporary_channel_id;
3255    /**
3256     * The value, in satoshis, that the output should have.
3257     */
3258    uint64_t channel_value_satoshis;
3259    /**
3260     * The script which should be used in the transaction output.
3261     */
3262    struct LDKCVec_u8Z output_script;
3263    /**
3264     * The value passed in to ChannelManager::create_channel
3265     */
3266    uint64_t user_channel_id;
3267 } LDKEvent_LDKFundingGenerationReady_Body;
3268
3269 typedef struct LDKEvent_LDKPaymentReceived_Body {
3270    /**
3271     * The hash for which the preimage should be handed to the ChannelManager.
3272     */
3273    struct LDKThirtyTwoBytes payment_hash;
3274    /**
3275     * The \"payment secret\". This authenticates the sender to the recipient, preventing a
3276     * number of deanonymization attacks during the routing process.
3277     * As nodes upgrade, the invoices you provide should likely migrate to setting the
3278     * payment_secret feature to required, at which point you should fail_backwards any HTLCs
3279     * which have a None here.
3280     * Until then, however, values of None should be ignored, and only incorrect Some values
3281     * should result in an HTLC fail_backwards.
3282     * Note that, in any case, this value must be passed as-is to any fail or claim calls as
3283     * the HTLC index includes this value.
3284     */
3285    struct LDKThirtyTwoBytes payment_secret;
3286    /**
3287     * The value, in thousandths of a satoshi, that this payment is for. Note that you must
3288     * compare this to the expected value before accepting the payment (as otherwise you are
3289     * providing proof-of-payment for less than the value you expected!).
3290     */
3291    uint64_t amt;
3292 } LDKEvent_LDKPaymentReceived_Body;
3293
3294 typedef struct LDKEvent_LDKPaymentSent_Body {
3295    /**
3296     * The preimage to the hash given to ChannelManager::send_payment.
3297     * Note that this serves as a payment receipt, if you wish to have such a thing, you must
3298     * store it somehow!
3299     */
3300    struct LDKThirtyTwoBytes payment_preimage;
3301 } LDKEvent_LDKPaymentSent_Body;
3302
3303 typedef struct LDKEvent_LDKPaymentFailed_Body {
3304    /**
3305     * The hash which was given to ChannelManager::send_payment.
3306     */
3307    struct LDKThirtyTwoBytes payment_hash;
3308    /**
3309     * Indicates the payment was rejected for some reason by the recipient. This implies that
3310     * the payment has failed, not just the route in question. If this is not set, you may
3311     * retry the payment via a different route.
3312     */
3313    bool rejected_by_dest;
3314 } LDKEvent_LDKPaymentFailed_Body;
3315
3316 typedef struct LDKEvent_LDKPendingHTLCsForwardable_Body {
3317    /**
3318     * The minimum amount of time that should be waited prior to calling
3319     * process_pending_htlc_forwards. To increase the effort required to correlate payments,
3320     * you should wait a random amount of time in roughly the range (now + time_forwardable,
3321     * now + 5*time_forwardable).
3322     */
3323    uint64_t time_forwardable;
3324 } LDKEvent_LDKPendingHTLCsForwardable_Body;
3325
3326 typedef struct LDKEvent_LDKSpendableOutputs_Body {
3327    /**
3328     * The outputs which you should store as spendable by you.
3329     */
3330    struct LDKCVec_SpendableOutputDescriptorZ outputs;
3331 } LDKEvent_LDKSpendableOutputs_Body;
3332
3333 typedef struct MUST_USE_STRUCT LDKEvent {
3334    LDKEvent_Tag tag;
3335    union {
3336       LDKEvent_LDKFundingGenerationReady_Body funding_generation_ready;
3337       LDKEvent_LDKPaymentReceived_Body payment_received;
3338       LDKEvent_LDKPaymentSent_Body payment_sent;
3339       LDKEvent_LDKPaymentFailed_Body payment_failed;
3340       LDKEvent_LDKPendingHTLCsForwardable_Body pending_htl_cs_forwardable;
3341       LDKEvent_LDKSpendableOutputs_Body spendable_outputs;
3342    };
3343 } LDKEvent;
3344
3345 /**
3346  * A dynamically-allocated array of crate::util::events::Events of arbitrary size.
3347  * This corresponds to std::vector in C++
3348  */
3349 typedef struct LDKCVec_EventZ {
3350    /**
3351     * The elements in the array.
3352     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3353     */
3354    struct LDKEvent *data;
3355    /**
3356     * The number of elements pointed to by `data`.
3357     */
3358    uintptr_t datalen;
3359 } LDKCVec_EventZ;
3360
3361 /**
3362  * The contents of CResult_OutPointDecodeErrorZ
3363  */
3364 typedef union LDKCResult_OutPointDecodeErrorZPtr {
3365    /**
3366     * A pointer to the contents in the success state.
3367     * Reading from this pointer when `result_ok` is not set is undefined.
3368     */
3369    struct LDKOutPoint *result;
3370    /**
3371     * A pointer to the contents in the error state.
3372     * Reading from this pointer when `result_ok` is set is undefined.
3373     */
3374    struct LDKDecodeError *err;
3375 } LDKCResult_OutPointDecodeErrorZPtr;
3376
3377 /**
3378  * A CResult_OutPointDecodeErrorZ represents the result of a fallible operation,
3379  * containing a crate::chain::transaction::OutPoint on success and a crate::ln::msgs::DecodeError on failure.
3380  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3381  */
3382 typedef struct LDKCResult_OutPointDecodeErrorZ {
3383    /**
3384     * The contents of this CResult_OutPointDecodeErrorZ, accessible via either
3385     * `err` or `result` depending on the state of `result_ok`.
3386     */
3387    union LDKCResult_OutPointDecodeErrorZPtr contents;
3388    /**
3389     * Whether this CResult_OutPointDecodeErrorZ represents a success state.
3390     */
3391    bool result_ok;
3392 } LDKCResult_OutPointDecodeErrorZ;
3393
3394
3395
3396 /**
3397  * An update generated by the underlying Channel itself which contains some new information the
3398  * ChannelMonitor should be made aware of.
3399  */
3400 typedef struct MUST_USE_STRUCT LDKChannelMonitorUpdate {
3401    /**
3402     * A pointer to the opaque Rust object.
3403     * Nearly everywhere, inner must be non-null, however in places where
3404     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3405     */
3406    LDKnativeChannelMonitorUpdate *inner;
3407    /**
3408     * Indicates that this is the only struct which contains the same pointer.
3409     * Rust functions which take ownership of an object provided via an argument require
3410     * this to be true and invalidate the object pointed to by inner.
3411     */
3412    bool is_owned;
3413 } LDKChannelMonitorUpdate;
3414
3415 /**
3416  * The contents of CResult_ChannelMonitorUpdateDecodeErrorZ
3417  */
3418 typedef union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr {
3419    /**
3420     * A pointer to the contents in the success state.
3421     * Reading from this pointer when `result_ok` is not set is undefined.
3422     */
3423    struct LDKChannelMonitorUpdate *result;
3424    /**
3425     * A pointer to the contents in the error state.
3426     * Reading from this pointer when `result_ok` is set is undefined.
3427     */
3428    struct LDKDecodeError *err;
3429 } LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr;
3430
3431 /**
3432  * A CResult_ChannelMonitorUpdateDecodeErrorZ represents the result of a fallible operation,
3433  * containing a crate::chain::channelmonitor::ChannelMonitorUpdate on success and a crate::ln::msgs::DecodeError on failure.
3434  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3435  */
3436 typedef struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ {
3437    /**
3438     * The contents of this CResult_ChannelMonitorUpdateDecodeErrorZ, accessible via either
3439     * `err` or `result` depending on the state of `result_ok`.
3440     */
3441    union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr contents;
3442    /**
3443     * Whether this CResult_ChannelMonitorUpdateDecodeErrorZ represents a success state.
3444     */
3445    bool result_ok;
3446 } LDKCResult_ChannelMonitorUpdateDecodeErrorZ;
3447
3448 /**
3449  * The contents of CResult_HTLCUpdateDecodeErrorZ
3450  */
3451 typedef union LDKCResult_HTLCUpdateDecodeErrorZPtr {
3452    /**
3453     * A pointer to the contents in the success state.
3454     * Reading from this pointer when `result_ok` is not set is undefined.
3455     */
3456    struct LDKHTLCUpdate *result;
3457    /**
3458     * A pointer to the contents in the error state.
3459     * Reading from this pointer when `result_ok` is set is undefined.
3460     */
3461    struct LDKDecodeError *err;
3462 } LDKCResult_HTLCUpdateDecodeErrorZPtr;
3463
3464 /**
3465  * A CResult_HTLCUpdateDecodeErrorZ represents the result of a fallible operation,
3466  * containing a crate::chain::channelmonitor::HTLCUpdate on success and a crate::ln::msgs::DecodeError on failure.
3467  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3468  */
3469 typedef struct LDKCResult_HTLCUpdateDecodeErrorZ {
3470    /**
3471     * The contents of this CResult_HTLCUpdateDecodeErrorZ, accessible via either
3472     * `err` or `result` depending on the state of `result_ok`.
3473     */
3474    union LDKCResult_HTLCUpdateDecodeErrorZPtr contents;
3475    /**
3476     * Whether this CResult_HTLCUpdateDecodeErrorZ represents a success state.
3477     */
3478    bool result_ok;
3479 } LDKCResult_HTLCUpdateDecodeErrorZ;
3480
3481
3482
3483 /**
3484  * General Err type for ChannelMonitor actions. Generally, this implies that the data provided is
3485  * inconsistent with the ChannelMonitor being called. eg for ChannelMonitor::update_monitor this
3486  * means you tried to update a monitor for a different channel or the ChannelMonitorUpdate was
3487  * corrupted.
3488  * Contains a developer-readable error message.
3489  */
3490 typedef struct MUST_USE_STRUCT LDKMonitorUpdateError {
3491    /**
3492     * A pointer to the opaque Rust object.
3493     * Nearly everywhere, inner must be non-null, however in places where
3494     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3495     */
3496    LDKnativeMonitorUpdateError *inner;
3497    /**
3498     * Indicates that this is the only struct which contains the same pointer.
3499     * Rust functions which take ownership of an object provided via an argument require
3500     * this to be true and invalidate the object pointed to by inner.
3501     */
3502    bool is_owned;
3503 } LDKMonitorUpdateError;
3504
3505 /**
3506  * The contents of CResult_NoneMonitorUpdateErrorZ
3507  */
3508 typedef union LDKCResult_NoneMonitorUpdateErrorZPtr {
3509    /**
3510     * Note that this value is always NULL, as there are no contents in the OK variant
3511     */
3512    void *result;
3513    /**
3514     * A pointer to the contents in the error state.
3515     * Reading from this pointer when `result_ok` is set is undefined.
3516     */
3517    struct LDKMonitorUpdateError *err;
3518 } LDKCResult_NoneMonitorUpdateErrorZPtr;
3519
3520 /**
3521  * A CResult_NoneMonitorUpdateErrorZ represents the result of a fallible operation,
3522  * containing a () on success and a crate::chain::channelmonitor::MonitorUpdateError on failure.
3523  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3524  */
3525 typedef struct LDKCResult_NoneMonitorUpdateErrorZ {
3526    /**
3527     * The contents of this CResult_NoneMonitorUpdateErrorZ, accessible via either
3528     * `err` or `result` depending on the state of `result_ok`.
3529     */
3530    union LDKCResult_NoneMonitorUpdateErrorZPtr contents;
3531    /**
3532     * Whether this CResult_NoneMonitorUpdateErrorZ represents a success state.
3533     */
3534    bool result_ok;
3535 } LDKCResult_NoneMonitorUpdateErrorZ;
3536
3537 /**
3538  * A tuple of 2 elements. See the individual fields for the types contained.
3539  */
3540 typedef struct LDKC2Tuple_OutPointScriptZ {
3541    /**
3542     * The element at position 0
3543     */
3544    struct LDKOutPoint a;
3545    /**
3546     * The element at position 1
3547     */
3548    struct LDKCVec_u8Z b;
3549 } LDKC2Tuple_OutPointScriptZ;
3550
3551 /**
3552  * A tuple of 2 elements. See the individual fields for the types contained.
3553  */
3554 typedef struct LDKC2Tuple_u32ScriptZ {
3555    /**
3556     * The element at position 0
3557     */
3558    uint32_t a;
3559    /**
3560     * The element at position 1
3561     */
3562    struct LDKCVec_u8Z b;
3563 } LDKC2Tuple_u32ScriptZ;
3564
3565 /**
3566  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32ScriptZs of arbitrary size.
3567  * This corresponds to std::vector in C++
3568  */
3569 typedef struct LDKCVec_C2Tuple_u32ScriptZZ {
3570    /**
3571     * The elements in the array.
3572     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3573     */
3574    struct LDKC2Tuple_u32ScriptZ *data;
3575    /**
3576     * The number of elements pointed to by `data`.
3577     */
3578    uintptr_t datalen;
3579 } LDKCVec_C2Tuple_u32ScriptZZ;
3580
3581 /**
3582  * A tuple of 2 elements. See the individual fields for the types contained.
3583  */
3584 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
3585    /**
3586     * The element at position 0
3587     */
3588    struct LDKThirtyTwoBytes a;
3589    /**
3590     * The element at position 1
3591     */
3592    struct LDKCVec_C2Tuple_u32ScriptZZ b;
3593 } LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
3594
3595 /**
3596  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZs of arbitrary size.
3597  * This corresponds to std::vector in C++
3598  */
3599 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
3600    /**
3601     * The elements in the array.
3602     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3603     */
3604    struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *data;
3605    /**
3606     * The number of elements pointed to by `data`.
3607     */
3608    uintptr_t datalen;
3609 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
3610
3611 /**
3612  * A dynamically-allocated array of crate::c_types::Transactions of arbitrary size.
3613  * This corresponds to std::vector in C++
3614  */
3615 typedef struct LDKCVec_TransactionZ {
3616    /**
3617     * The elements in the array.
3618     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3619     */
3620    struct LDKTransaction *data;
3621    /**
3622     * The number of elements pointed to by `data`.
3623     */
3624    uintptr_t datalen;
3625 } LDKCVec_TransactionZ;
3626
3627 /**
3628  * A tuple of 2 elements. See the individual fields for the types contained.
3629  */
3630 typedef struct LDKC2Tuple_u32TxOutZ {
3631    /**
3632     * The element at position 0
3633     */
3634    uint32_t a;
3635    /**
3636     * The element at position 1
3637     */
3638    struct LDKTxOut b;
3639 } LDKC2Tuple_u32TxOutZ;
3640
3641 /**
3642  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32TxOutZs of arbitrary size.
3643  * This corresponds to std::vector in C++
3644  */
3645 typedef struct LDKCVec_C2Tuple_u32TxOutZZ {
3646    /**
3647     * The elements in the array.
3648     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3649     */
3650    struct LDKC2Tuple_u32TxOutZ *data;
3651    /**
3652     * The number of elements pointed to by `data`.
3653     */
3654    uintptr_t datalen;
3655 } LDKCVec_C2Tuple_u32TxOutZZ;
3656
3657 /**
3658  * A tuple of 2 elements. See the individual fields for the types contained.
3659  */
3660 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
3661    /**
3662     * The element at position 0
3663     */
3664    struct LDKThirtyTwoBytes a;
3665    /**
3666     * The element at position 1
3667     */
3668    struct LDKCVec_C2Tuple_u32TxOutZZ b;
3669 } LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
3670
3671 /**
3672  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZs of arbitrary size.
3673  * This corresponds to std::vector in C++
3674  */
3675 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ {
3676    /**
3677     * The elements in the array.
3678     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3679     */
3680    struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *data;
3681    /**
3682     * The number of elements pointed to by `data`.
3683     */
3684    uintptr_t datalen;
3685 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ;
3686
3687 /**
3688  * A tuple of 2 elements. See the individual fields for the types contained.
3689  */
3690 typedef struct LDKC2Tuple_SignatureCVec_SignatureZZ {
3691    /**
3692     * The element at position 0
3693     */
3694    struct LDKSignature a;
3695    /**
3696     * The element at position 1
3697     */
3698    struct LDKCVec_SignatureZ b;
3699 } LDKC2Tuple_SignatureCVec_SignatureZZ;
3700
3701 /**
3702  * The contents of CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ
3703  */
3704 typedef union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr {
3705    /**
3706     * A pointer to the contents in the success state.
3707     * Reading from this pointer when `result_ok` is not set is undefined.
3708     */
3709    struct LDKC2Tuple_SignatureCVec_SignatureZZ *result;
3710    /**
3711     * Note that this value is always NULL, as there are no contents in the Err variant
3712     */
3713    void *err;
3714 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr;
3715
3716 /**
3717  * A CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents the result of a fallible operation,
3718  * containing a crate::c_types::derived::C2Tuple_SignatureCVec_SignatureZZ on success and a () on failure.
3719  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3720  */
3721 typedef struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
3722    /**
3723     * The contents of this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ, accessible via either
3724     * `err` or `result` depending on the state of `result_ok`.
3725     */
3726    union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr contents;
3727    /**
3728     * Whether this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents a success state.
3729     */
3730    bool result_ok;
3731 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
3732
3733 /**
3734  * The contents of CResult_SignatureNoneZ
3735  */
3736 typedef union LDKCResult_SignatureNoneZPtr {
3737    /**
3738     * A pointer to the contents in the success state.
3739     * Reading from this pointer when `result_ok` is not set is undefined.
3740     */
3741    struct LDKSignature *result;
3742    /**
3743     * Note that this value is always NULL, as there are no contents in the Err variant
3744     */
3745    void *err;
3746 } LDKCResult_SignatureNoneZPtr;
3747
3748 /**
3749  * A CResult_SignatureNoneZ represents the result of a fallible operation,
3750  * containing a crate::c_types::Signature on success and a () on failure.
3751  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3752  */
3753 typedef struct LDKCResult_SignatureNoneZ {
3754    /**
3755     * The contents of this CResult_SignatureNoneZ, accessible via either
3756     * `err` or `result` depending on the state of `result_ok`.
3757     */
3758    union LDKCResult_SignatureNoneZPtr contents;
3759    /**
3760     * Whether this CResult_SignatureNoneZ represents a success state.
3761     */
3762    bool result_ok;
3763 } LDKCResult_SignatureNoneZ;
3764
3765
3766
3767 /**
3768  * The unsigned part of a channel_announcement
3769  */
3770 typedef struct MUST_USE_STRUCT LDKUnsignedChannelAnnouncement {
3771    /**
3772     * A pointer to the opaque Rust object.
3773     * Nearly everywhere, inner must be non-null, however in places where
3774     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3775     */
3776    LDKnativeUnsignedChannelAnnouncement *inner;
3777    /**
3778     * Indicates that this is the only struct which contains the same pointer.
3779     * Rust functions which take ownership of an object provided via an argument require
3780     * this to be true and invalidate the object pointed to by inner.
3781     */
3782    bool is_owned;
3783 } LDKUnsignedChannelAnnouncement;
3784
3785 /**
3786  * A trait to sign lightning channel transactions as described in BOLT 3.
3787  *
3788  * Signing services could be implemented on a hardware wallet. In this case,
3789  * the current Sign would be a front-end on top of a communication
3790  * channel connected to your secure device and lightning key material wouldn't
3791  * reside on a hot server. Nevertheless, a this deployment would still need
3792  * to trust the ChannelManager to avoid loss of funds as this latest component
3793  * could ask to sign commitment transaction with HTLCs paying to attacker pubkeys.
3794  *
3795  * A more secure iteration would be to use hashlock (or payment points) to pair
3796  * invoice/incoming HTLCs with outgoing HTLCs to implement a no-trust-ChannelManager
3797  * at the price of more state and computation on the hardware wallet side. In the future,
3798  * we are looking forward to design such interface.
3799  *
3800  * In any case, ChannelMonitor or fallback watchtowers are always going to be trusted
3801  * to act, as liveness and breach reply correctness are always going to be hard requirements
3802  * of LN security model, orthogonal of key management issues.
3803  */
3804 typedef struct LDKBaseSign {
3805    /**
3806     * An opaque pointer which is passed to your function implementations as an argument.
3807     * This has no meaning in the LDK, and can be NULL or any other value.
3808     */
3809    void *this_arg;
3810    /**
3811     * Gets the per-commitment point for a specific commitment number
3812     *
3813     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
3814     */
3815    struct LDKPublicKey (*get_per_commitment_point)(const void *this_arg, uint64_t idx);
3816    /**
3817     * Gets the commitment secret for a specific commitment number as part of the revocation process
3818     *
3819     * An external signer implementation should error here if the commitment was already signed
3820     * and should refuse to sign it in the future.
3821     *
3822     * May be called more than once for the same index.
3823     *
3824     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
3825     */
3826    struct LDKThirtyTwoBytes (*release_commitment_secret)(const void *this_arg, uint64_t idx);
3827    /**
3828     * Gets the holder's channel public keys and basepoints
3829     */
3830    struct LDKChannelPublicKeys pubkeys;
3831    /**
3832     * Fill in the pubkeys field as a reference to it will be given to Rust after this returns
3833     * Note that this takes a pointer to this object, not the this_ptr like other methods do
3834     * This function pointer may be NULL if pubkeys is filled in when this object is created and never needs updating.
3835     */
3836    void (*set_pubkeys)(const struct LDKBaseSign*NONNULL_PTR );
3837    /**
3838     * Gets an arbitrary identifier describing the set of keys which are provided back to you in
3839     * some SpendableOutputDescriptor types. This should be sufficient to identify this
3840     * Sign object uniquely and lookup or re-derive its keys.
3841     */
3842    struct LDKThirtyTwoBytes (*channel_keys_id)(const void *this_arg);
3843    /**
3844     * Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
3845     *
3846     * Note that if signing fails or is rejected, the channel will be force-closed.
3847     */
3848    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_counterparty_commitment)(const void *this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx);
3849    /**
3850     * Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
3851     * This will only ever be called with a non-revoked commitment_tx.  This will be called with the
3852     * latest commitment_tx when we initiate a force-close.
3853     * This will be called with the previous latest, just to get claiming HTLC signatures, if we are
3854     * reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
3855     * the latest.
3856     * This may be called multiple times for the same transaction.
3857     *
3858     * An external signer implementation should check that the commitment has not been revoked.
3859     *
3860     * May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
3861     */
3862    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_holder_commitment_and_htlcs)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
3863    /**
3864     * Create a signature for the given input in a transaction spending an HTLC or commitment
3865     * transaction output when our counterparty broadcasts an old state.
3866     *
3867     * A justice transaction may claim multiples outputs at the same time if timelocks are
3868     * similar, but only a signature for the input at index `input` should be signed for here.
3869     * It may be called multiples time for same output(s) if a fee-bump is needed with regards
3870     * to an upcoming timelock expiration.
3871     *
3872     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3873     *
3874     * per_commitment_key is revocation secret which was provided by our counterparty when they
3875     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3876     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
3877     * so).
3878     *
3879     * htlc holds HTLC elements (hash, timelock) if the output being spent is a HTLC output, thus
3880     * changing the format of the witness script (which is committed to in the BIP 143
3881     * signatures).
3882     */
3883    struct LDKCResult_SignatureNoneZ (*sign_justice_transaction)(const void *this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc);
3884    /**
3885     * Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
3886     * transaction, either offered or received.
3887     *
3888     * Such a transaction may claim multiples offered outputs at same time if we know the
3889     * preimage for each when we create it, but only the input at index `input` should be
3890     * signed for here. It may be called multiple times for same output(s) if a fee-bump is
3891     * needed with regards to an upcoming timelock expiration.
3892     *
3893     * Witness_script is either a offered or received script as defined in BOLT3 for HTLC
3894     * outputs.
3895     *
3896     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3897     *
3898     * Per_commitment_point is the dynamic point corresponding to the channel state
3899     * detected onchain. It has been generated by our counterparty and is used to derive
3900     * channel state keys, which are then included in the witness script and committed to in the
3901     * BIP 143 signature.
3902     */
3903    struct LDKCResult_SignatureNoneZ (*sign_counterparty_htlc_transaction)(const void *this_arg, struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc);
3904    /**
3905     * Create a signature for a (proposed) closing transaction.
3906     *
3907     * Note that, due to rounding, there may be one \"missing\" satoshi, and either party may have
3908     * chosen to forgo their output as dust.
3909     */
3910    struct LDKCResult_SignatureNoneZ (*sign_closing_transaction)(const void *this_arg, struct LDKTransaction closing_tx);
3911    /**
3912     * Signs a channel announcement message with our funding key, proving it comes from one
3913     * of the channel participants.
3914     *
3915     * Note that if this fails or is rejected, the channel will not be publicly announced and
3916     * our counterparty may (though likely will not) close the channel on us for violating the
3917     * protocol.
3918     */
3919    struct LDKCResult_SignatureNoneZ (*sign_channel_announcement)(const void *this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
3920    /**
3921     * Set the counterparty static channel data, including basepoints,
3922     * counterparty_selected/holder_selected_contest_delay and funding outpoint.
3923     * This is done as soon as the funding outpoint is known.  Since these are static channel data,
3924     * they MUST NOT be allowed to change to different values once set.
3925     *
3926     * channel_parameters.is_populated() MUST be true.
3927     *
3928     * We bind holder_selected_contest_delay late here for API convenience.
3929     *
3930     * Will be called before any signatures are applied.
3931     */
3932    void (*ready_channel)(void *this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
3933    /**
3934     * Frees any resources associated with this object given its this_arg pointer.
3935     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
3936     */
3937    void (*free)(void *this_arg);
3938 } LDKBaseSign;
3939
3940 /**
3941  * A cloneable signer.
3942  *
3943  * Although we require signers to be cloneable, it may be useful for developers to be able to use
3944  * signers in an un-sized way, for example as `dyn BaseSign`. Therefore we separate the Clone trait,
3945  * which implies Sized, into this derived trait.
3946  */
3947 typedef struct LDKSign {
3948    /**
3949     * An opaque pointer which is passed to your function implementations as an argument.
3950     * This has no meaning in the LDK, and can be NULL or any other value.
3951     */
3952    void *this_arg;
3953    /**
3954     * Implementation of BaseSign for this object.
3955     */
3956    struct LDKBaseSign BaseSign;
3957    /**
3958     * Creates a copy of the BaseSign, for a copy of this Sign.
3959     * Because BaseSign doesn't natively support copying itself, you have to provide a full copy implementation here.
3960     */
3961    struct LDKBaseSign (*BaseSign_clone)(const struct LDKBaseSign *NONNULL_PTR orig_BaseSign);
3962    /**
3963     * Serialize the object into a byte array
3964     */
3965    struct LDKCVec_u8Z (*write)(const void *this_arg);
3966    /**
3967     * Creates a copy of the object pointed to by this_arg, for a copy of this Sign.
3968     * Note that the ultimate copy of the Sign will have all function pointers the same as the original.
3969     * May be NULL if no action needs to be taken, the this_arg pointer will be copied into the new Sign.
3970     */
3971    void *(*clone)(const void *this_arg);
3972    /**
3973     * Frees any resources associated with this object given its this_arg pointer.
3974     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
3975     */
3976    void (*free)(void *this_arg);
3977 } LDKSign;
3978
3979
3980
3981 /**
3982  * A ChannelMonitor handles chain events (blocks connected and disconnected) and generates
3983  * on-chain transactions to ensure no loss of funds occurs.
3984  *
3985  * You MUST ensure that no ChannelMonitors for a given channel anywhere contain out-of-date
3986  * information and are actively monitoring the chain.
3987  *
3988  * Pending Events or updated HTLCs which have not yet been read out by
3989  * get_and_clear_pending_monitor_events or get_and_clear_pending_events are serialized to disk and
3990  * reloaded at deserialize-time. Thus, you must ensure that, when handling events, all events
3991  * gotten are fully handled before re-serializing the new state.
3992  *
3993  * Note that the deserializer is only implemented for (BlockHash, ChannelMonitor), which
3994  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
3995  * the \"reorg path\" (ie disconnecting blocks until you find a common ancestor from both the
3996  * returned block hash and the the current chain and then reconnecting blocks to get to the
3997  * best chain) upon deserializing the object!
3998  */
3999 typedef struct MUST_USE_STRUCT LDKChannelMonitor {
4000    /**
4001     * A pointer to the opaque Rust object.
4002     * Nearly everywhere, inner must be non-null, however in places where
4003     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4004     */
4005    LDKnativeChannelMonitor *inner;
4006    /**
4007     * Indicates that this is the only struct which contains the same pointer.
4008     * Rust functions which take ownership of an object provided via an argument require
4009     * this to be true and invalidate the object pointed to by inner.
4010     */
4011    bool is_owned;
4012 } LDKChannelMonitor;
4013
4014 /**
4015  * A tuple of 2 elements. See the individual fields for the types contained.
4016  */
4017 typedef struct LDKC2Tuple_BlockHashChannelMonitorZ {
4018    /**
4019     * The element at position 0
4020     */
4021    struct LDKThirtyTwoBytes a;
4022    /**
4023     * The element at position 1
4024     */
4025    struct LDKChannelMonitor b;
4026 } LDKC2Tuple_BlockHashChannelMonitorZ;
4027
4028 /**
4029  * The contents of CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ
4030  */
4031 typedef union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr {
4032    /**
4033     * A pointer to the contents in the success state.
4034     * Reading from this pointer when `result_ok` is not set is undefined.
4035     */
4036    struct LDKC2Tuple_BlockHashChannelMonitorZ *result;
4037    /**
4038     * A pointer to the contents in the error state.
4039     * Reading from this pointer when `result_ok` is set is undefined.
4040     */
4041    struct LDKDecodeError *err;
4042 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr;
4043
4044 /**
4045  * A CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents the result of a fallible operation,
4046  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZ on success and a crate::ln::msgs::DecodeError on failure.
4047  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4048  */
4049 typedef struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
4050    /**
4051     * The contents of this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ, accessible via either
4052     * `err` or `result` depending on the state of `result_ok`.
4053     */
4054    union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr contents;
4055    /**
4056     * Whether this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents a success state.
4057     */
4058    bool result_ok;
4059 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
4060
4061 /**
4062  * The contents of CResult_TxOutAccessErrorZ
4063  */
4064 typedef union LDKCResult_TxOutAccessErrorZPtr {
4065    /**
4066     * A pointer to the contents in the success state.
4067     * Reading from this pointer when `result_ok` is not set is undefined.
4068     */
4069    struct LDKTxOut *result;
4070    /**
4071     * A pointer to the contents in the error state.
4072     * Reading from this pointer when `result_ok` is set is undefined.
4073     */
4074    enum LDKAccessError *err;
4075 } LDKCResult_TxOutAccessErrorZPtr;
4076
4077 /**
4078  * A CResult_TxOutAccessErrorZ represents the result of a fallible operation,
4079  * containing a crate::c_types::TxOut on success and a crate::chain::AccessError on failure.
4080  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4081  */
4082 typedef struct LDKCResult_TxOutAccessErrorZ {
4083    /**
4084     * The contents of this CResult_TxOutAccessErrorZ, accessible via either
4085     * `err` or `result` depending on the state of `result_ok`.
4086     */
4087    union LDKCResult_TxOutAccessErrorZPtr contents;
4088    /**
4089     * Whether this CResult_TxOutAccessErrorZ represents a success state.
4090     */
4091    bool result_ok;
4092 } LDKCResult_TxOutAccessErrorZ;
4093
4094 /**
4095  * An enum which can either contain a crate::c_types::derived::C2Tuple_usizeTransactionZ or not
4096  */
4097 typedef enum LDKCOption_C2Tuple_usizeTransactionZZ_Tag {
4098    /**
4099     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains a crate::c_types::derived::C2Tuple_usizeTransactionZ
4100     */
4101    LDKCOption_C2Tuple_usizeTransactionZZ_Some,
4102    /**
4103     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains nothing
4104     */
4105    LDKCOption_C2Tuple_usizeTransactionZZ_None,
4106    /**
4107     * Must be last for serialization purposes
4108     */
4109    LDKCOption_C2Tuple_usizeTransactionZZ_Sentinel,
4110 } LDKCOption_C2Tuple_usizeTransactionZZ_Tag;
4111
4112 typedef struct LDKCOption_C2Tuple_usizeTransactionZZ {
4113    LDKCOption_C2Tuple_usizeTransactionZZ_Tag tag;
4114    union {
4115       struct {
4116          struct LDKC2Tuple_usizeTransactionZ some;
4117       };
4118    };
4119 } LDKCOption_C2Tuple_usizeTransactionZZ;
4120
4121 /**
4122  * A Rust str object, ie a reference to a UTF8-valid string.
4123  * This is *not* null-terminated so cannot be used directly as a C string!
4124  */
4125 typedef struct LDKStr {
4126    /**
4127     * A pointer to the string's bytes, in UTF8 encoding
4128     */
4129    const uint8_t *chars;
4130    /**
4131     * The number of bytes (not characters!) pointed to by `chars`
4132     */
4133    uintptr_t len;
4134 } LDKStr;
4135
4136 /**
4137  * Indicates an error on the client's part (usually some variant of attempting to use too-low or
4138  * too-high values)
4139  */
4140 typedef enum LDKAPIError_Tag {
4141    /**
4142     * Indicates the API was wholly misused (see err for more). Cases where these can be returned
4143     * are documented, but generally indicates some precondition of a function was violated.
4144     */
4145    LDKAPIError_APIMisuseError,
4146    /**
4147     * Due to a high feerate, we were unable to complete the request.
4148     * For example, this may be returned if the feerate implies we cannot open a channel at the
4149     * requested value, but opening a larger channel would succeed.
4150     */
4151    LDKAPIError_FeeRateTooHigh,
4152    /**
4153     * A malformed Route was provided (eg overflowed value, node id mismatch, overly-looped route,
4154     * too-many-hops, etc).
4155     */
4156    LDKAPIError_RouteError,
4157    /**
4158     * We were unable to complete the request as the Channel required to do so is unable to
4159     * complete the request (or was not found). This can take many forms, including disconnected
4160     * peer, channel at capacity, channel shutting down, etc.
4161     */
4162    LDKAPIError_ChannelUnavailable,
4163    /**
4164     * An attempt to call watch/update_channel returned an Err (ie you did this!), causing the
4165     * attempted action to fail.
4166     */
4167    LDKAPIError_MonitorUpdateFailed,
4168    /**
4169     * Must be last for serialization purposes
4170     */
4171    LDKAPIError_Sentinel,
4172 } LDKAPIError_Tag;
4173
4174 typedef struct LDKAPIError_LDKAPIMisuseError_Body {
4175    /**
4176     * A human-readable error message
4177     */
4178    struct LDKCVec_u8Z err;
4179 } LDKAPIError_LDKAPIMisuseError_Body;
4180
4181 typedef struct LDKAPIError_LDKFeeRateTooHigh_Body {
4182    /**
4183     * A human-readable error message
4184     */
4185    struct LDKCVec_u8Z err;
4186    /**
4187     * The feerate which was too high.
4188     */
4189    uint32_t feerate;
4190 } LDKAPIError_LDKFeeRateTooHigh_Body;
4191
4192 typedef struct LDKAPIError_LDKRouteError_Body {
4193    /**
4194     * A human-readable error message
4195     */
4196    struct LDKStr err;
4197 } LDKAPIError_LDKRouteError_Body;
4198
4199 typedef struct LDKAPIError_LDKChannelUnavailable_Body {
4200    /**
4201     * A human-readable error message
4202     */
4203    struct LDKCVec_u8Z err;
4204 } LDKAPIError_LDKChannelUnavailable_Body;
4205
4206 typedef struct MUST_USE_STRUCT LDKAPIError {
4207    LDKAPIError_Tag tag;
4208    union {
4209       LDKAPIError_LDKAPIMisuseError_Body api_misuse_error;
4210       LDKAPIError_LDKFeeRateTooHigh_Body fee_rate_too_high;
4211       LDKAPIError_LDKRouteError_Body route_error;
4212       LDKAPIError_LDKChannelUnavailable_Body channel_unavailable;
4213    };
4214 } LDKAPIError;
4215
4216 /**
4217  * The contents of CResult_NoneAPIErrorZ
4218  */
4219 typedef union LDKCResult_NoneAPIErrorZPtr {
4220    /**
4221     * Note that this value is always NULL, as there are no contents in the OK variant
4222     */
4223    void *result;
4224    /**
4225     * A pointer to the contents in the error state.
4226     * Reading from this pointer when `result_ok` is set is undefined.
4227     */
4228    struct LDKAPIError *err;
4229 } LDKCResult_NoneAPIErrorZPtr;
4230
4231 /**
4232  * A CResult_NoneAPIErrorZ represents the result of a fallible operation,
4233  * containing a () on success and a crate::util::errors::APIError on failure.
4234  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4235  */
4236 typedef struct LDKCResult_NoneAPIErrorZ {
4237    /**
4238     * The contents of this CResult_NoneAPIErrorZ, accessible via either
4239     * `err` or `result` depending on the state of `result_ok`.
4240     */
4241    union LDKCResult_NoneAPIErrorZPtr contents;
4242    /**
4243     * Whether this CResult_NoneAPIErrorZ represents a success state.
4244     */
4245    bool result_ok;
4246 } LDKCResult_NoneAPIErrorZ;
4247
4248 /**
4249  * A dynamically-allocated array of crate::c_types::derived::CResult_NoneAPIErrorZs of arbitrary size.
4250  * This corresponds to std::vector in C++
4251  */
4252 typedef struct LDKCVec_CResult_NoneAPIErrorZZ {
4253    /**
4254     * The elements in the array.
4255     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4256     */
4257    struct LDKCResult_NoneAPIErrorZ *data;
4258    /**
4259     * The number of elements pointed to by `data`.
4260     */
4261    uintptr_t datalen;
4262 } LDKCVec_CResult_NoneAPIErrorZZ;
4263
4264 /**
4265  * A dynamically-allocated array of crate::util::errors::APIErrors of arbitrary size.
4266  * This corresponds to std::vector in C++
4267  */
4268 typedef struct LDKCVec_APIErrorZ {
4269    /**
4270     * The elements in the array.
4271     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4272     */
4273    struct LDKAPIError *data;
4274    /**
4275     * The number of elements pointed to by `data`.
4276     */
4277    uintptr_t datalen;
4278 } LDKCVec_APIErrorZ;
4279
4280
4281
4282 /**
4283  * Details of a channel, as returned by ChannelManager::list_channels and ChannelManager::list_usable_channels
4284  */
4285 typedef struct MUST_USE_STRUCT LDKChannelDetails {
4286    /**
4287     * A pointer to the opaque Rust object.
4288     * Nearly everywhere, inner must be non-null, however in places where
4289     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4290     */
4291    LDKnativeChannelDetails *inner;
4292    /**
4293     * Indicates that this is the only struct which contains the same pointer.
4294     * Rust functions which take ownership of an object provided via an argument require
4295     * this to be true and invalidate the object pointed to by inner.
4296     */
4297    bool is_owned;
4298 } LDKChannelDetails;
4299
4300 /**
4301  * A dynamically-allocated array of crate::ln::channelmanager::ChannelDetailss of arbitrary size.
4302  * This corresponds to std::vector in C++
4303  */
4304 typedef struct LDKCVec_ChannelDetailsZ {
4305    /**
4306     * The elements in the array.
4307     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4308     */
4309    struct LDKChannelDetails *data;
4310    /**
4311     * The number of elements pointed to by `data`.
4312     */
4313    uintptr_t datalen;
4314 } LDKCVec_ChannelDetailsZ;
4315
4316 /**
4317  * If a payment fails to send, it can be in one of several states. This enum is returned as the
4318  * Err() type describing which state the payment is in, see the description of individual enum
4319  * states for more.
4320  */
4321 typedef enum LDKPaymentSendFailure_Tag {
4322    /**
4323     * A parameter which was passed to send_payment was invalid, preventing us from attempting to
4324     * send the payment at all. No channel state has been changed or messages sent to peers, and
4325     * once you've changed the parameter at error, you can freely retry the payment in full.
4326     */
4327    LDKPaymentSendFailure_ParameterError,
4328    /**
4329     * A parameter in a single path which was passed to send_payment was invalid, preventing us
4330     * from attempting to send the payment at all. No channel state has been changed or messages
4331     * sent to peers, and once you've changed the parameter at error, you can freely retry the
4332     * payment in full.
4333     *
4334     * The results here are ordered the same as the paths in the route object which was passed to
4335     * send_payment.
4336     */
4337    LDKPaymentSendFailure_PathParameterError,
4338    /**
4339     * All paths which were attempted failed to send, with no channel state change taking place.
4340     * You can freely retry the payment in full (though you probably want to do so over different
4341     * paths than the ones selected).
4342     */
4343    LDKPaymentSendFailure_AllFailedRetrySafe,
4344    /**
4345     * Some paths which were attempted failed to send, though possibly not all. At least some
4346     * paths have irrevocably committed to the HTLC and retrying the payment in full would result
4347     * in over-/re-payment.
4348     *
4349     * The results here are ordered the same as the paths in the route object which was passed to
4350     * send_payment, and any Errs which are not APIError::MonitorUpdateFailed can be safely
4351     * retried (though there is currently no API with which to do so).
4352     *
4353     * Any entries which contain Err(APIError::MonitorUpdateFailed) or Ok(()) MUST NOT be retried
4354     * as they will result in over-/re-payment. These HTLCs all either successfully sent (in the
4355     * case of Ok(())) or will send once channel_monitor_updated is called on the next-hop channel
4356     * with the latest update_id.
4357     */
4358    LDKPaymentSendFailure_PartialFailure,
4359    /**
4360     * Must be last for serialization purposes
4361     */
4362    LDKPaymentSendFailure_Sentinel,
4363 } LDKPaymentSendFailure_Tag;
4364
4365 typedef struct MUST_USE_STRUCT LDKPaymentSendFailure {
4366    LDKPaymentSendFailure_Tag tag;
4367    union {
4368       struct {
4369          struct LDKAPIError parameter_error;
4370       };
4371       struct {
4372          struct LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error;
4373       };
4374       struct {
4375          struct LDKCVec_APIErrorZ all_failed_retry_safe;
4376       };
4377       struct {
4378          struct LDKCVec_CResult_NoneAPIErrorZZ partial_failure;
4379       };
4380    };
4381 } LDKPaymentSendFailure;
4382
4383 /**
4384  * The contents of CResult_NonePaymentSendFailureZ
4385  */
4386 typedef union LDKCResult_NonePaymentSendFailureZPtr {
4387    /**
4388     * Note that this value is always NULL, as there are no contents in the OK variant
4389     */
4390    void *result;
4391    /**
4392     * A pointer to the contents in the error state.
4393     * Reading from this pointer when `result_ok` is set is undefined.
4394     */
4395    struct LDKPaymentSendFailure *err;
4396 } LDKCResult_NonePaymentSendFailureZPtr;
4397
4398 /**
4399  * A CResult_NonePaymentSendFailureZ represents the result of a fallible operation,
4400  * containing a () on success and a crate::ln::channelmanager::PaymentSendFailure on failure.
4401  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4402  */
4403 typedef struct LDKCResult_NonePaymentSendFailureZ {
4404    /**
4405     * The contents of this CResult_NonePaymentSendFailureZ, accessible via either
4406     * `err` or `result` depending on the state of `result_ok`.
4407     */
4408    union LDKCResult_NonePaymentSendFailureZPtr contents;
4409    /**
4410     * Whether this CResult_NonePaymentSendFailureZ represents a success state.
4411     */
4412    bool result_ok;
4413 } LDKCResult_NonePaymentSendFailureZ;
4414
4415 /**
4416  * A dynamically-allocated array of crate::chain::channelmonitor::ChannelMonitors of arbitrary size.
4417  * This corresponds to std::vector in C++
4418  */
4419 typedef struct LDKCVec_ChannelMonitorZ {
4420    /**
4421     * The elements in the array.
4422     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4423     */
4424    struct LDKChannelMonitor *data;
4425    /**
4426     * The number of elements pointed to by `data`.
4427     */
4428    uintptr_t datalen;
4429 } LDKCVec_ChannelMonitorZ;
4430
4431 /**
4432  * The `Watch` trait defines behavior for watching on-chain activity pertaining to channels as
4433  * blocks are connected and disconnected.
4434  *
4435  * Each channel is associated with a [`ChannelMonitor`]. Implementations of this trait are
4436  * responsible for maintaining a set of monitors such that they can be updated accordingly as
4437  * channel state changes and HTLCs are resolved. See method documentation for specific
4438  * requirements.
4439  *
4440  * Implementations **must** ensure that updates are successfully applied and persisted upon method
4441  * completion. If an update fails with a [`PermanentFailure`], then it must immediately shut down
4442  * without taking any further action such as persisting the current state.
4443  *
4444  * If an implementation maintains multiple instances of a channel's monitor (e.g., by storing
4445  * backup copies), then it must ensure that updates are applied across all instances. Otherwise, it
4446  * could result in a revoked transaction being broadcast, allowing the counterparty to claim all
4447  * funds in the channel. See [`ChannelMonitorUpdateErr`] for more details about how to handle
4448  * multiple instances.
4449  *
4450  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
4451  * [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
4452  * [`PermanentFailure`]: channelmonitor::ChannelMonitorUpdateErr::PermanentFailure
4453  */
4454 typedef struct LDKWatch {
4455    /**
4456     * An opaque pointer which is passed to your function implementations as an argument.
4457     * This has no meaning in the LDK, and can be NULL or any other value.
4458     */
4459    void *this_arg;
4460    /**
4461     * Watches a channel identified by `funding_txo` using `monitor`.
4462     *
4463     * Implementations are responsible for watching the chain for the funding transaction along
4464     * with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
4465     * calling [`block_connected`] and [`block_disconnected`] on the monitor.
4466     *
4467     * [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
4468     * [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
4469     * [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
4470     */
4471    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*watch_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
4472    /**
4473     * Updates a channel identified by `funding_txo` by applying `update` to its monitor.
4474     *
4475     * Implementations must call [`update_monitor`] with the given update. See
4476     * [`ChannelMonitorUpdateErr`] for invariants around returning an error.
4477     *
4478     * [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
4479     * [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
4480     */
4481    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
4482    /**
4483     * Returns any monitor events since the last call. Subsequent calls must only return new
4484     * events.
4485     */
4486    struct LDKCVec_MonitorEventZ (*release_pending_monitor_events)(const void *this_arg);
4487    /**
4488     * Frees any resources associated with this object given its this_arg pointer.
4489     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4490     */
4491    void (*free)(void *this_arg);
4492 } LDKWatch;
4493
4494 /**
4495  * An interface to send a transaction to the Bitcoin network.
4496  */
4497 typedef struct LDKBroadcasterInterface {
4498    /**
4499     * An opaque pointer which is passed to your function implementations as an argument.
4500     * This has no meaning in the LDK, and can be NULL or any other value.
4501     */
4502    void *this_arg;
4503    /**
4504     * Sends a transaction out to (hopefully) be mined.
4505     */
4506    void (*broadcast_transaction)(const void *this_arg, struct LDKTransaction tx);
4507    /**
4508     * Frees any resources associated with this object given its this_arg pointer.
4509     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4510     */
4511    void (*free)(void *this_arg);
4512 } LDKBroadcasterInterface;
4513
4514 /**
4515  * The contents of CResult_SignDecodeErrorZ
4516  */
4517 typedef union LDKCResult_SignDecodeErrorZPtr {
4518    /**
4519     * A pointer to the contents in the success state.
4520     * Reading from this pointer when `result_ok` is not set is undefined.
4521     */
4522    struct LDKSign *result;
4523    /**
4524     * A pointer to the contents in the error state.
4525     * Reading from this pointer when `result_ok` is set is undefined.
4526     */
4527    struct LDKDecodeError *err;
4528 } LDKCResult_SignDecodeErrorZPtr;
4529
4530 /**
4531  * A CResult_SignDecodeErrorZ represents the result of a fallible operation,
4532  * containing a crate::chain::keysinterface::Sign on success and a crate::ln::msgs::DecodeError on failure.
4533  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4534  */
4535 typedef struct LDKCResult_SignDecodeErrorZ {
4536    /**
4537     * The contents of this CResult_SignDecodeErrorZ, accessible via either
4538     * `err` or `result` depending on the state of `result_ok`.
4539     */
4540    union LDKCResult_SignDecodeErrorZPtr contents;
4541    /**
4542     * Whether this CResult_SignDecodeErrorZ represents a success state.
4543     */
4544    bool result_ok;
4545 } LDKCResult_SignDecodeErrorZ;
4546
4547 /**
4548  * A "slice" referencing some byte array. This is simply a length-tagged pointer which does not
4549  * own the memory pointed to by data.
4550  */
4551 typedef struct LDKu8slice {
4552    /**
4553     * A pointer to the byte buffer
4554     */
4555    const uint8_t *data;
4556    /**
4557     * The number of bytes pointed to by `data`.
4558     */
4559    uintptr_t datalen;
4560 } LDKu8slice;
4561
4562 /**
4563  * A trait to describe an object which can get user secrets and key material.
4564  */
4565 typedef struct LDKKeysInterface {
4566    /**
4567     * An opaque pointer which is passed to your function implementations as an argument.
4568     * This has no meaning in the LDK, and can be NULL or any other value.
4569     */
4570    void *this_arg;
4571    /**
4572     * Get node secret key (aka node_id or network_key).
4573     *
4574     * This method must return the same value each time it is called.
4575     */
4576    struct LDKSecretKey (*get_node_secret)(const void *this_arg);
4577    /**
4578     * Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
4579     *
4580     * This method should return a different value each time it is called, to avoid linking
4581     * on-chain funds across channels as controlled to the same user.
4582     */
4583    struct LDKCVec_u8Z (*get_destination_script)(const void *this_arg);
4584    /**
4585     * Get a public key which we will send funds to (in the form of a P2WPKH output) when closing
4586     * a channel.
4587     *
4588     * This method should return a different value each time it is called, to avoid linking
4589     * on-chain funds across channels as controlled to the same user.
4590     */
4591    struct LDKPublicKey (*get_shutdown_pubkey)(const void *this_arg);
4592    /**
4593     * Get a new set of Sign for per-channel secrets. These MUST be unique even if you
4594     * restarted with some stale data!
4595     *
4596     * This method must return a different value each time it is called.
4597     */
4598    struct LDKSign (*get_channel_signer)(const void *this_arg, bool inbound, uint64_t channel_value_satoshis);
4599    /**
4600     * Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
4601     * onion packets and for temporary channel IDs. There is no requirement that these be
4602     * persisted anywhere, though they must be unique across restarts.
4603     *
4604     * This method must return a different value each time it is called.
4605     */
4606    struct LDKThirtyTwoBytes (*get_secure_random_bytes)(const void *this_arg);
4607    /**
4608     * Reads a `Signer` for this `KeysInterface` from the given input stream.
4609     * This is only called during deserialization of other objects which contain
4610     * `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
4611     * The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
4612     * contain no versioning scheme. You may wish to include your own version prefix and ensure
4613     * you've read all of the provided bytes to ensure no corruption occurred.
4614     */
4615    struct LDKCResult_SignDecodeErrorZ (*read_chan_signer)(const void *this_arg, struct LDKu8slice reader);
4616    /**
4617     * Frees any resources associated with this object given its this_arg pointer.
4618     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4619     */
4620    void (*free)(void *this_arg);
4621 } LDKKeysInterface;
4622
4623 /**
4624  * A trait which should be implemented to provide feerate information on a number of time
4625  * horizons.
4626  *
4627  * Note that all of the functions implemented here *must* be reentrant-safe (obviously - they're
4628  * called from inside the library in response to chain events, P2P events, or timer events).
4629  */
4630 typedef struct LDKFeeEstimator {
4631    /**
4632     * An opaque pointer which is passed to your function implementations as an argument.
4633     * This has no meaning in the LDK, and can be NULL or any other value.
4634     */
4635    void *this_arg;
4636    /**
4637     * Gets estimated satoshis of fee required per 1000 Weight-Units.
4638     *
4639     * Must be no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later round-downs
4640     * don't put us below 1 satoshi-per-byte).
4641     *
4642     * This translates to:
4643     *  * satoshis-per-byte * 250
4644     *  * ceil(satoshis-per-kbyte / 4)
4645     */
4646    uint32_t (*get_est_sat_per_1000_weight)(const void *this_arg, enum LDKConfirmationTarget confirmation_target);
4647    /**
4648     * Frees any resources associated with this object given its this_arg pointer.
4649     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4650     */
4651    void (*free)(void *this_arg);
4652 } LDKFeeEstimator;
4653
4654 /**
4655  * A trait encapsulating the operations required of a logger
4656  */
4657 typedef struct LDKLogger {
4658    /**
4659     * An opaque pointer which is passed to your function implementations as an argument.
4660     * This has no meaning in the LDK, and can be NULL or any other value.
4661     */
4662    void *this_arg;
4663    /**
4664     * Logs the `Record`
4665     */
4666    void (*log)(const void *this_arg, const char *record);
4667    /**
4668     * Frees any resources associated with this object given its this_arg pointer.
4669     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4670     */
4671    void (*free)(void *this_arg);
4672 } LDKLogger;
4673
4674
4675
4676 /**
4677  * Manager which keeps track of a number of channels and sends messages to the appropriate
4678  * channel, also tracking HTLC preimages and forwarding onion packets appropriately.
4679  *
4680  * Implements ChannelMessageHandler, handling the multi-channel parts and passing things through
4681  * to individual Channels.
4682  *
4683  * Implements Writeable to write out all channel state to disk. Implies peer_disconnected() for
4684  * all peers during write/read (though does not modify this instance, only the instance being
4685  * serialized). This will result in any channels which have not yet exchanged funding_created (ie
4686  * called funding_transaction_generated for outbound channels).
4687  *
4688  * Note that you can be a bit lazier about writing out ChannelManager than you can be with
4689  * ChannelMonitors. With ChannelMonitors you MUST write each monitor update out to disk before
4690  * returning from chain::Watch::watch_/update_channel, with ChannelManagers, writing updates
4691  * happens out-of-band (and will prevent any other ChannelManager operations from occurring during
4692  * the serialization process). If the deserialized version is out-of-date compared to the
4693  * ChannelMonitors passed by reference to read(), those channels will be force-closed based on the
4694  * ChannelMonitor state and no funds will be lost (mod on-chain transaction fees).
4695  *
4696  * Note that the deserializer is only implemented for (BlockHash, ChannelManager), which
4697  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
4698  * the \"reorg path\" (ie call block_disconnected() until you get to a common block and then call
4699  * block_connected() to step towards your best block) upon deserialization before using the
4700  * object!
4701  *
4702  * Note that ChannelManager is responsible for tracking liveness of its channels and generating
4703  * ChannelUpdate messages informing peers that the channel is temporarily disabled. To avoid
4704  * spam due to quick disconnection/reconnection, updates are not sent until the channel has been
4705  * offline for a full minute. In order to track this, you must call
4706  * timer_chan_freshness_every_min roughly once per minute, though it doesn't have to be perfect.
4707  *
4708  * Rather than using a plain ChannelManager, it is preferable to use either a SimpleArcChannelManager
4709  * a SimpleRefChannelManager, for conciseness. See their documentation for more details, but
4710  * essentially you should default to using a SimpleRefChannelManager, and use a
4711  * SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
4712  * you're using lightning-net-tokio.
4713  */
4714 typedef struct MUST_USE_STRUCT LDKChannelManager {
4715    /**
4716     * A pointer to the opaque Rust object.
4717     * Nearly everywhere, inner must be non-null, however in places where
4718     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4719     */
4720    LDKnativeChannelManager *inner;
4721    /**
4722     * Indicates that this is the only struct which contains the same pointer.
4723     * Rust functions which take ownership of an object provided via an argument require
4724     * this to be true and invalidate the object pointed to by inner.
4725     */
4726    bool is_owned;
4727 } LDKChannelManager;
4728
4729 /**
4730  * A tuple of 2 elements. See the individual fields for the types contained.
4731  */
4732 typedef struct LDKC2Tuple_BlockHashChannelManagerZ {
4733    /**
4734     * The element at position 0
4735     */
4736    struct LDKThirtyTwoBytes a;
4737    /**
4738     * The element at position 1
4739     */
4740    struct LDKChannelManager b;
4741 } LDKC2Tuple_BlockHashChannelManagerZ;
4742
4743 /**
4744  * The contents of CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ
4745  */
4746 typedef union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr {
4747    /**
4748     * A pointer to the contents in the success state.
4749     * Reading from this pointer when `result_ok` is not set is undefined.
4750     */
4751    struct LDKC2Tuple_BlockHashChannelManagerZ *result;
4752    /**
4753     * A pointer to the contents in the error state.
4754     * Reading from this pointer when `result_ok` is set is undefined.
4755     */
4756    struct LDKDecodeError *err;
4757 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr;
4758
4759 /**
4760  * A CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents the result of a fallible operation,
4761  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelManagerZ on success and a crate::ln::msgs::DecodeError on failure.
4762  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4763  */
4764 typedef struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
4765    /**
4766     * The contents of this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ, accessible via either
4767     * `err` or `result` depending on the state of `result_ok`.
4768     */
4769    union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr contents;
4770    /**
4771     * Whether this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents a success state.
4772     */
4773    bool result_ok;
4774 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
4775
4776 /**
4777  * The contents of CResult_SpendableOutputDescriptorDecodeErrorZ
4778  */
4779 typedef union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr {
4780    /**
4781     * A pointer to the contents in the success state.
4782     * Reading from this pointer when `result_ok` is not set is undefined.
4783     */
4784    struct LDKSpendableOutputDescriptor *result;
4785    /**
4786     * A pointer to the contents in the error state.
4787     * Reading from this pointer when `result_ok` is set is undefined.
4788     */
4789    struct LDKDecodeError *err;
4790 } LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr;
4791
4792 /**
4793  * A CResult_SpendableOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4794  * containing a crate::chain::keysinterface::SpendableOutputDescriptor on success and a crate::ln::msgs::DecodeError on failure.
4795  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4796  */
4797 typedef struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ {
4798    /**
4799     * The contents of this CResult_SpendableOutputDescriptorDecodeErrorZ, accessible via either
4800     * `err` or `result` depending on the state of `result_ok`.
4801     */
4802    union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr contents;
4803    /**
4804     * Whether this CResult_SpendableOutputDescriptorDecodeErrorZ represents a success state.
4805     */
4806    bool result_ok;
4807 } LDKCResult_SpendableOutputDescriptorDecodeErrorZ;
4808
4809 /**
4810  * A dynamically-allocated array of crate::c_types::derived::CVec_u8Zs of arbitrary size.
4811  * This corresponds to std::vector in C++
4812  */
4813 typedef struct LDKCVec_CVec_u8ZZ {
4814    /**
4815     * The elements in the array.
4816     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4817     */
4818    struct LDKCVec_u8Z *data;
4819    /**
4820     * The number of elements pointed to by `data`.
4821     */
4822    uintptr_t datalen;
4823 } LDKCVec_CVec_u8ZZ;
4824
4825 /**
4826  * The contents of CResult_CVec_CVec_u8ZZNoneZ
4827  */
4828 typedef union LDKCResult_CVec_CVec_u8ZZNoneZPtr {
4829    /**
4830     * A pointer to the contents in the success state.
4831     * Reading from this pointer when `result_ok` is not set is undefined.
4832     */
4833    struct LDKCVec_CVec_u8ZZ *result;
4834    /**
4835     * Note that this value is always NULL, as there are no contents in the Err variant
4836     */
4837    void *err;
4838 } LDKCResult_CVec_CVec_u8ZZNoneZPtr;
4839
4840 /**
4841  * A CResult_CVec_CVec_u8ZZNoneZ represents the result of a fallible operation,
4842  * containing a crate::c_types::derived::CVec_CVec_u8ZZ on success and a () on failure.
4843  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4844  */
4845 typedef struct LDKCResult_CVec_CVec_u8ZZNoneZ {
4846    /**
4847     * The contents of this CResult_CVec_CVec_u8ZZNoneZ, accessible via either
4848     * `err` or `result` depending on the state of `result_ok`.
4849     */
4850    union LDKCResult_CVec_CVec_u8ZZNoneZPtr contents;
4851    /**
4852     * Whether this CResult_CVec_CVec_u8ZZNoneZ represents a success state.
4853     */
4854    bool result_ok;
4855 } LDKCResult_CVec_CVec_u8ZZNoneZ;
4856
4857
4858
4859 /**
4860  * A simple implementation of Sign that just keeps the private keys in memory.
4861  *
4862  * This implementation performs no policy checks and is insufficient by itself as
4863  * a secure external signer.
4864  */
4865 typedef struct MUST_USE_STRUCT LDKInMemorySigner {
4866    /**
4867     * A pointer to the opaque Rust object.
4868     * Nearly everywhere, inner must be non-null, however in places where
4869     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4870     */
4871    LDKnativeInMemorySigner *inner;
4872    /**
4873     * Indicates that this is the only struct which contains the same pointer.
4874     * Rust functions which take ownership of an object provided via an argument require
4875     * this to be true and invalidate the object pointed to by inner.
4876     */
4877    bool is_owned;
4878 } LDKInMemorySigner;
4879
4880 /**
4881  * The contents of CResult_InMemorySignerDecodeErrorZ
4882  */
4883 typedef union LDKCResult_InMemorySignerDecodeErrorZPtr {
4884    /**
4885     * A pointer to the contents in the success state.
4886     * Reading from this pointer when `result_ok` is not set is undefined.
4887     */
4888    struct LDKInMemorySigner *result;
4889    /**
4890     * A pointer to the contents in the error state.
4891     * Reading from this pointer when `result_ok` is set is undefined.
4892     */
4893    struct LDKDecodeError *err;
4894 } LDKCResult_InMemorySignerDecodeErrorZPtr;
4895
4896 /**
4897  * A CResult_InMemorySignerDecodeErrorZ represents the result of a fallible operation,
4898  * containing a crate::chain::keysinterface::InMemorySigner on success and a crate::ln::msgs::DecodeError on failure.
4899  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4900  */
4901 typedef struct LDKCResult_InMemorySignerDecodeErrorZ {
4902    /**
4903     * The contents of this CResult_InMemorySignerDecodeErrorZ, accessible via either
4904     * `err` or `result` depending on the state of `result_ok`.
4905     */
4906    union LDKCResult_InMemorySignerDecodeErrorZPtr contents;
4907    /**
4908     * Whether this CResult_InMemorySignerDecodeErrorZ represents a success state.
4909     */
4910    bool result_ok;
4911 } LDKCResult_InMemorySignerDecodeErrorZ;
4912
4913 /**
4914  * A dynamically-allocated array of crate::c_types::TxOuts of arbitrary size.
4915  * This corresponds to std::vector in C++
4916  */
4917 typedef struct LDKCVec_TxOutZ {
4918    /**
4919     * The elements in the array.
4920     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4921     */
4922    struct LDKTxOut *data;
4923    /**
4924     * The number of elements pointed to by `data`.
4925     */
4926    uintptr_t datalen;
4927 } LDKCVec_TxOutZ;
4928
4929 /**
4930  * The contents of CResult_TransactionNoneZ
4931  */
4932 typedef union LDKCResult_TransactionNoneZPtr {
4933    /**
4934     * A pointer to the contents in the success state.
4935     * Reading from this pointer when `result_ok` is not set is undefined.
4936     */
4937    struct LDKTransaction *result;
4938    /**
4939     * Note that this value is always NULL, as there are no contents in the Err variant
4940     */
4941    void *err;
4942 } LDKCResult_TransactionNoneZPtr;
4943
4944 /**
4945  * A CResult_TransactionNoneZ represents the result of a fallible operation,
4946  * containing a crate::c_types::Transaction on success and a () on failure.
4947  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4948  */
4949 typedef struct LDKCResult_TransactionNoneZ {
4950    /**
4951     * The contents of this CResult_TransactionNoneZ, accessible via either
4952     * `err` or `result` depending on the state of `result_ok`.
4953     */
4954    union LDKCResult_TransactionNoneZPtr contents;
4955    /**
4956     * Whether this CResult_TransactionNoneZ represents a success state.
4957     */
4958    bool result_ok;
4959 } LDKCResult_TransactionNoneZ;
4960
4961
4962
4963 /**
4964  * A hop in a route
4965  */
4966 typedef struct MUST_USE_STRUCT LDKRouteHop {
4967    /**
4968     * A pointer to the opaque Rust object.
4969     * Nearly everywhere, inner must be non-null, however in places where
4970     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4971     */
4972    LDKnativeRouteHop *inner;
4973    /**
4974     * Indicates that this is the only struct which contains the same pointer.
4975     * Rust functions which take ownership of an object provided via an argument require
4976     * this to be true and invalidate the object pointed to by inner.
4977     */
4978    bool is_owned;
4979 } LDKRouteHop;
4980
4981 /**
4982  * A dynamically-allocated array of crate::routing::router::RouteHops of arbitrary size.
4983  * This corresponds to std::vector in C++
4984  */
4985 typedef struct LDKCVec_RouteHopZ {
4986    /**
4987     * The elements in the array.
4988     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4989     */
4990    struct LDKRouteHop *data;
4991    /**
4992     * The number of elements pointed to by `data`.
4993     */
4994    uintptr_t datalen;
4995 } LDKCVec_RouteHopZ;
4996
4997 /**
4998  * A dynamically-allocated array of crate::c_types::derived::CVec_RouteHopZs of arbitrary size.
4999  * This corresponds to std::vector in C++
5000  */
5001 typedef struct LDKCVec_CVec_RouteHopZZ {
5002    /**
5003     * The elements in the array.
5004     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5005     */
5006    struct LDKCVec_RouteHopZ *data;
5007    /**
5008     * The number of elements pointed to by `data`.
5009     */
5010    uintptr_t datalen;
5011 } LDKCVec_CVec_RouteHopZZ;
5012
5013
5014
5015 /**
5016  * A route directs a payment from the sender (us) to the recipient. If the recipient supports MPP,
5017  * it can take multiple paths. Each path is composed of one or more hops through the network.
5018  */
5019 typedef struct MUST_USE_STRUCT LDKRoute {
5020    /**
5021     * A pointer to the opaque Rust object.
5022     * Nearly everywhere, inner must be non-null, however in places where
5023     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5024     */
5025    LDKnativeRoute *inner;
5026    /**
5027     * Indicates that this is the only struct which contains the same pointer.
5028     * Rust functions which take ownership of an object provided via an argument require
5029     * this to be true and invalidate the object pointed to by inner.
5030     */
5031    bool is_owned;
5032 } LDKRoute;
5033
5034 /**
5035  * The contents of CResult_RouteDecodeErrorZ
5036  */
5037 typedef union LDKCResult_RouteDecodeErrorZPtr {
5038    /**
5039     * A pointer to the contents in the success state.
5040     * Reading from this pointer when `result_ok` is not set is undefined.
5041     */
5042    struct LDKRoute *result;
5043    /**
5044     * A pointer to the contents in the error state.
5045     * Reading from this pointer when `result_ok` is set is undefined.
5046     */
5047    struct LDKDecodeError *err;
5048 } LDKCResult_RouteDecodeErrorZPtr;
5049
5050 /**
5051  * A CResult_RouteDecodeErrorZ represents the result of a fallible operation,
5052  * containing a crate::routing::router::Route on success and a crate::ln::msgs::DecodeError on failure.
5053  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5054  */
5055 typedef struct LDKCResult_RouteDecodeErrorZ {
5056    /**
5057     * The contents of this CResult_RouteDecodeErrorZ, accessible via either
5058     * `err` or `result` depending on the state of `result_ok`.
5059     */
5060    union LDKCResult_RouteDecodeErrorZPtr contents;
5061    /**
5062     * Whether this CResult_RouteDecodeErrorZ represents a success state.
5063     */
5064    bool result_ok;
5065 } LDKCResult_RouteDecodeErrorZ;
5066
5067
5068
5069 /**
5070  * A channel descriptor which provides a last-hop route to get_route
5071  */
5072 typedef struct MUST_USE_STRUCT LDKRouteHint {
5073    /**
5074     * A pointer to the opaque Rust object.
5075     * Nearly everywhere, inner must be non-null, however in places where
5076     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5077     */
5078    LDKnativeRouteHint *inner;
5079    /**
5080     * Indicates that this is the only struct which contains the same pointer.
5081     * Rust functions which take ownership of an object provided via an argument require
5082     * this to be true and invalidate the object pointed to by inner.
5083     */
5084    bool is_owned;
5085 } LDKRouteHint;
5086
5087 /**
5088  * A dynamically-allocated array of crate::routing::router::RouteHints of arbitrary size.
5089  * This corresponds to std::vector in C++
5090  */
5091 typedef struct LDKCVec_RouteHintZ {
5092    /**
5093     * The elements in the array.
5094     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5095     */
5096    struct LDKRouteHint *data;
5097    /**
5098     * The number of elements pointed to by `data`.
5099     */
5100    uintptr_t datalen;
5101 } LDKCVec_RouteHintZ;
5102
5103 /**
5104  * The contents of CResult_RouteLightningErrorZ
5105  */
5106 typedef union LDKCResult_RouteLightningErrorZPtr {
5107    /**
5108     * A pointer to the contents in the success state.
5109     * Reading from this pointer when `result_ok` is not set is undefined.
5110     */
5111    struct LDKRoute *result;
5112    /**
5113     * A pointer to the contents in the error state.
5114     * Reading from this pointer when `result_ok` is set is undefined.
5115     */
5116    struct LDKLightningError *err;
5117 } LDKCResult_RouteLightningErrorZPtr;
5118
5119 /**
5120  * A CResult_RouteLightningErrorZ represents the result of a fallible operation,
5121  * containing a crate::routing::router::Route on success and a crate::ln::msgs::LightningError on failure.
5122  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5123  */
5124 typedef struct LDKCResult_RouteLightningErrorZ {
5125    /**
5126     * The contents of this CResult_RouteLightningErrorZ, accessible via either
5127     * `err` or `result` depending on the state of `result_ok`.
5128     */
5129    union LDKCResult_RouteLightningErrorZPtr contents;
5130    /**
5131     * Whether this CResult_RouteLightningErrorZ represents a success state.
5132     */
5133    bool result_ok;
5134 } LDKCResult_RouteLightningErrorZ;
5135
5136 /**
5137  * The contents of CResult_NetAddressu8Z
5138  */
5139 typedef union LDKCResult_NetAddressu8ZPtr {
5140    /**
5141     * A pointer to the contents in the success state.
5142     * Reading from this pointer when `result_ok` is not set is undefined.
5143     */
5144    struct LDKNetAddress *result;
5145    /**
5146     * A pointer to the contents in the error state.
5147     * Reading from this pointer when `result_ok` is set is undefined.
5148     */
5149    uint8_t *err;
5150 } LDKCResult_NetAddressu8ZPtr;
5151
5152 /**
5153  * A CResult_NetAddressu8Z represents the result of a fallible operation,
5154  * containing a crate::ln::msgs::NetAddress on success and a u8 on failure.
5155  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5156  */
5157 typedef struct LDKCResult_NetAddressu8Z {
5158    /**
5159     * The contents of this CResult_NetAddressu8Z, accessible via either
5160     * `err` or `result` depending on the state of `result_ok`.
5161     */
5162    union LDKCResult_NetAddressu8ZPtr contents;
5163    /**
5164     * Whether this CResult_NetAddressu8Z represents a success state.
5165     */
5166    bool result_ok;
5167 } LDKCResult_NetAddressu8Z;
5168
5169 /**
5170  * The contents of CResult_CResult_NetAddressu8ZDecodeErrorZ
5171  */
5172 typedef union LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr {
5173    /**
5174     * A pointer to the contents in the success state.
5175     * Reading from this pointer when `result_ok` is not set is undefined.
5176     */
5177    struct LDKCResult_NetAddressu8Z *result;
5178    /**
5179     * A pointer to the contents in the error state.
5180     * Reading from this pointer when `result_ok` is set is undefined.
5181     */
5182    struct LDKDecodeError *err;
5183 } LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr;
5184
5185 /**
5186  * A CResult_CResult_NetAddressu8ZDecodeErrorZ represents the result of a fallible operation,
5187  * containing a crate::c_types::derived::CResult_NetAddressu8Z on success and a crate::ln::msgs::DecodeError on failure.
5188  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5189  */
5190 typedef struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ {
5191    /**
5192     * The contents of this CResult_CResult_NetAddressu8ZDecodeErrorZ, accessible via either
5193     * `err` or `result` depending on the state of `result_ok`.
5194     */
5195    union LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr contents;
5196    /**
5197     * Whether this CResult_CResult_NetAddressu8ZDecodeErrorZ represents a success state.
5198     */
5199    bool result_ok;
5200 } LDKCResult_CResult_NetAddressu8ZDecodeErrorZ;
5201
5202
5203
5204 /**
5205  * An update_add_htlc message to be sent or received from a peer
5206  */
5207 typedef struct MUST_USE_STRUCT LDKUpdateAddHTLC {
5208    /**
5209     * A pointer to the opaque Rust object.
5210     * Nearly everywhere, inner must be non-null, however in places where
5211     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5212     */
5213    LDKnativeUpdateAddHTLC *inner;
5214    /**
5215     * Indicates that this is the only struct which contains the same pointer.
5216     * Rust functions which take ownership of an object provided via an argument require
5217     * this to be true and invalidate the object pointed to by inner.
5218     */
5219    bool is_owned;
5220 } LDKUpdateAddHTLC;
5221
5222 /**
5223  * A dynamically-allocated array of crate::ln::msgs::UpdateAddHTLCs of arbitrary size.
5224  * This corresponds to std::vector in C++
5225  */
5226 typedef struct LDKCVec_UpdateAddHTLCZ {
5227    /**
5228     * The elements in the array.
5229     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5230     */
5231    struct LDKUpdateAddHTLC *data;
5232    /**
5233     * The number of elements pointed to by `data`.
5234     */
5235    uintptr_t datalen;
5236 } LDKCVec_UpdateAddHTLCZ;
5237
5238
5239
5240 /**
5241  * An update_fulfill_htlc message to be sent or received from a peer
5242  */
5243 typedef struct MUST_USE_STRUCT LDKUpdateFulfillHTLC {
5244    /**
5245     * A pointer to the opaque Rust object.
5246     * Nearly everywhere, inner must be non-null, however in places where
5247     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5248     */
5249    LDKnativeUpdateFulfillHTLC *inner;
5250    /**
5251     * Indicates that this is the only struct which contains the same pointer.
5252     * Rust functions which take ownership of an object provided via an argument require
5253     * this to be true and invalidate the object pointed to by inner.
5254     */
5255    bool is_owned;
5256 } LDKUpdateFulfillHTLC;
5257
5258 /**
5259  * A dynamically-allocated array of crate::ln::msgs::UpdateFulfillHTLCs of arbitrary size.
5260  * This corresponds to std::vector in C++
5261  */
5262 typedef struct LDKCVec_UpdateFulfillHTLCZ {
5263    /**
5264     * The elements in the array.
5265     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5266     */
5267    struct LDKUpdateFulfillHTLC *data;
5268    /**
5269     * The number of elements pointed to by `data`.
5270     */
5271    uintptr_t datalen;
5272 } LDKCVec_UpdateFulfillHTLCZ;
5273
5274
5275
5276 /**
5277  * An update_fail_htlc message to be sent or received from a peer
5278  */
5279 typedef struct MUST_USE_STRUCT LDKUpdateFailHTLC {
5280    /**
5281     * A pointer to the opaque Rust object.
5282     * Nearly everywhere, inner must be non-null, however in places where
5283     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5284     */
5285    LDKnativeUpdateFailHTLC *inner;
5286    /**
5287     * Indicates that this is the only struct which contains the same pointer.
5288     * Rust functions which take ownership of an object provided via an argument require
5289     * this to be true and invalidate the object pointed to by inner.
5290     */
5291    bool is_owned;
5292 } LDKUpdateFailHTLC;
5293
5294 /**
5295  * A dynamically-allocated array of crate::ln::msgs::UpdateFailHTLCs of arbitrary size.
5296  * This corresponds to std::vector in C++
5297  */
5298 typedef struct LDKCVec_UpdateFailHTLCZ {
5299    /**
5300     * The elements in the array.
5301     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5302     */
5303    struct LDKUpdateFailHTLC *data;
5304    /**
5305     * The number of elements pointed to by `data`.
5306     */
5307    uintptr_t datalen;
5308 } LDKCVec_UpdateFailHTLCZ;
5309
5310
5311
5312 /**
5313  * An update_fail_malformed_htlc message to be sent or received from a peer
5314  */
5315 typedef struct MUST_USE_STRUCT LDKUpdateFailMalformedHTLC {
5316    /**
5317     * A pointer to the opaque Rust object.
5318     * Nearly everywhere, inner must be non-null, however in places where
5319     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5320     */
5321    LDKnativeUpdateFailMalformedHTLC *inner;
5322    /**
5323     * Indicates that this is the only struct which contains the same pointer.
5324     * Rust functions which take ownership of an object provided via an argument require
5325     * this to be true and invalidate the object pointed to by inner.
5326     */
5327    bool is_owned;
5328 } LDKUpdateFailMalformedHTLC;
5329
5330 /**
5331  * A dynamically-allocated array of crate::ln::msgs::UpdateFailMalformedHTLCs of arbitrary size.
5332  * This corresponds to std::vector in C++
5333  */
5334 typedef struct LDKCVec_UpdateFailMalformedHTLCZ {
5335    /**
5336     * The elements in the array.
5337     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5338     */
5339    struct LDKUpdateFailMalformedHTLC *data;
5340    /**
5341     * The number of elements pointed to by `data`.
5342     */
5343    uintptr_t datalen;
5344 } LDKCVec_UpdateFailMalformedHTLCZ;
5345
5346 /**
5347  * The contents of CResult_AcceptChannelDecodeErrorZ
5348  */
5349 typedef union LDKCResult_AcceptChannelDecodeErrorZPtr {
5350    /**
5351     * A pointer to the contents in the success state.
5352     * Reading from this pointer when `result_ok` is not set is undefined.
5353     */
5354    struct LDKAcceptChannel *result;
5355    /**
5356     * A pointer to the contents in the error state.
5357     * Reading from this pointer when `result_ok` is set is undefined.
5358     */
5359    struct LDKDecodeError *err;
5360 } LDKCResult_AcceptChannelDecodeErrorZPtr;
5361
5362 /**
5363  * A CResult_AcceptChannelDecodeErrorZ represents the result of a fallible operation,
5364  * containing a crate::ln::msgs::AcceptChannel on success and a crate::ln::msgs::DecodeError on failure.
5365  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5366  */
5367 typedef struct LDKCResult_AcceptChannelDecodeErrorZ {
5368    /**
5369     * The contents of this CResult_AcceptChannelDecodeErrorZ, accessible via either
5370     * `err` or `result` depending on the state of `result_ok`.
5371     */
5372    union LDKCResult_AcceptChannelDecodeErrorZPtr contents;
5373    /**
5374     * Whether this CResult_AcceptChannelDecodeErrorZ represents a success state.
5375     */
5376    bool result_ok;
5377 } LDKCResult_AcceptChannelDecodeErrorZ;
5378
5379 /**
5380  * The contents of CResult_AnnouncementSignaturesDecodeErrorZ
5381  */
5382 typedef union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr {
5383    /**
5384     * A pointer to the contents in the success state.
5385     * Reading from this pointer when `result_ok` is not set is undefined.
5386     */
5387    struct LDKAnnouncementSignatures *result;
5388    /**
5389     * A pointer to the contents in the error state.
5390     * Reading from this pointer when `result_ok` is set is undefined.
5391     */
5392    struct LDKDecodeError *err;
5393 } LDKCResult_AnnouncementSignaturesDecodeErrorZPtr;
5394
5395 /**
5396  * A CResult_AnnouncementSignaturesDecodeErrorZ represents the result of a fallible operation,
5397  * containing a crate::ln::msgs::AnnouncementSignatures on success and a crate::ln::msgs::DecodeError on failure.
5398  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5399  */
5400 typedef struct LDKCResult_AnnouncementSignaturesDecodeErrorZ {
5401    /**
5402     * The contents of this CResult_AnnouncementSignaturesDecodeErrorZ, accessible via either
5403     * `err` or `result` depending on the state of `result_ok`.
5404     */
5405    union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr contents;
5406    /**
5407     * Whether this CResult_AnnouncementSignaturesDecodeErrorZ represents a success state.
5408     */
5409    bool result_ok;
5410 } LDKCResult_AnnouncementSignaturesDecodeErrorZ;
5411
5412 /**
5413  * The contents of CResult_ChannelReestablishDecodeErrorZ
5414  */
5415 typedef union LDKCResult_ChannelReestablishDecodeErrorZPtr {
5416    /**
5417     * A pointer to the contents in the success state.
5418     * Reading from this pointer when `result_ok` is not set is undefined.
5419     */
5420    struct LDKChannelReestablish *result;
5421    /**
5422     * A pointer to the contents in the error state.
5423     * Reading from this pointer when `result_ok` is set is undefined.
5424     */
5425    struct LDKDecodeError *err;
5426 } LDKCResult_ChannelReestablishDecodeErrorZPtr;
5427
5428 /**
5429  * A CResult_ChannelReestablishDecodeErrorZ represents the result of a fallible operation,
5430  * containing a crate::ln::msgs::ChannelReestablish on success and a crate::ln::msgs::DecodeError on failure.
5431  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5432  */
5433 typedef struct LDKCResult_ChannelReestablishDecodeErrorZ {
5434    /**
5435     * The contents of this CResult_ChannelReestablishDecodeErrorZ, accessible via either
5436     * `err` or `result` depending on the state of `result_ok`.
5437     */
5438    union LDKCResult_ChannelReestablishDecodeErrorZPtr contents;
5439    /**
5440     * Whether this CResult_ChannelReestablishDecodeErrorZ represents a success state.
5441     */
5442    bool result_ok;
5443 } LDKCResult_ChannelReestablishDecodeErrorZ;
5444
5445 /**
5446  * The contents of CResult_ClosingSignedDecodeErrorZ
5447  */
5448 typedef union LDKCResult_ClosingSignedDecodeErrorZPtr {
5449    /**
5450     * A pointer to the contents in the success state.
5451     * Reading from this pointer when `result_ok` is not set is undefined.
5452     */
5453    struct LDKClosingSigned *result;
5454    /**
5455     * A pointer to the contents in the error state.
5456     * Reading from this pointer when `result_ok` is set is undefined.
5457     */
5458    struct LDKDecodeError *err;
5459 } LDKCResult_ClosingSignedDecodeErrorZPtr;
5460
5461 /**
5462  * A CResult_ClosingSignedDecodeErrorZ represents the result of a fallible operation,
5463  * containing a crate::ln::msgs::ClosingSigned on success and a crate::ln::msgs::DecodeError on failure.
5464  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5465  */
5466 typedef struct LDKCResult_ClosingSignedDecodeErrorZ {
5467    /**
5468     * The contents of this CResult_ClosingSignedDecodeErrorZ, accessible via either
5469     * `err` or `result` depending on the state of `result_ok`.
5470     */
5471    union LDKCResult_ClosingSignedDecodeErrorZPtr contents;
5472    /**
5473     * Whether this CResult_ClosingSignedDecodeErrorZ represents a success state.
5474     */
5475    bool result_ok;
5476 } LDKCResult_ClosingSignedDecodeErrorZ;
5477
5478
5479
5480 /**
5481  * A commitment_signed message to be sent or received from a peer
5482  */
5483 typedef struct MUST_USE_STRUCT LDKCommitmentSigned {
5484    /**
5485     * A pointer to the opaque Rust object.
5486     * Nearly everywhere, inner must be non-null, however in places where
5487     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5488     */
5489    LDKnativeCommitmentSigned *inner;
5490    /**
5491     * Indicates that this is the only struct which contains the same pointer.
5492     * Rust functions which take ownership of an object provided via an argument require
5493     * this to be true and invalidate the object pointed to by inner.
5494     */
5495    bool is_owned;
5496 } LDKCommitmentSigned;
5497
5498 /**
5499  * The contents of CResult_CommitmentSignedDecodeErrorZ
5500  */
5501 typedef union LDKCResult_CommitmentSignedDecodeErrorZPtr {
5502    /**
5503     * A pointer to the contents in the success state.
5504     * Reading from this pointer when `result_ok` is not set is undefined.
5505     */
5506    struct LDKCommitmentSigned *result;
5507    /**
5508     * A pointer to the contents in the error state.
5509     * Reading from this pointer when `result_ok` is set is undefined.
5510     */
5511    struct LDKDecodeError *err;
5512 } LDKCResult_CommitmentSignedDecodeErrorZPtr;
5513
5514 /**
5515  * A CResult_CommitmentSignedDecodeErrorZ represents the result of a fallible operation,
5516  * containing a crate::ln::msgs::CommitmentSigned on success and a crate::ln::msgs::DecodeError on failure.
5517  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5518  */
5519 typedef struct LDKCResult_CommitmentSignedDecodeErrorZ {
5520    /**
5521     * The contents of this CResult_CommitmentSignedDecodeErrorZ, accessible via either
5522     * `err` or `result` depending on the state of `result_ok`.
5523     */
5524    union LDKCResult_CommitmentSignedDecodeErrorZPtr contents;
5525    /**
5526     * Whether this CResult_CommitmentSignedDecodeErrorZ represents a success state.
5527     */
5528    bool result_ok;
5529 } LDKCResult_CommitmentSignedDecodeErrorZ;
5530
5531 /**
5532  * The contents of CResult_FundingCreatedDecodeErrorZ
5533  */
5534 typedef union LDKCResult_FundingCreatedDecodeErrorZPtr {
5535    /**
5536     * A pointer to the contents in the success state.
5537     * Reading from this pointer when `result_ok` is not set is undefined.
5538     */
5539    struct LDKFundingCreated *result;
5540    /**
5541     * A pointer to the contents in the error state.
5542     * Reading from this pointer when `result_ok` is set is undefined.
5543     */
5544    struct LDKDecodeError *err;
5545 } LDKCResult_FundingCreatedDecodeErrorZPtr;
5546
5547 /**
5548  * A CResult_FundingCreatedDecodeErrorZ represents the result of a fallible operation,
5549  * containing a crate::ln::msgs::FundingCreated on success and a crate::ln::msgs::DecodeError on failure.
5550  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5551  */
5552 typedef struct LDKCResult_FundingCreatedDecodeErrorZ {
5553    /**
5554     * The contents of this CResult_FundingCreatedDecodeErrorZ, accessible via either
5555     * `err` or `result` depending on the state of `result_ok`.
5556     */
5557    union LDKCResult_FundingCreatedDecodeErrorZPtr contents;
5558    /**
5559     * Whether this CResult_FundingCreatedDecodeErrorZ represents a success state.
5560     */
5561    bool result_ok;
5562 } LDKCResult_FundingCreatedDecodeErrorZ;
5563
5564 /**
5565  * The contents of CResult_FundingSignedDecodeErrorZ
5566  */
5567 typedef union LDKCResult_FundingSignedDecodeErrorZPtr {
5568    /**
5569     * A pointer to the contents in the success state.
5570     * Reading from this pointer when `result_ok` is not set is undefined.
5571     */
5572    struct LDKFundingSigned *result;
5573    /**
5574     * A pointer to the contents in the error state.
5575     * Reading from this pointer when `result_ok` is set is undefined.
5576     */
5577    struct LDKDecodeError *err;
5578 } LDKCResult_FundingSignedDecodeErrorZPtr;
5579
5580 /**
5581  * A CResult_FundingSignedDecodeErrorZ represents the result of a fallible operation,
5582  * containing a crate::ln::msgs::FundingSigned on success and a crate::ln::msgs::DecodeError on failure.
5583  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5584  */
5585 typedef struct LDKCResult_FundingSignedDecodeErrorZ {
5586    /**
5587     * The contents of this CResult_FundingSignedDecodeErrorZ, accessible via either
5588     * `err` or `result` depending on the state of `result_ok`.
5589     */
5590    union LDKCResult_FundingSignedDecodeErrorZPtr contents;
5591    /**
5592     * Whether this CResult_FundingSignedDecodeErrorZ represents a success state.
5593     */
5594    bool result_ok;
5595 } LDKCResult_FundingSignedDecodeErrorZ;
5596
5597 /**
5598  * The contents of CResult_FundingLockedDecodeErrorZ
5599  */
5600 typedef union LDKCResult_FundingLockedDecodeErrorZPtr {
5601    /**
5602     * A pointer to the contents in the success state.
5603     * Reading from this pointer when `result_ok` is not set is undefined.
5604     */
5605    struct LDKFundingLocked *result;
5606    /**
5607     * A pointer to the contents in the error state.
5608     * Reading from this pointer when `result_ok` is set is undefined.
5609     */
5610    struct LDKDecodeError *err;
5611 } LDKCResult_FundingLockedDecodeErrorZPtr;
5612
5613 /**
5614  * A CResult_FundingLockedDecodeErrorZ represents the result of a fallible operation,
5615  * containing a crate::ln::msgs::FundingLocked on success and a crate::ln::msgs::DecodeError on failure.
5616  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5617  */
5618 typedef struct LDKCResult_FundingLockedDecodeErrorZ {
5619    /**
5620     * The contents of this CResult_FundingLockedDecodeErrorZ, accessible via either
5621     * `err` or `result` depending on the state of `result_ok`.
5622     */
5623    union LDKCResult_FundingLockedDecodeErrorZPtr contents;
5624    /**
5625     * Whether this CResult_FundingLockedDecodeErrorZ represents a success state.
5626     */
5627    bool result_ok;
5628 } LDKCResult_FundingLockedDecodeErrorZ;
5629
5630
5631
5632 /**
5633  * An init message to be sent or received from a peer
5634  */
5635 typedef struct MUST_USE_STRUCT LDKInit {
5636    /**
5637     * A pointer to the opaque Rust object.
5638     * Nearly everywhere, inner must be non-null, however in places where
5639     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5640     */
5641    LDKnativeInit *inner;
5642    /**
5643     * Indicates that this is the only struct which contains the same pointer.
5644     * Rust functions which take ownership of an object provided via an argument require
5645     * this to be true and invalidate the object pointed to by inner.
5646     */
5647    bool is_owned;
5648 } LDKInit;
5649
5650 /**
5651  * The contents of CResult_InitDecodeErrorZ
5652  */
5653 typedef union LDKCResult_InitDecodeErrorZPtr {
5654    /**
5655     * A pointer to the contents in the success state.
5656     * Reading from this pointer when `result_ok` is not set is undefined.
5657     */
5658    struct LDKInit *result;
5659    /**
5660     * A pointer to the contents in the error state.
5661     * Reading from this pointer when `result_ok` is set is undefined.
5662     */
5663    struct LDKDecodeError *err;
5664 } LDKCResult_InitDecodeErrorZPtr;
5665
5666 /**
5667  * A CResult_InitDecodeErrorZ represents the result of a fallible operation,
5668  * containing a crate::ln::msgs::Init on success and a crate::ln::msgs::DecodeError on failure.
5669  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5670  */
5671 typedef struct LDKCResult_InitDecodeErrorZ {
5672    /**
5673     * The contents of this CResult_InitDecodeErrorZ, accessible via either
5674     * `err` or `result` depending on the state of `result_ok`.
5675     */
5676    union LDKCResult_InitDecodeErrorZPtr contents;
5677    /**
5678     * Whether this CResult_InitDecodeErrorZ represents a success state.
5679     */
5680    bool result_ok;
5681 } LDKCResult_InitDecodeErrorZ;
5682
5683 /**
5684  * The contents of CResult_OpenChannelDecodeErrorZ
5685  */
5686 typedef union LDKCResult_OpenChannelDecodeErrorZPtr {
5687    /**
5688     * A pointer to the contents in the success state.
5689     * Reading from this pointer when `result_ok` is not set is undefined.
5690     */
5691    struct LDKOpenChannel *result;
5692    /**
5693     * A pointer to the contents in the error state.
5694     * Reading from this pointer when `result_ok` is set is undefined.
5695     */
5696    struct LDKDecodeError *err;
5697 } LDKCResult_OpenChannelDecodeErrorZPtr;
5698
5699 /**
5700  * A CResult_OpenChannelDecodeErrorZ represents the result of a fallible operation,
5701  * containing a crate::ln::msgs::OpenChannel on success and a crate::ln::msgs::DecodeError on failure.
5702  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5703  */
5704 typedef struct LDKCResult_OpenChannelDecodeErrorZ {
5705    /**
5706     * The contents of this CResult_OpenChannelDecodeErrorZ, accessible via either
5707     * `err` or `result` depending on the state of `result_ok`.
5708     */
5709    union LDKCResult_OpenChannelDecodeErrorZPtr contents;
5710    /**
5711     * Whether this CResult_OpenChannelDecodeErrorZ represents a success state.
5712     */
5713    bool result_ok;
5714 } LDKCResult_OpenChannelDecodeErrorZ;
5715
5716 /**
5717  * The contents of CResult_RevokeAndACKDecodeErrorZ
5718  */
5719 typedef union LDKCResult_RevokeAndACKDecodeErrorZPtr {
5720    /**
5721     * A pointer to the contents in the success state.
5722     * Reading from this pointer when `result_ok` is not set is undefined.
5723     */
5724    struct LDKRevokeAndACK *result;
5725    /**
5726     * A pointer to the contents in the error state.
5727     * Reading from this pointer when `result_ok` is set is undefined.
5728     */
5729    struct LDKDecodeError *err;
5730 } LDKCResult_RevokeAndACKDecodeErrorZPtr;
5731
5732 /**
5733  * A CResult_RevokeAndACKDecodeErrorZ represents the result of a fallible operation,
5734  * containing a crate::ln::msgs::RevokeAndACK on success and a crate::ln::msgs::DecodeError on failure.
5735  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5736  */
5737 typedef struct LDKCResult_RevokeAndACKDecodeErrorZ {
5738    /**
5739     * The contents of this CResult_RevokeAndACKDecodeErrorZ, accessible via either
5740     * `err` or `result` depending on the state of `result_ok`.
5741     */
5742    union LDKCResult_RevokeAndACKDecodeErrorZPtr contents;
5743    /**
5744     * Whether this CResult_RevokeAndACKDecodeErrorZ represents a success state.
5745     */
5746    bool result_ok;
5747 } LDKCResult_RevokeAndACKDecodeErrorZ;
5748
5749 /**
5750  * The contents of CResult_ShutdownDecodeErrorZ
5751  */
5752 typedef union LDKCResult_ShutdownDecodeErrorZPtr {
5753    /**
5754     * A pointer to the contents in the success state.
5755     * Reading from this pointer when `result_ok` is not set is undefined.
5756     */
5757    struct LDKShutdown *result;
5758    /**
5759     * A pointer to the contents in the error state.
5760     * Reading from this pointer when `result_ok` is set is undefined.
5761     */
5762    struct LDKDecodeError *err;
5763 } LDKCResult_ShutdownDecodeErrorZPtr;
5764
5765 /**
5766  * A CResult_ShutdownDecodeErrorZ represents the result of a fallible operation,
5767  * containing a crate::ln::msgs::Shutdown on success and a crate::ln::msgs::DecodeError on failure.
5768  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5769  */
5770 typedef struct LDKCResult_ShutdownDecodeErrorZ {
5771    /**
5772     * The contents of this CResult_ShutdownDecodeErrorZ, accessible via either
5773     * `err` or `result` depending on the state of `result_ok`.
5774     */
5775    union LDKCResult_ShutdownDecodeErrorZPtr contents;
5776    /**
5777     * Whether this CResult_ShutdownDecodeErrorZ represents a success state.
5778     */
5779    bool result_ok;
5780 } LDKCResult_ShutdownDecodeErrorZ;
5781
5782 /**
5783  * The contents of CResult_UpdateFailHTLCDecodeErrorZ
5784  */
5785 typedef union LDKCResult_UpdateFailHTLCDecodeErrorZPtr {
5786    /**
5787     * A pointer to the contents in the success state.
5788     * Reading from this pointer when `result_ok` is not set is undefined.
5789     */
5790    struct LDKUpdateFailHTLC *result;
5791    /**
5792     * A pointer to the contents in the error state.
5793     * Reading from this pointer when `result_ok` is set is undefined.
5794     */
5795    struct LDKDecodeError *err;
5796 } LDKCResult_UpdateFailHTLCDecodeErrorZPtr;
5797
5798 /**
5799  * A CResult_UpdateFailHTLCDecodeErrorZ represents the result of a fallible operation,
5800  * containing a crate::ln::msgs::UpdateFailHTLC on success and a crate::ln::msgs::DecodeError on failure.
5801  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5802  */
5803 typedef struct LDKCResult_UpdateFailHTLCDecodeErrorZ {
5804    /**
5805     * The contents of this CResult_UpdateFailHTLCDecodeErrorZ, accessible via either
5806     * `err` or `result` depending on the state of `result_ok`.
5807     */
5808    union LDKCResult_UpdateFailHTLCDecodeErrorZPtr contents;
5809    /**
5810     * Whether this CResult_UpdateFailHTLCDecodeErrorZ represents a success state.
5811     */
5812    bool result_ok;
5813 } LDKCResult_UpdateFailHTLCDecodeErrorZ;
5814
5815 /**
5816  * The contents of CResult_UpdateFailMalformedHTLCDecodeErrorZ
5817  */
5818 typedef union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr {
5819    /**
5820     * A pointer to the contents in the success state.
5821     * Reading from this pointer when `result_ok` is not set is undefined.
5822     */
5823    struct LDKUpdateFailMalformedHTLC *result;
5824    /**
5825     * A pointer to the contents in the error state.
5826     * Reading from this pointer when `result_ok` is set is undefined.
5827     */
5828    struct LDKDecodeError *err;
5829 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr;
5830
5831 /**
5832  * A CResult_UpdateFailMalformedHTLCDecodeErrorZ represents the result of a fallible operation,
5833  * containing a crate::ln::msgs::UpdateFailMalformedHTLC on success and a crate::ln::msgs::DecodeError on failure.
5834  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5835  */
5836 typedef struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ {
5837    /**
5838     * The contents of this CResult_UpdateFailMalformedHTLCDecodeErrorZ, accessible via either
5839     * `err` or `result` depending on the state of `result_ok`.
5840     */
5841    union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr contents;
5842    /**
5843     * Whether this CResult_UpdateFailMalformedHTLCDecodeErrorZ represents a success state.
5844     */
5845    bool result_ok;
5846 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ;
5847
5848
5849
5850 /**
5851  * An update_fee message to be sent or received from a peer
5852  */
5853 typedef struct MUST_USE_STRUCT LDKUpdateFee {
5854    /**
5855     * A pointer to the opaque Rust object.
5856     * Nearly everywhere, inner must be non-null, however in places where
5857     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5858     */
5859    LDKnativeUpdateFee *inner;
5860    /**
5861     * Indicates that this is the only struct which contains the same pointer.
5862     * Rust functions which take ownership of an object provided via an argument require
5863     * this to be true and invalidate the object pointed to by inner.
5864     */
5865    bool is_owned;
5866 } LDKUpdateFee;
5867
5868 /**
5869  * The contents of CResult_UpdateFeeDecodeErrorZ
5870  */
5871 typedef union LDKCResult_UpdateFeeDecodeErrorZPtr {
5872    /**
5873     * A pointer to the contents in the success state.
5874     * Reading from this pointer when `result_ok` is not set is undefined.
5875     */
5876    struct LDKUpdateFee *result;
5877    /**
5878     * A pointer to the contents in the error state.
5879     * Reading from this pointer when `result_ok` is set is undefined.
5880     */
5881    struct LDKDecodeError *err;
5882 } LDKCResult_UpdateFeeDecodeErrorZPtr;
5883
5884 /**
5885  * A CResult_UpdateFeeDecodeErrorZ represents the result of a fallible operation,
5886  * containing a crate::ln::msgs::UpdateFee on success and a crate::ln::msgs::DecodeError on failure.
5887  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5888  */
5889 typedef struct LDKCResult_UpdateFeeDecodeErrorZ {
5890    /**
5891     * The contents of this CResult_UpdateFeeDecodeErrorZ, accessible via either
5892     * `err` or `result` depending on the state of `result_ok`.
5893     */
5894    union LDKCResult_UpdateFeeDecodeErrorZPtr contents;
5895    /**
5896     * Whether this CResult_UpdateFeeDecodeErrorZ represents a success state.
5897     */
5898    bool result_ok;
5899 } LDKCResult_UpdateFeeDecodeErrorZ;
5900
5901 /**
5902  * The contents of CResult_UpdateFulfillHTLCDecodeErrorZ
5903  */
5904 typedef union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr {
5905    /**
5906     * A pointer to the contents in the success state.
5907     * Reading from this pointer when `result_ok` is not set is undefined.
5908     */
5909    struct LDKUpdateFulfillHTLC *result;
5910    /**
5911     * A pointer to the contents in the error state.
5912     * Reading from this pointer when `result_ok` is set is undefined.
5913     */
5914    struct LDKDecodeError *err;
5915 } LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr;
5916
5917 /**
5918  * A CResult_UpdateFulfillHTLCDecodeErrorZ represents the result of a fallible operation,
5919  * containing a crate::ln::msgs::UpdateFulfillHTLC on success and a crate::ln::msgs::DecodeError on failure.
5920  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5921  */
5922 typedef struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ {
5923    /**
5924     * The contents of this CResult_UpdateFulfillHTLCDecodeErrorZ, accessible via either
5925     * `err` or `result` depending on the state of `result_ok`.
5926     */
5927    union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr contents;
5928    /**
5929     * Whether this CResult_UpdateFulfillHTLCDecodeErrorZ represents a success state.
5930     */
5931    bool result_ok;
5932 } LDKCResult_UpdateFulfillHTLCDecodeErrorZ;
5933
5934 /**
5935  * The contents of CResult_UpdateAddHTLCDecodeErrorZ
5936  */
5937 typedef union LDKCResult_UpdateAddHTLCDecodeErrorZPtr {
5938    /**
5939     * A pointer to the contents in the success state.
5940     * Reading from this pointer when `result_ok` is not set is undefined.
5941     */
5942    struct LDKUpdateAddHTLC *result;
5943    /**
5944     * A pointer to the contents in the error state.
5945     * Reading from this pointer when `result_ok` is set is undefined.
5946     */
5947    struct LDKDecodeError *err;
5948 } LDKCResult_UpdateAddHTLCDecodeErrorZPtr;
5949
5950 /**
5951  * A CResult_UpdateAddHTLCDecodeErrorZ represents the result of a fallible operation,
5952  * containing a crate::ln::msgs::UpdateAddHTLC on success and a crate::ln::msgs::DecodeError on failure.
5953  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5954  */
5955 typedef struct LDKCResult_UpdateAddHTLCDecodeErrorZ {
5956    /**
5957     * The contents of this CResult_UpdateAddHTLCDecodeErrorZ, accessible via either
5958     * `err` or `result` depending on the state of `result_ok`.
5959     */
5960    union LDKCResult_UpdateAddHTLCDecodeErrorZPtr contents;
5961    /**
5962     * Whether this CResult_UpdateAddHTLCDecodeErrorZ represents a success state.
5963     */
5964    bool result_ok;
5965 } LDKCResult_UpdateAddHTLCDecodeErrorZ;
5966
5967
5968
5969 /**
5970  * A ping message to be sent or received from a peer
5971  */
5972 typedef struct MUST_USE_STRUCT LDKPing {
5973    /**
5974     * A pointer to the opaque Rust object.
5975     * Nearly everywhere, inner must be non-null, however in places where
5976     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5977     */
5978    LDKnativePing *inner;
5979    /**
5980     * Indicates that this is the only struct which contains the same pointer.
5981     * Rust functions which take ownership of an object provided via an argument require
5982     * this to be true and invalidate the object pointed to by inner.
5983     */
5984    bool is_owned;
5985 } LDKPing;
5986
5987 /**
5988  * The contents of CResult_PingDecodeErrorZ
5989  */
5990 typedef union LDKCResult_PingDecodeErrorZPtr {
5991    /**
5992     * A pointer to the contents in the success state.
5993     * Reading from this pointer when `result_ok` is not set is undefined.
5994     */
5995    struct LDKPing *result;
5996    /**
5997     * A pointer to the contents in the error state.
5998     * Reading from this pointer when `result_ok` is set is undefined.
5999     */
6000    struct LDKDecodeError *err;
6001 } LDKCResult_PingDecodeErrorZPtr;
6002
6003 /**
6004  * A CResult_PingDecodeErrorZ represents the result of a fallible operation,
6005  * containing a crate::ln::msgs::Ping on success and a crate::ln::msgs::DecodeError on failure.
6006  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6007  */
6008 typedef struct LDKCResult_PingDecodeErrorZ {
6009    /**
6010     * The contents of this CResult_PingDecodeErrorZ, accessible via either
6011     * `err` or `result` depending on the state of `result_ok`.
6012     */
6013    union LDKCResult_PingDecodeErrorZPtr contents;
6014    /**
6015     * Whether this CResult_PingDecodeErrorZ represents a success state.
6016     */
6017    bool result_ok;
6018 } LDKCResult_PingDecodeErrorZ;
6019
6020
6021
6022 /**
6023  * A pong message to be sent or received from a peer
6024  */
6025 typedef struct MUST_USE_STRUCT LDKPong {
6026    /**
6027     * A pointer to the opaque Rust object.
6028     * Nearly everywhere, inner must be non-null, however in places where
6029     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6030     */
6031    LDKnativePong *inner;
6032    /**
6033     * Indicates that this is the only struct which contains the same pointer.
6034     * Rust functions which take ownership of an object provided via an argument require
6035     * this to be true and invalidate the object pointed to by inner.
6036     */
6037    bool is_owned;
6038 } LDKPong;
6039
6040 /**
6041  * The contents of CResult_PongDecodeErrorZ
6042  */
6043 typedef union LDKCResult_PongDecodeErrorZPtr {
6044    /**
6045     * A pointer to the contents in the success state.
6046     * Reading from this pointer when `result_ok` is not set is undefined.
6047     */
6048    struct LDKPong *result;
6049    /**
6050     * A pointer to the contents in the error state.
6051     * Reading from this pointer when `result_ok` is set is undefined.
6052     */
6053    struct LDKDecodeError *err;
6054 } LDKCResult_PongDecodeErrorZPtr;
6055
6056 /**
6057  * A CResult_PongDecodeErrorZ represents the result of a fallible operation,
6058  * containing a crate::ln::msgs::Pong on success and a crate::ln::msgs::DecodeError on failure.
6059  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6060  */
6061 typedef struct LDKCResult_PongDecodeErrorZ {
6062    /**
6063     * The contents of this CResult_PongDecodeErrorZ, accessible via either
6064     * `err` or `result` depending on the state of `result_ok`.
6065     */
6066    union LDKCResult_PongDecodeErrorZPtr contents;
6067    /**
6068     * Whether this CResult_PongDecodeErrorZ represents a success state.
6069     */
6070    bool result_ok;
6071 } LDKCResult_PongDecodeErrorZ;
6072
6073 /**
6074  * The contents of CResult_UnsignedChannelAnnouncementDecodeErrorZ
6075  */
6076 typedef union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr {
6077    /**
6078     * A pointer to the contents in the success state.
6079     * Reading from this pointer when `result_ok` is not set is undefined.
6080     */
6081    struct LDKUnsignedChannelAnnouncement *result;
6082    /**
6083     * A pointer to the contents in the error state.
6084     * Reading from this pointer when `result_ok` is set is undefined.
6085     */
6086    struct LDKDecodeError *err;
6087 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr;
6088
6089 /**
6090  * A CResult_UnsignedChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
6091  * containing a crate::ln::msgs::UnsignedChannelAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6092  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6093  */
6094 typedef struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ {
6095    /**
6096     * The contents of this CResult_UnsignedChannelAnnouncementDecodeErrorZ, accessible via either
6097     * `err` or `result` depending on the state of `result_ok`.
6098     */
6099    union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr contents;
6100    /**
6101     * Whether this CResult_UnsignedChannelAnnouncementDecodeErrorZ represents a success state.
6102     */
6103    bool result_ok;
6104 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ;
6105
6106 /**
6107  * The contents of CResult_ChannelAnnouncementDecodeErrorZ
6108  */
6109 typedef union LDKCResult_ChannelAnnouncementDecodeErrorZPtr {
6110    /**
6111     * A pointer to the contents in the success state.
6112     * Reading from this pointer when `result_ok` is not set is undefined.
6113     */
6114    struct LDKChannelAnnouncement *result;
6115    /**
6116     * A pointer to the contents in the error state.
6117     * Reading from this pointer when `result_ok` is set is undefined.
6118     */
6119    struct LDKDecodeError *err;
6120 } LDKCResult_ChannelAnnouncementDecodeErrorZPtr;
6121
6122 /**
6123  * A CResult_ChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
6124  * containing a crate::ln::msgs::ChannelAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6125  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6126  */
6127 typedef struct LDKCResult_ChannelAnnouncementDecodeErrorZ {
6128    /**
6129     * The contents of this CResult_ChannelAnnouncementDecodeErrorZ, accessible via either
6130     * `err` or `result` depending on the state of `result_ok`.
6131     */
6132    union LDKCResult_ChannelAnnouncementDecodeErrorZPtr contents;
6133    /**
6134     * Whether this CResult_ChannelAnnouncementDecodeErrorZ represents a success state.
6135     */
6136    bool result_ok;
6137 } LDKCResult_ChannelAnnouncementDecodeErrorZ;
6138
6139
6140
6141 /**
6142  * The unsigned part of a channel_update
6143  */
6144 typedef struct MUST_USE_STRUCT LDKUnsignedChannelUpdate {
6145    /**
6146     * A pointer to the opaque Rust object.
6147     * Nearly everywhere, inner must be non-null, however in places where
6148     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6149     */
6150    LDKnativeUnsignedChannelUpdate *inner;
6151    /**
6152     * Indicates that this is the only struct which contains the same pointer.
6153     * Rust functions which take ownership of an object provided via an argument require
6154     * this to be true and invalidate the object pointed to by inner.
6155     */
6156    bool is_owned;
6157 } LDKUnsignedChannelUpdate;
6158
6159 /**
6160  * The contents of CResult_UnsignedChannelUpdateDecodeErrorZ
6161  */
6162 typedef union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr {
6163    /**
6164     * A pointer to the contents in the success state.
6165     * Reading from this pointer when `result_ok` is not set is undefined.
6166     */
6167    struct LDKUnsignedChannelUpdate *result;
6168    /**
6169     * A pointer to the contents in the error state.
6170     * Reading from this pointer when `result_ok` is set is undefined.
6171     */
6172    struct LDKDecodeError *err;
6173 } LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr;
6174
6175 /**
6176  * A CResult_UnsignedChannelUpdateDecodeErrorZ represents the result of a fallible operation,
6177  * containing a crate::ln::msgs::UnsignedChannelUpdate on success and a crate::ln::msgs::DecodeError on failure.
6178  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6179  */
6180 typedef struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ {
6181    /**
6182     * The contents of this CResult_UnsignedChannelUpdateDecodeErrorZ, accessible via either
6183     * `err` or `result` depending on the state of `result_ok`.
6184     */
6185    union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr contents;
6186    /**
6187     * Whether this CResult_UnsignedChannelUpdateDecodeErrorZ represents a success state.
6188     */
6189    bool result_ok;
6190 } LDKCResult_UnsignedChannelUpdateDecodeErrorZ;
6191
6192 /**
6193  * The contents of CResult_ChannelUpdateDecodeErrorZ
6194  */
6195 typedef union LDKCResult_ChannelUpdateDecodeErrorZPtr {
6196    /**
6197     * A pointer to the contents in the success state.
6198     * Reading from this pointer when `result_ok` is not set is undefined.
6199     */
6200    struct LDKChannelUpdate *result;
6201    /**
6202     * A pointer to the contents in the error state.
6203     * Reading from this pointer when `result_ok` is set is undefined.
6204     */
6205    struct LDKDecodeError *err;
6206 } LDKCResult_ChannelUpdateDecodeErrorZPtr;
6207
6208 /**
6209  * A CResult_ChannelUpdateDecodeErrorZ represents the result of a fallible operation,
6210  * containing a crate::ln::msgs::ChannelUpdate on success and a crate::ln::msgs::DecodeError on failure.
6211  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6212  */
6213 typedef struct LDKCResult_ChannelUpdateDecodeErrorZ {
6214    /**
6215     * The contents of this CResult_ChannelUpdateDecodeErrorZ, accessible via either
6216     * `err` or `result` depending on the state of `result_ok`.
6217     */
6218    union LDKCResult_ChannelUpdateDecodeErrorZPtr contents;
6219    /**
6220     * Whether this CResult_ChannelUpdateDecodeErrorZ represents a success state.
6221     */
6222    bool result_ok;
6223 } LDKCResult_ChannelUpdateDecodeErrorZ;
6224
6225 /**
6226  * The contents of CResult_ErrorMessageDecodeErrorZ
6227  */
6228 typedef union LDKCResult_ErrorMessageDecodeErrorZPtr {
6229    /**
6230     * A pointer to the contents in the success state.
6231     * Reading from this pointer when `result_ok` is not set is undefined.
6232     */
6233    struct LDKErrorMessage *result;
6234    /**
6235     * A pointer to the contents in the error state.
6236     * Reading from this pointer when `result_ok` is set is undefined.
6237     */
6238    struct LDKDecodeError *err;
6239 } LDKCResult_ErrorMessageDecodeErrorZPtr;
6240
6241 /**
6242  * A CResult_ErrorMessageDecodeErrorZ represents the result of a fallible operation,
6243  * containing a crate::ln::msgs::ErrorMessage on success and a crate::ln::msgs::DecodeError on failure.
6244  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6245  */
6246 typedef struct LDKCResult_ErrorMessageDecodeErrorZ {
6247    /**
6248     * The contents of this CResult_ErrorMessageDecodeErrorZ, accessible via either
6249     * `err` or `result` depending on the state of `result_ok`.
6250     */
6251    union LDKCResult_ErrorMessageDecodeErrorZPtr contents;
6252    /**
6253     * Whether this CResult_ErrorMessageDecodeErrorZ represents a success state.
6254     */
6255    bool result_ok;
6256 } LDKCResult_ErrorMessageDecodeErrorZ;
6257
6258
6259
6260 /**
6261  * The unsigned part of a node_announcement
6262  */
6263 typedef struct MUST_USE_STRUCT LDKUnsignedNodeAnnouncement {
6264    /**
6265     * A pointer to the opaque Rust object.
6266     * Nearly everywhere, inner must be non-null, however in places where
6267     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6268     */
6269    LDKnativeUnsignedNodeAnnouncement *inner;
6270    /**
6271     * Indicates that this is the only struct which contains the same pointer.
6272     * Rust functions which take ownership of an object provided via an argument require
6273     * this to be true and invalidate the object pointed to by inner.
6274     */
6275    bool is_owned;
6276 } LDKUnsignedNodeAnnouncement;
6277
6278 /**
6279  * The contents of CResult_UnsignedNodeAnnouncementDecodeErrorZ
6280  */
6281 typedef union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr {
6282    /**
6283     * A pointer to the contents in the success state.
6284     * Reading from this pointer when `result_ok` is not set is undefined.
6285     */
6286    struct LDKUnsignedNodeAnnouncement *result;
6287    /**
6288     * A pointer to the contents in the error state.
6289     * Reading from this pointer when `result_ok` is set is undefined.
6290     */
6291    struct LDKDecodeError *err;
6292 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr;
6293
6294 /**
6295  * A CResult_UnsignedNodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
6296  * containing a crate::ln::msgs::UnsignedNodeAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6297  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6298  */
6299 typedef struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ {
6300    /**
6301     * The contents of this CResult_UnsignedNodeAnnouncementDecodeErrorZ, accessible via either
6302     * `err` or `result` depending on the state of `result_ok`.
6303     */
6304    union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr contents;
6305    /**
6306     * Whether this CResult_UnsignedNodeAnnouncementDecodeErrorZ represents a success state.
6307     */
6308    bool result_ok;
6309 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ;
6310
6311 /**
6312  * The contents of CResult_NodeAnnouncementDecodeErrorZ
6313  */
6314 typedef union LDKCResult_NodeAnnouncementDecodeErrorZPtr {
6315    /**
6316     * A pointer to the contents in the success state.
6317     * Reading from this pointer when `result_ok` is not set is undefined.
6318     */
6319    struct LDKNodeAnnouncement *result;
6320    /**
6321     * A pointer to the contents in the error state.
6322     * Reading from this pointer when `result_ok` is set is undefined.
6323     */
6324    struct LDKDecodeError *err;
6325 } LDKCResult_NodeAnnouncementDecodeErrorZPtr;
6326
6327 /**
6328  * A CResult_NodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
6329  * containing a crate::ln::msgs::NodeAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6330  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6331  */
6332 typedef struct LDKCResult_NodeAnnouncementDecodeErrorZ {
6333    /**
6334     * The contents of this CResult_NodeAnnouncementDecodeErrorZ, accessible via either
6335     * `err` or `result` depending on the state of `result_ok`.
6336     */
6337    union LDKCResult_NodeAnnouncementDecodeErrorZPtr contents;
6338    /**
6339     * Whether this CResult_NodeAnnouncementDecodeErrorZ represents a success state.
6340     */
6341    bool result_ok;
6342 } LDKCResult_NodeAnnouncementDecodeErrorZ;
6343
6344 /**
6345  * The contents of CResult_QueryShortChannelIdsDecodeErrorZ
6346  */
6347 typedef union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr {
6348    /**
6349     * A pointer to the contents in the success state.
6350     * Reading from this pointer when `result_ok` is not set is undefined.
6351     */
6352    struct LDKQueryShortChannelIds *result;
6353    /**
6354     * A pointer to the contents in the error state.
6355     * Reading from this pointer when `result_ok` is set is undefined.
6356     */
6357    struct LDKDecodeError *err;
6358 } LDKCResult_QueryShortChannelIdsDecodeErrorZPtr;
6359
6360 /**
6361  * A CResult_QueryShortChannelIdsDecodeErrorZ represents the result of a fallible operation,
6362  * containing a crate::ln::msgs::QueryShortChannelIds on success and a crate::ln::msgs::DecodeError on failure.
6363  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6364  */
6365 typedef struct LDKCResult_QueryShortChannelIdsDecodeErrorZ {
6366    /**
6367     * The contents of this CResult_QueryShortChannelIdsDecodeErrorZ, accessible via either
6368     * `err` or `result` depending on the state of `result_ok`.
6369     */
6370    union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr contents;
6371    /**
6372     * Whether this CResult_QueryShortChannelIdsDecodeErrorZ represents a success state.
6373     */
6374    bool result_ok;
6375 } LDKCResult_QueryShortChannelIdsDecodeErrorZ;
6376
6377
6378
6379 /**
6380  * A reply_short_channel_ids_end message is sent as a reply to a
6381  * query_short_channel_ids message. The query recipient makes a best
6382  * effort to respond based on their local network view which may not be
6383  * a perfect view of the network.
6384  */
6385 typedef struct MUST_USE_STRUCT LDKReplyShortChannelIdsEnd {
6386    /**
6387     * A pointer to the opaque Rust object.
6388     * Nearly everywhere, inner must be non-null, however in places where
6389     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6390     */
6391    LDKnativeReplyShortChannelIdsEnd *inner;
6392    /**
6393     * Indicates that this is the only struct which contains the same pointer.
6394     * Rust functions which take ownership of an object provided via an argument require
6395     * this to be true and invalidate the object pointed to by inner.
6396     */
6397    bool is_owned;
6398 } LDKReplyShortChannelIdsEnd;
6399
6400 /**
6401  * The contents of CResult_ReplyShortChannelIdsEndDecodeErrorZ
6402  */
6403 typedef union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr {
6404    /**
6405     * A pointer to the contents in the success state.
6406     * Reading from this pointer when `result_ok` is not set is undefined.
6407     */
6408    struct LDKReplyShortChannelIdsEnd *result;
6409    /**
6410     * A pointer to the contents in the error state.
6411     * Reading from this pointer when `result_ok` is set is undefined.
6412     */
6413    struct LDKDecodeError *err;
6414 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr;
6415
6416 /**
6417  * A CResult_ReplyShortChannelIdsEndDecodeErrorZ represents the result of a fallible operation,
6418  * containing a crate::ln::msgs::ReplyShortChannelIdsEnd on success and a crate::ln::msgs::DecodeError on failure.
6419  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6420  */
6421 typedef struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ {
6422    /**
6423     * The contents of this CResult_ReplyShortChannelIdsEndDecodeErrorZ, accessible via either
6424     * `err` or `result` depending on the state of `result_ok`.
6425     */
6426    union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr contents;
6427    /**
6428     * Whether this CResult_ReplyShortChannelIdsEndDecodeErrorZ represents a success state.
6429     */
6430    bool result_ok;
6431 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ;
6432
6433 /**
6434  * The contents of CResult_QueryChannelRangeDecodeErrorZ
6435  */
6436 typedef union LDKCResult_QueryChannelRangeDecodeErrorZPtr {
6437    /**
6438     * A pointer to the contents in the success state.
6439     * Reading from this pointer when `result_ok` is not set is undefined.
6440     */
6441    struct LDKQueryChannelRange *result;
6442    /**
6443     * A pointer to the contents in the error state.
6444     * Reading from this pointer when `result_ok` is set is undefined.
6445     */
6446    struct LDKDecodeError *err;
6447 } LDKCResult_QueryChannelRangeDecodeErrorZPtr;
6448
6449 /**
6450  * A CResult_QueryChannelRangeDecodeErrorZ represents the result of a fallible operation,
6451  * containing a crate::ln::msgs::QueryChannelRange on success and a crate::ln::msgs::DecodeError on failure.
6452  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6453  */
6454 typedef struct LDKCResult_QueryChannelRangeDecodeErrorZ {
6455    /**
6456     * The contents of this CResult_QueryChannelRangeDecodeErrorZ, accessible via either
6457     * `err` or `result` depending on the state of `result_ok`.
6458     */
6459    union LDKCResult_QueryChannelRangeDecodeErrorZPtr contents;
6460    /**
6461     * Whether this CResult_QueryChannelRangeDecodeErrorZ represents a success state.
6462     */
6463    bool result_ok;
6464 } LDKCResult_QueryChannelRangeDecodeErrorZ;
6465
6466 /**
6467  * The contents of CResult_ReplyChannelRangeDecodeErrorZ
6468  */
6469 typedef union LDKCResult_ReplyChannelRangeDecodeErrorZPtr {
6470    /**
6471     * A pointer to the contents in the success state.
6472     * Reading from this pointer when `result_ok` is not set is undefined.
6473     */
6474    struct LDKReplyChannelRange *result;
6475    /**
6476     * A pointer to the contents in the error state.
6477     * Reading from this pointer when `result_ok` is set is undefined.
6478     */
6479    struct LDKDecodeError *err;
6480 } LDKCResult_ReplyChannelRangeDecodeErrorZPtr;
6481
6482 /**
6483  * A CResult_ReplyChannelRangeDecodeErrorZ represents the result of a fallible operation,
6484  * containing a crate::ln::msgs::ReplyChannelRange on success and a crate::ln::msgs::DecodeError on failure.
6485  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6486  */
6487 typedef struct LDKCResult_ReplyChannelRangeDecodeErrorZ {
6488    /**
6489     * The contents of this CResult_ReplyChannelRangeDecodeErrorZ, accessible via either
6490     * `err` or `result` depending on the state of `result_ok`.
6491     */
6492    union LDKCResult_ReplyChannelRangeDecodeErrorZPtr contents;
6493    /**
6494     * Whether this CResult_ReplyChannelRangeDecodeErrorZ represents a success state.
6495     */
6496    bool result_ok;
6497 } LDKCResult_ReplyChannelRangeDecodeErrorZ;
6498
6499
6500
6501 /**
6502  * A gossip_timestamp_filter message is used by a node to request
6503  * gossip relay for messages in the requested time range when the
6504  * gossip_queries feature has been negotiated.
6505  */
6506 typedef struct MUST_USE_STRUCT LDKGossipTimestampFilter {
6507    /**
6508     * A pointer to the opaque Rust object.
6509     * Nearly everywhere, inner must be non-null, however in places where
6510     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6511     */
6512    LDKnativeGossipTimestampFilter *inner;
6513    /**
6514     * Indicates that this is the only struct which contains the same pointer.
6515     * Rust functions which take ownership of an object provided via an argument require
6516     * this to be true and invalidate the object pointed to by inner.
6517     */
6518    bool is_owned;
6519 } LDKGossipTimestampFilter;
6520
6521 /**
6522  * The contents of CResult_GossipTimestampFilterDecodeErrorZ
6523  */
6524 typedef union LDKCResult_GossipTimestampFilterDecodeErrorZPtr {
6525    /**
6526     * A pointer to the contents in the success state.
6527     * Reading from this pointer when `result_ok` is not set is undefined.
6528     */
6529    struct LDKGossipTimestampFilter *result;
6530    /**
6531     * A pointer to the contents in the error state.
6532     * Reading from this pointer when `result_ok` is set is undefined.
6533     */
6534    struct LDKDecodeError *err;
6535 } LDKCResult_GossipTimestampFilterDecodeErrorZPtr;
6536
6537 /**
6538  * A CResult_GossipTimestampFilterDecodeErrorZ represents the result of a fallible operation,
6539  * containing a crate::ln::msgs::GossipTimestampFilter on success and a crate::ln::msgs::DecodeError on failure.
6540  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6541  */
6542 typedef struct LDKCResult_GossipTimestampFilterDecodeErrorZ {
6543    /**
6544     * The contents of this CResult_GossipTimestampFilterDecodeErrorZ, accessible via either
6545     * `err` or `result` depending on the state of `result_ok`.
6546     */
6547    union LDKCResult_GossipTimestampFilterDecodeErrorZPtr contents;
6548    /**
6549     * Whether this CResult_GossipTimestampFilterDecodeErrorZ represents a success state.
6550     */
6551    bool result_ok;
6552 } LDKCResult_GossipTimestampFilterDecodeErrorZ;
6553
6554 /**
6555  * A trait indicating an object may generate message send events
6556  */
6557 typedef struct LDKMessageSendEventsProvider {
6558    /**
6559     * An opaque pointer which is passed to your function implementations as an argument.
6560     * This has no meaning in the LDK, and can be NULL or any other value.
6561     */
6562    void *this_arg;
6563    /**
6564     * Gets the list of pending events which were generated by previous actions, clearing the list
6565     * in the process.
6566     */
6567    struct LDKCVec_MessageSendEventZ (*get_and_clear_pending_msg_events)(const void *this_arg);
6568    /**
6569     * Frees any resources associated with this object given its this_arg pointer.
6570     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6571     */
6572    void (*free)(void *this_arg);
6573 } LDKMessageSendEventsProvider;
6574
6575 /**
6576  * A trait indicating an object may generate events
6577  */
6578 typedef struct LDKEventsProvider {
6579    /**
6580     * An opaque pointer which is passed to your function implementations as an argument.
6581     * This has no meaning in the LDK, and can be NULL or any other value.
6582     */
6583    void *this_arg;
6584    /**
6585     * Gets the list of pending events which were generated by previous actions, clearing the list
6586     * in the process.
6587     */
6588    struct LDKCVec_EventZ (*get_and_clear_pending_events)(const void *this_arg);
6589    /**
6590     * Frees any resources associated with this object given its this_arg pointer.
6591     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6592     */
6593    void (*free)(void *this_arg);
6594 } LDKEventsProvider;
6595
6596
6597
6598 /**
6599  * Configuration we set when applicable.
6600  *
6601  * Default::default() provides sane defaults.
6602  */
6603 typedef struct MUST_USE_STRUCT LDKChannelHandshakeConfig {
6604    /**
6605     * A pointer to the opaque Rust object.
6606     * Nearly everywhere, inner must be non-null, however in places where
6607     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6608     */
6609    LDKnativeChannelHandshakeConfig *inner;
6610    /**
6611     * Indicates that this is the only struct which contains the same pointer.
6612     * Rust functions which take ownership of an object provided via an argument require
6613     * this to be true and invalidate the object pointed to by inner.
6614     */
6615    bool is_owned;
6616 } LDKChannelHandshakeConfig;
6617
6618
6619
6620 /**
6621  * Optional channel limits which are applied during channel creation.
6622  *
6623  * These limits are only applied to our counterparty's limits, not our own.
6624  *
6625  * Use 0/<type>::max_value() as appropriate to skip checking.
6626  *
6627  * Provides sane defaults for most configurations.
6628  *
6629  * Most additional limits are disabled except those with which specify a default in individual
6630  * field documentation. Note that this may result in barely-usable channels, but since they
6631  * are applied mostly only to incoming channels that's not much of a problem.
6632  */
6633 typedef struct MUST_USE_STRUCT LDKChannelHandshakeLimits {
6634    /**
6635     * A pointer to the opaque Rust object.
6636     * Nearly everywhere, inner must be non-null, however in places where
6637     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6638     */
6639    LDKnativeChannelHandshakeLimits *inner;
6640    /**
6641     * Indicates that this is the only struct which contains the same pointer.
6642     * Rust functions which take ownership of an object provided via an argument require
6643     * this to be true and invalidate the object pointed to by inner.
6644     */
6645    bool is_owned;
6646 } LDKChannelHandshakeLimits;
6647
6648
6649
6650 /**
6651  * Top-level config which holds ChannelHandshakeLimits and ChannelConfig.
6652  *
6653  * Default::default() provides sane defaults for most configurations
6654  * (but currently with 0 relay fees!)
6655  */
6656 typedef struct MUST_USE_STRUCT LDKUserConfig {
6657    /**
6658     * A pointer to the opaque Rust object.
6659     * Nearly everywhere, inner must be non-null, however in places where
6660     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6661     */
6662    LDKnativeUserConfig *inner;
6663    /**
6664     * Indicates that this is the only struct which contains the same pointer.
6665     * Rust functions which take ownership of an object provided via an argument require
6666     * this to be true and invalidate the object pointed to by inner.
6667     */
6668    bool is_owned;
6669 } LDKUserConfig;
6670
6671 /**
6672  * The `Access` trait defines behavior for accessing chain data and state, such as blocks and
6673  * UTXOs.
6674  */
6675 typedef struct LDKAccess {
6676    /**
6677     * An opaque pointer which is passed to your function implementations as an argument.
6678     * This has no meaning in the LDK, and can be NULL or any other value.
6679     */
6680    void *this_arg;
6681    /**
6682     * Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
6683     * Returns an error if `genesis_hash` is for a different chain or if such a transaction output
6684     * is unknown.
6685     *
6686     * [`short_channel_id`]: https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#definition-of-short_channel_id
6687     */
6688    struct LDKCResult_TxOutAccessErrorZ (*get_utxo)(const void *this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
6689    /**
6690     * Frees any resources associated with this object given its this_arg pointer.
6691     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6692     */
6693    void (*free)(void *this_arg);
6694 } LDKAccess;
6695
6696 /**
6697  * The `Listen` trait is used to be notified of when blocks have been connected or disconnected
6698  * from the chain.
6699  *
6700  * Useful when needing to replay chain data upon startup or as new chain events occur.
6701  */
6702 typedef struct LDKListen {
6703    /**
6704     * An opaque pointer which is passed to your function implementations as an argument.
6705     * This has no meaning in the LDK, and can be NULL or any other value.
6706     */
6707    void *this_arg;
6708    /**
6709     * Notifies the listener that a block was added at the given height.
6710     */
6711    void (*block_connected)(const void *this_arg, struct LDKu8slice block, uint32_t height);
6712    /**
6713     * Notifies the listener that a block was removed at the given height.
6714     */
6715    void (*block_disconnected)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
6716    /**
6717     * Frees any resources associated with this object given its this_arg pointer.
6718     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6719     */
6720    void (*free)(void *this_arg);
6721 } LDKListen;
6722
6723
6724
6725 /**
6726  * A transaction output watched by a [`ChannelMonitor`] for spends on-chain.
6727  *
6728  * Used to convey to a [`Filter`] such an output with a given spending condition. Any transaction
6729  * spending the output must be given to [`ChannelMonitor::block_connected`] either directly or via
6730  * the return value of [`Filter::register_output`].
6731  *
6732  * If `block_hash` is `Some`, this indicates the output was created in the corresponding block and
6733  * may have been spent there. See [`Filter::register_output`] for details.
6734  *
6735  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
6736  * [`ChannelMonitor::block_connected`]: channelmonitor::ChannelMonitor::block_connected
6737  */
6738 typedef struct MUST_USE_STRUCT LDKWatchedOutput {
6739    /**
6740     * A pointer to the opaque Rust object.
6741     * Nearly everywhere, inner must be non-null, however in places where
6742     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6743     */
6744    LDKnativeWatchedOutput *inner;
6745    /**
6746     * Indicates that this is the only struct which contains the same pointer.
6747     * Rust functions which take ownership of an object provided via an argument require
6748     * this to be true and invalidate the object pointed to by inner.
6749     */
6750    bool is_owned;
6751 } LDKWatchedOutput;
6752
6753 /**
6754  * The `Filter` trait defines behavior for indicating chain activity of interest pertaining to
6755  * channels.
6756  *
6757  * This is useful in order to have a [`Watch`] implementation convey to a chain source which
6758  * transactions to be notified of. Notification may take the form of pre-filtering blocks or, in
6759  * the case of [BIP 157]/[BIP 158], only fetching a block if the compact filter matches. If
6760  * receiving full blocks from a chain source, any further filtering is unnecessary.
6761  *
6762  * After an output has been registered, subsequent block retrievals from the chain source must not
6763  * exclude any transactions matching the new criteria nor any in-block descendants of such
6764  * transactions.
6765  *
6766  * Note that use as part of a [`Watch`] implementation involves reentrancy. Therefore, the `Filter`
6767  * should not block on I/O. Implementations should instead queue the newly monitored data to be
6768  * processed later. Then, in order to block until the data has been processed, any [`Watch`]
6769  * invocation that has called the `Filter` must return [`TemporaryFailure`].
6770  *
6771  * [`TemporaryFailure`]: channelmonitor::ChannelMonitorUpdateErr::TemporaryFailure
6772  * [BIP 157]: https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki
6773  * [BIP 158]: https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki
6774  */
6775 typedef struct LDKFilter {
6776    /**
6777     * An opaque pointer which is passed to your function implementations as an argument.
6778     * This has no meaning in the LDK, and can be NULL or any other value.
6779     */
6780    void *this_arg;
6781    /**
6782     * Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
6783     * a spending condition.
6784     */
6785    void (*register_tx)(const void *this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
6786    /**
6787     * Registers interest in spends of a transaction output.
6788     *
6789     * Optionally, when `output.block_hash` is set, should return any transaction spending the
6790     * output that is found in the corresponding block along with its index.
6791     *
6792     * This return value is useful for Electrum clients in order to supply in-block descendant
6793     * transactions which otherwise were not included. This is not necessary for other clients if
6794     * such descendant transactions were already included (e.g., when a BIP 157 client provides the
6795     * full block).
6796     */
6797    struct LDKCOption_C2Tuple_usizeTransactionZZ (*register_output)(const void *this_arg, struct LDKWatchedOutput output);
6798    /**
6799     * Frees any resources associated with this object given its this_arg pointer.
6800     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6801     */
6802    void (*free)(void *this_arg);
6803 } LDKFilter;
6804
6805 /**
6806  * `Persist` defines behavior for persisting channel monitors: this could mean
6807  * writing once to disk, and/or uploading to one or more backup services.
6808  *
6809  * Note that for every new monitor, you **must** persist the new `ChannelMonitor`
6810  * to disk/backups. And, on every update, you **must** persist either the
6811  * `ChannelMonitorUpdate` or the updated monitor itself. Otherwise, there is risk
6812  * of situations such as revoking a transaction, then crashing before this
6813  * revocation can be persisted, then unintentionally broadcasting a revoked
6814  * transaction and losing money. This is a risk because previous channel states
6815  * are toxic, so it's important that whatever channel state is persisted is
6816  * kept up-to-date.
6817  */
6818 typedef struct LDKPersist {
6819    /**
6820     * An opaque pointer which is passed to your function implementations as an argument.
6821     * This has no meaning in the LDK, and can be NULL or any other value.
6822     */
6823    void *this_arg;
6824    /**
6825     * Persist a new channel's data. The data can be stored any way you want, but
6826     * the identifier provided by Rust-Lightning is the channel's outpoint (and
6827     * it is up to you to maintain a correct mapping between the outpoint and the
6828     * stored channel data). Note that you **must** persist every new monitor to
6829     * disk. See the `Persist` trait documentation for more details.
6830     *
6831     * See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
6832     * and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
6833     */
6834    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*persist_new_channel)(const void *this_arg, struct LDKOutPoint id, const struct LDKChannelMonitor *NONNULL_PTR data);
6835    /**
6836     * Update one channel's data. The provided `ChannelMonitor` has already
6837     * applied the given update.
6838     *
6839     * Note that on every update, you **must** persist either the
6840     * `ChannelMonitorUpdate` or the updated monitor itself to disk/backups. See
6841     * the `Persist` trait documentation for more details.
6842     *
6843     * If an implementer chooses to persist the updates only, they need to make
6844     * sure that all the updates are applied to the `ChannelMonitors` *before*
6845     * the set of channel monitors is given to the `ChannelManager`
6846     * deserialization routine. See [`ChannelMonitor::update_monitor`] for
6847     * applying a monitor update to a monitor. If full `ChannelMonitors` are
6848     * persisted, then there is no need to persist individual updates.
6849     *
6850     * Note that there could be a performance tradeoff between persisting complete
6851     * channel monitors on every update vs. persisting only updates and applying
6852     * them in batches. The size of each monitor grows `O(number of state updates)`
6853     * whereas updates are small and `O(1)`.
6854     *
6855     * See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
6856     * [`ChannelMonitorUpdate::write`] for writing out an update, and
6857     * [`ChannelMonitorUpdateErr`] for requirements when returning errors.
6858     */
6859    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_persisted_channel)(const void *this_arg, struct LDKOutPoint id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data);
6860    /**
6861     * Frees any resources associated with this object given its this_arg pointer.
6862     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6863     */
6864    void (*free)(void *this_arg);
6865 } LDKPersist;
6866
6867
6868
6869 /**
6870  * An implementation of [`chain::Watch`] for monitoring channels.
6871  *
6872  * Connected and disconnected blocks must be provided to `ChainMonitor` as documented by
6873  * [`chain::Watch`]. May be used in conjunction with [`ChannelManager`] to monitor channels locally
6874  * or used independently to monitor channels remotely. See the [module-level documentation] for
6875  * details.
6876  *
6877  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
6878  * [module-level documentation]: crate::chain::chainmonitor
6879  */
6880 typedef struct MUST_USE_STRUCT LDKChainMonitor {
6881    /**
6882     * A pointer to the opaque Rust object.
6883     * Nearly everywhere, inner must be non-null, however in places where
6884     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6885     */
6886    LDKnativeChainMonitor *inner;
6887    /**
6888     * Indicates that this is the only struct which contains the same pointer.
6889     * Rust functions which take ownership of an object provided via an argument require
6890     * this to be true and invalidate the object pointed to by inner.
6891     */
6892    bool is_owned;
6893 } LDKChainMonitor;
6894
6895
6896
6897 /**
6898  * Simple KeysInterface implementor that takes a 32-byte seed for use as a BIP 32 extended key
6899  * and derives keys from that.
6900  *
6901  * Your node_id is seed/0'
6902  * ChannelMonitor closes may use seed/1'
6903  * Cooperative closes may use seed/2'
6904  * The two close keys may be needed to claim on-chain funds!
6905  */
6906 typedef struct MUST_USE_STRUCT LDKKeysManager {
6907    /**
6908     * A pointer to the opaque Rust object.
6909     * Nearly everywhere, inner must be non-null, however in places where
6910     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6911     */
6912    LDKnativeKeysManager *inner;
6913    /**
6914     * Indicates that this is the only struct which contains the same pointer.
6915     * Rust functions which take ownership of an object provided via an argument require
6916     * this to be true and invalidate the object pointed to by inner.
6917     */
6918    bool is_owned;
6919 } LDKKeysManager;
6920
6921
6922
6923 /**
6924  * Chain-related parameters used to construct a new `ChannelManager`.
6925  *
6926  * Typically, the block-specific parameters are derived from the best block hash for the network,
6927  * as a newly constructed `ChannelManager` will not have created any channels yet. These parameters
6928  * are not needed when deserializing a previously constructed `ChannelManager`.
6929  */
6930 typedef struct MUST_USE_STRUCT LDKChainParameters {
6931    /**
6932     * A pointer to the opaque Rust object.
6933     * Nearly everywhere, inner must be non-null, however in places where
6934     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6935     */
6936    LDKnativeChainParameters *inner;
6937    /**
6938     * Indicates that this is the only struct which contains the same pointer.
6939     * Rust functions which take ownership of an object provided via an argument require
6940     * this to be true and invalidate the object pointed to by inner.
6941     */
6942    bool is_owned;
6943 } LDKChainParameters;
6944
6945 /**
6946  * A 3-byte byte array.
6947  */
6948 typedef struct LDKThreeBytes {
6949    /**
6950     * The three bytes
6951     */
6952    uint8_t data[3];
6953 } LDKThreeBytes;
6954
6955 /**
6956  * A trait to describe an object which can receive channel messages.
6957  *
6958  * Messages MAY be called in parallel when they originate from different their_node_ids, however
6959  * they MUST NOT be called in parallel when the two calls have the same their_node_id.
6960  */
6961 typedef struct LDKChannelMessageHandler {
6962    /**
6963     * An opaque pointer which is passed to your function implementations as an argument.
6964     * This has no meaning in the LDK, and can be NULL or any other value.
6965     */
6966    void *this_arg;
6967    /**
6968     * Handle an incoming open_channel message from the given peer.
6969     */
6970    void (*handle_open_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
6971    /**
6972     * Handle an incoming accept_channel message from the given peer.
6973     */
6974    void (*handle_accept_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
6975    /**
6976     * Handle an incoming funding_created message from the given peer.
6977     */
6978    void (*handle_funding_created)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
6979    /**
6980     * Handle an incoming funding_signed message from the given peer.
6981     */
6982    void (*handle_funding_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
6983    /**
6984     * Handle an incoming funding_locked message from the given peer.
6985     */
6986    void (*handle_funding_locked)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg);
6987    /**
6988     * Handle an incoming shutdown message from the given peer.
6989     */
6990    void (*handle_shutdown)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg);
6991    /**
6992     * Handle an incoming closing_signed message from the given peer.
6993     */
6994    void (*handle_closing_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
6995    /**
6996     * Handle an incoming update_add_htlc message from the given peer.
6997     */
6998    void (*handle_update_add_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
6999    /**
7000     * Handle an incoming update_fulfill_htlc message from the given peer.
7001     */
7002    void (*handle_update_fulfill_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
7003    /**
7004     * Handle an incoming update_fail_htlc message from the given peer.
7005     */
7006    void (*handle_update_fail_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
7007    /**
7008     * Handle an incoming update_fail_malformed_htlc message from the given peer.
7009     */
7010    void (*handle_update_fail_malformed_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
7011    /**
7012     * Handle an incoming commitment_signed message from the given peer.
7013     */
7014    void (*handle_commitment_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
7015    /**
7016     * Handle an incoming revoke_and_ack message from the given peer.
7017     */
7018    void (*handle_revoke_and_ack)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
7019    /**
7020     * Handle an incoming update_fee message from the given peer.
7021     */
7022    void (*handle_update_fee)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
7023    /**
7024     * Handle an incoming announcement_signatures message from the given peer.
7025     */
7026    void (*handle_announcement_signatures)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
7027    /**
7028     * Indicates a connection to the peer failed/an existing connection was lost. If no connection
7029     * is believed to be possible in the future (eg they're sending us messages we don't
7030     * understand or indicate they require unknown feature bits), no_connection_possible is set
7031     * and any outstanding channels should be failed.
7032     */
7033    void (*peer_disconnected)(const void *this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible);
7034    /**
7035     * Handle a peer reconnecting, possibly generating channel_reestablish message(s).
7036     */
7037    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
7038    /**
7039     * Handle an incoming channel_reestablish message from the given peer.
7040     */
7041    void (*handle_channel_reestablish)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
7042    /**
7043     * Handle an incoming channel update from the given peer.
7044     */
7045    void (*handle_channel_update)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
7046    /**
7047     * Handle an incoming error message from the given peer.
7048     */
7049    void (*handle_error)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
7050    /**
7051     * Implementation of MessageSendEventsProvider for this object.
7052     */
7053    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
7054    /**
7055     * Frees any resources associated with this object given its this_arg pointer.
7056     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7057     */
7058    void (*free)(void *this_arg);
7059 } LDKChannelMessageHandler;
7060
7061
7062
7063 /**
7064  * Arguments for the creation of a ChannelManager that are not deserialized.
7065  *
7066  * At a high-level, the process for deserializing a ChannelManager and resuming normal operation
7067  * is:
7068  * 1) Deserialize all stored ChannelMonitors.
7069  * 2) Deserialize the ChannelManager by filling in this struct and calling:
7070  *    <(BlockHash, ChannelManager)>::read(reader, args)
7071  *    This may result in closing some Channels if the ChannelMonitor is newer than the stored
7072  *    ChannelManager state to ensure no loss of funds. Thus, transactions may be broadcasted.
7073  * 3) If you are not fetching full blocks, register all relevant ChannelMonitor outpoints the same
7074  *    way you would handle a `chain::Filter` call using ChannelMonitor::get_outputs_to_watch() and
7075  *    ChannelMonitor::get_funding_txo().
7076  * 4) Reconnect blocks on your ChannelMonitors.
7077  * 5) Disconnect/connect blocks on the ChannelManager.
7078  * 6) Move the ChannelMonitors into your local chain::Watch.
7079  *
7080  * Note that the ordering of #4-6 is not of importance, however all three must occur before you
7081  * call any other methods on the newly-deserialized ChannelManager.
7082  *
7083  * Note that because some channels may be closed during deserialization, it is critical that you
7084  * always deserialize only the latest version of a ChannelManager and ChannelMonitors available to
7085  * you. If you deserialize an old ChannelManager (during which force-closure transactions may be
7086  * broadcast), and then later deserialize a newer version of the same ChannelManager (which will
7087  * not force-close the same channels but consider them live), you may end up revoking a state for
7088  * which you've already broadcasted the transaction.
7089  */
7090 typedef struct MUST_USE_STRUCT LDKChannelManagerReadArgs {
7091    /**
7092     * A pointer to the opaque Rust object.
7093     * Nearly everywhere, inner must be non-null, however in places where
7094     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7095     */
7096    LDKnativeChannelManagerReadArgs *inner;
7097    /**
7098     * Indicates that this is the only struct which contains the same pointer.
7099     * Rust functions which take ownership of an object provided via an argument require
7100     * this to be true and invalidate the object pointed to by inner.
7101     */
7102    bool is_owned;
7103 } LDKChannelManagerReadArgs;
7104
7105
7106
7107 /**
7108  * Proof that the sender knows the per-commitment secret of the previous commitment transaction.
7109  * This is used to convince the recipient that the channel is at a certain commitment
7110  * number even if they lost that data due to a local failure.  Of course, the peer may lie
7111  * and even later commitments may have been revoked.
7112  */
7113 typedef struct MUST_USE_STRUCT LDKDataLossProtect {
7114    /**
7115     * A pointer to the opaque Rust object.
7116     * Nearly everywhere, inner must be non-null, however in places where
7117     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7118     */
7119    LDKnativeDataLossProtect *inner;
7120    /**
7121     * Indicates that this is the only struct which contains the same pointer.
7122     * Rust functions which take ownership of an object provided via an argument require
7123     * this to be true and invalidate the object pointed to by inner.
7124     */
7125    bool is_owned;
7126 } LDKDataLossProtect;
7127
7128 /**
7129  * A trait to describe an object which can receive routing messages.
7130  *
7131  * # Implementor DoS Warnings
7132  *
7133  * For `gossip_queries` messages there are potential DoS vectors when handling
7134  * inbound queries. Implementors using an on-disk network graph should be aware of
7135  * repeated disk I/O for queries accessing different parts of the network graph.
7136  */
7137 typedef struct LDKRoutingMessageHandler {
7138    /**
7139     * An opaque pointer which is passed to your function implementations as an argument.
7140     * This has no meaning in the LDK, and can be NULL or any other value.
7141     */
7142    void *this_arg;
7143    /**
7144     * Handle an incoming node_announcement message, returning true if it should be forwarded on,
7145     * false or returning an Err otherwise.
7146     */
7147    struct LDKCResult_boolLightningErrorZ (*handle_node_announcement)(const void *this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
7148    /**
7149     * Handle a channel_announcement message, returning true if it should be forwarded on, false
7150     * or returning an Err otherwise.
7151     */
7152    struct LDKCResult_boolLightningErrorZ (*handle_channel_announcement)(const void *this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg);
7153    /**
7154     * Handle an incoming channel_update message, returning true if it should be forwarded on,
7155     * false or returning an Err otherwise.
7156     */
7157    struct LDKCResult_boolLightningErrorZ (*handle_channel_update)(const void *this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
7158    /**
7159     * Handle some updates to the route graph that we learned due to an outbound failed payment.
7160     */
7161    void (*handle_htlc_fail_channel_update)(const void *this_arg, const struct LDKHTLCFailChannelUpdate *NONNULL_PTR update);
7162    /**
7163     * Gets a subset of the channel announcements and updates required to dump our routing table
7164     * to a remote node, starting at the short_channel_id indicated by starting_point and
7165     * including the batch_amount entries immediately higher in numerical value than starting_point.
7166     */
7167    struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ (*get_next_channel_announcements)(const void *this_arg, uint64_t starting_point, uint8_t batch_amount);
7168    /**
7169     * Gets a subset of the node announcements required to dump our routing table to a remote node,
7170     * starting at the node *after* the provided publickey and including batch_amount entries
7171     * immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
7172     * If None is provided for starting_point, we start at the first node.
7173     */
7174    struct LDKCVec_NodeAnnouncementZ (*get_next_node_announcements)(const void *this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount);
7175    /**
7176     * Called when a connection is established with a peer. This can be used to
7177     * perform routing table synchronization using a strategy defined by the
7178     * implementor.
7179     */
7180    void (*sync_routing_table)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
7181    /**
7182     * Handles the reply of a query we initiated to learn about channels
7183     * for a given range of blocks. We can expect to receive one or more
7184     * replies to a single query.
7185     */
7186    struct LDKCResult_NoneLightningErrorZ (*handle_reply_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
7187    /**
7188     * Handles the reply of a query we initiated asking for routing gossip
7189     * messages for a list of channels. We should receive this message when
7190     * a node has completed its best effort to send us the pertaining routing
7191     * gossip messages.
7192     */
7193    struct LDKCResult_NoneLightningErrorZ (*handle_reply_short_channel_ids_end)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
7194    /**
7195     * Handles when a peer asks us to send a list of short_channel_ids
7196     * for the requested range of blocks.
7197     */
7198    struct LDKCResult_NoneLightningErrorZ (*handle_query_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
7199    /**
7200     * Handles when a peer asks us to send routing gossip messages for a
7201     * list of short_channel_ids.
7202     */
7203    struct LDKCResult_NoneLightningErrorZ (*handle_query_short_channel_ids)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
7204    /**
7205     * Implementation of MessageSendEventsProvider for this object.
7206     */
7207    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
7208    /**
7209     * Frees any resources associated with this object given its this_arg pointer.
7210     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7211     */
7212    void (*free)(void *this_arg);
7213 } LDKRoutingMessageHandler;
7214
7215
7216
7217 /**
7218  * A dummy struct which implements `RoutingMessageHandler` without storing any routing information
7219  * or doing any processing. You can provide one of these as the route_handler in a MessageHandler.
7220  */
7221 typedef struct MUST_USE_STRUCT LDKIgnoringMessageHandler {
7222    /**
7223     * A pointer to the opaque Rust object.
7224     * Nearly everywhere, inner must be non-null, however in places where
7225     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7226     */
7227    LDKnativeIgnoringMessageHandler *inner;
7228    /**
7229     * Indicates that this is the only struct which contains the same pointer.
7230     * Rust functions which take ownership of an object provided via an argument require
7231     * this to be true and invalidate the object pointed to by inner.
7232     */
7233    bool is_owned;
7234 } LDKIgnoringMessageHandler;
7235
7236
7237
7238 /**
7239  * A dummy struct which implements `ChannelMessageHandler` without having any channels.
7240  * You can provide one of these as the route_handler in a MessageHandler.
7241  */
7242 typedef struct MUST_USE_STRUCT LDKErroringMessageHandler {
7243    /**
7244     * A pointer to the opaque Rust object.
7245     * Nearly everywhere, inner must be non-null, however in places where
7246     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7247     */
7248    LDKnativeErroringMessageHandler *inner;
7249    /**
7250     * Indicates that this is the only struct which contains the same pointer.
7251     * Rust functions which take ownership of an object provided via an argument require
7252     * this to be true and invalidate the object pointed to by inner.
7253     */
7254    bool is_owned;
7255 } LDKErroringMessageHandler;
7256
7257
7258
7259 /**
7260  * Provides references to trait impls which handle different types of messages.
7261  */
7262 typedef struct MUST_USE_STRUCT LDKMessageHandler {
7263    /**
7264     * A pointer to the opaque Rust object.
7265     * Nearly everywhere, inner must be non-null, however in places where
7266     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7267     */
7268    LDKnativeMessageHandler *inner;
7269    /**
7270     * Indicates that this is the only struct which contains the same pointer.
7271     * Rust functions which take ownership of an object provided via an argument require
7272     * this to be true and invalidate the object pointed to by inner.
7273     */
7274    bool is_owned;
7275 } LDKMessageHandler;
7276
7277 /**
7278  * Provides an object which can be used to send data to and which uniquely identifies a connection
7279  * to a remote host. You will need to be able to generate multiple of these which meet Eq and
7280  * implement Hash to meet the PeerManager API.
7281  *
7282  * For efficiency, Clone should be relatively cheap for this type.
7283  *
7284  * You probably want to just extend an int and put a file descriptor in a struct and implement
7285  * send_data. Note that if you are using a higher-level net library that may call close() itself,
7286  * be careful to ensure you don't have races whereby you might register a new connection with an
7287  * fd which is the same as a previous one which has yet to be removed via
7288  * PeerManager::socket_disconnected().
7289  */
7290 typedef struct LDKSocketDescriptor {
7291    /**
7292     * An opaque pointer which is passed to your function implementations as an argument.
7293     * This has no meaning in the LDK, and can be NULL or any other value.
7294     */
7295    void *this_arg;
7296    /**
7297     * Attempts to send some data from the given slice to the peer.
7298     *
7299     * Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
7300     * Note that in the disconnected case, socket_disconnected must still fire and further write
7301     * attempts may occur until that time.
7302     *
7303     * If the returned size is smaller than data.len(), a write_available event must
7304     * trigger the next time more data can be written. Additionally, until the a send_data event
7305     * completes fully, no further read_events should trigger on the same peer!
7306     *
7307     * If a read_event on this descriptor had previously returned true (indicating that read
7308     * events should be paused to prevent DoS in the send buffer), resume_read may be set
7309     * indicating that read events on this descriptor should resume. A resume_read of false does
7310     * *not* imply that further read events should be paused.
7311     */
7312    uintptr_t (*send_data)(void *this_arg, struct LDKu8slice data, bool resume_read);
7313    /**
7314     * Disconnect the socket pointed to by this SocketDescriptor. Once this function returns, no
7315     * more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
7316     * this descriptor. No socket_disconnected call should be generated as a result of this call,
7317     * though races may occur whereby disconnect_socket is called after a call to
7318     * socket_disconnected but prior to socket_disconnected returning.
7319     */
7320    void (*disconnect_socket)(void *this_arg);
7321    /**
7322     * Checks if two objects are equal given this object's this_arg pointer and another object.
7323     */
7324    bool (*eq)(const void *this_arg, const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
7325    /**
7326     * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
7327     * This is used, for example, for inclusion of this object in a hash map.
7328     */
7329    uint64_t (*hash)(const void *this_arg);
7330    /**
7331     * Creates a copy of the object pointed to by this_arg, for a copy of this SocketDescriptor.
7332     * Note that the ultimate copy of the SocketDescriptor will have all function pointers the same as the original.
7333     * May be NULL if no action needs to be taken, the this_arg pointer will be copied into the new SocketDescriptor.
7334     */
7335    void *(*clone)(const void *this_arg);
7336    /**
7337     * Frees any resources associated with this object given its this_arg pointer.
7338     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7339     */
7340    void (*free)(void *this_arg);
7341 } LDKSocketDescriptor;
7342
7343
7344
7345 /**
7346  * A PeerManager manages a set of peers, described by their SocketDescriptor and marshalls socket
7347  * events into messages which it passes on to its MessageHandlers.
7348  *
7349  * Rather than using a plain PeerManager, it is preferable to use either a SimpleArcPeerManager
7350  * a SimpleRefPeerManager, for conciseness. See their documentation for more details, but
7351  * essentially you should default to using a SimpleRefPeerManager, and use a
7352  * SimpleArcPeerManager when you require a PeerManager with a static lifetime, such as when
7353  * you're using lightning-net-tokio.
7354  */
7355 typedef struct MUST_USE_STRUCT LDKPeerManager {
7356    /**
7357     * A pointer to the opaque Rust object.
7358     * Nearly everywhere, inner must be non-null, however in places where
7359     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7360     */
7361    LDKnativePeerManager *inner;
7362    /**
7363     * Indicates that this is the only struct which contains the same pointer.
7364     * Rust functions which take ownership of an object provided via an argument require
7365     * this to be true and invalidate the object pointed to by inner.
7366     */
7367    bool is_owned;
7368 } LDKPeerManager;
7369
7370
7371
7372 /**
7373  * Static channel fields used to build transactions given per-commitment fields, organized by
7374  * broadcaster/countersignatory.
7375  *
7376  * This is derived from the holder/counterparty-organized ChannelTransactionParameters via the
7377  * as_holder_broadcastable and as_counterparty_broadcastable functions.
7378  */
7379 typedef struct MUST_USE_STRUCT LDKDirectedChannelTransactionParameters {
7380    /**
7381     * A pointer to the opaque Rust object.
7382     * Nearly everywhere, inner must be non-null, however in places where
7383     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7384     */
7385    LDKnativeDirectedChannelTransactionParameters *inner;
7386    /**
7387     * Indicates that this is the only struct which contains the same pointer.
7388     * Rust functions which take ownership of an object provided via an argument require
7389     * this to be true and invalidate the object pointed to by inner.
7390     */
7391    bool is_owned;
7392 } LDKDirectedChannelTransactionParameters;
7393
7394
7395
7396 /**
7397  * A simple newtype for RwLockReadGuard<'a, NetworkGraph>.
7398  * This exists only to make accessing a RwLock<NetworkGraph> possible from
7399  * the C bindings, as it can be done directly in Rust code.
7400  */
7401 typedef struct MUST_USE_STRUCT LDKLockedNetworkGraph {
7402    /**
7403     * A pointer to the opaque Rust object.
7404     * Nearly everywhere, inner must be non-null, however in places where
7405     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7406     */
7407    LDKnativeLockedNetworkGraph *inner;
7408    /**
7409     * Indicates that this is the only struct which contains the same pointer.
7410     * Rust functions which take ownership of an object provided via an argument require
7411     * this to be true and invalidate the object pointed to by inner.
7412     */
7413    bool is_owned;
7414 } LDKLockedNetworkGraph;
7415
7416
7417
7418 /**
7419  * Receives and validates network updates from peers,
7420  * stores authentic and relevant data as a network graph.
7421  * This network graph is then used for routing payments.
7422  * Provides interface to help with initial routing sync by
7423  * serving historical announcements.
7424  */
7425 typedef struct MUST_USE_STRUCT LDKNetGraphMsgHandler {
7426    /**
7427     * A pointer to the opaque Rust object.
7428     * Nearly everywhere, inner must be non-null, however in places where
7429     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7430     */
7431    LDKnativeNetGraphMsgHandler *inner;
7432    /**
7433     * Indicates that this is the only struct which contains the same pointer.
7434     * Rust functions which take ownership of an object provided via an argument require
7435     * this to be true and invalidate the object pointed to by inner.
7436     */
7437    bool is_owned;
7438 } LDKNetGraphMsgHandler;
7439
7440 extern const uintptr_t MAX_BUF_SIZE;
7441
7442 extern const uint64_t MIN_RELAY_FEE_SAT_PER_1000_WEIGHT;
7443
7444 extern const uint64_t CLOSED_CHANNEL_UPDATE_ID;
7445
7446 extern const uint16_t BREAKDOWN_TIMEOUT;
7447
7448 extern const uint16_t MIN_CLTV_EXPIRY_DELTA;
7449
7450 extern const uintptr_t REVOKEABLE_REDEEMSCRIPT_MAX_LENGTH;
7451
7452 /**
7453  * Frees the data buffer, if data_is_owned is set and datalen > 0.
7454  */
7455 void Transaction_free(struct LDKTransaction _res);
7456
7457 /**
7458  * Frees the data pointed to by script_pubkey.
7459  */
7460 void TxOut_free(struct LDKTxOut _res);
7461
7462 /**
7463  * Creates a new TxOut which has the same data as `orig` but with a new script buffer.
7464  */
7465 struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
7466
7467 /**
7468  * Creates a new CResult_SecretKeyErrorZ in the success state.
7469  */
7470 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o);
7471
7472 /**
7473  * Creates a new CResult_SecretKeyErrorZ in the error state.
7474  */
7475 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
7476
7477 /**
7478  * Frees any resources used by the CResult_SecretKeyErrorZ.
7479  */
7480 void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
7481
7482 /**
7483  * Creates a new CResult_PublicKeyErrorZ in the success state.
7484  */
7485 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
7486
7487 /**
7488  * Creates a new CResult_PublicKeyErrorZ in the error state.
7489  */
7490 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
7491
7492 /**
7493  * Frees any resources used by the CResult_PublicKeyErrorZ.
7494  */
7495 void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
7496
7497 /**
7498  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the success state.
7499  */
7500 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o);
7501
7502 /**
7503  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the error state.
7504  */
7505 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e);
7506
7507 /**
7508  * Frees any resources used by the CResult_TxCreationKeysDecodeErrorZ.
7509  */
7510 void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
7511
7512 /**
7513  * Creates a new CResult_TxCreationKeysDecodeErrorZ which has the same data as `orig`
7514  * but with all dynamically-allocated buffers duplicated in new buffers.
7515  */
7516 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
7517
7518 /**
7519  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the success state.
7520  */
7521 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o);
7522
7523 /**
7524  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the error state.
7525  */
7526 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e);
7527
7528 /**
7529  * Frees any resources used by the CResult_ChannelPublicKeysDecodeErrorZ.
7530  */
7531 void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
7532
7533 /**
7534  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ which has the same data as `orig`
7535  * but with all dynamically-allocated buffers duplicated in new buffers.
7536  */
7537 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
7538
7539 /**
7540  * Creates a new CResult_TxCreationKeysErrorZ in the success state.
7541  */
7542 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o);
7543
7544 /**
7545  * Creates a new CResult_TxCreationKeysErrorZ in the error state.
7546  */
7547 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
7548
7549 /**
7550  * Frees any resources used by the CResult_TxCreationKeysErrorZ.
7551  */
7552 void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
7553
7554 /**
7555  * Constructs a new COption_u32Z containing a u32
7556  */
7557 struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
7558
7559 /**
7560  * Constructs a new COption_u32Z containing nothing
7561  */
7562 struct LDKCOption_u32Z COption_u32Z_none(void);
7563
7564 /**
7565  * Frees any resources associated with the u32, if we are in the Some state
7566  */
7567 void COption_u32Z_free(struct LDKCOption_u32Z _res);
7568
7569 /**
7570  * Creates a new COption_u32Z which has the same data as `orig`
7571  * but with all dynamically-allocated buffers duplicated in new buffers.
7572  */
7573 struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
7574
7575 /**
7576  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the success state.
7577  */
7578 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
7579
7580 /**
7581  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the error state.
7582  */
7583 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
7584
7585 /**
7586  * Frees any resources used by the CResult_HTLCOutputInCommitmentDecodeErrorZ.
7587  */
7588 void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
7589
7590 /**
7591  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ which has the same data as `orig`
7592  * but with all dynamically-allocated buffers duplicated in new buffers.
7593  */
7594 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
7595
7596 /**
7597  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the success state.
7598  */
7599 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
7600
7601 /**
7602  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the error state.
7603  */
7604 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
7605
7606 /**
7607  * Frees any resources used by the CResult_CounterpartyChannelTransactionParametersDecodeErrorZ.
7608  */
7609 void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
7610
7611 /**
7612  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
7613  * but with all dynamically-allocated buffers duplicated in new buffers.
7614  */
7615 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
7616
7617 /**
7618  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the success state.
7619  */
7620 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o);
7621
7622 /**
7623  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the error state.
7624  */
7625 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
7626
7627 /**
7628  * Frees any resources used by the CResult_ChannelTransactionParametersDecodeErrorZ.
7629  */
7630 void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
7631
7632 /**
7633  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
7634  * but with all dynamically-allocated buffers duplicated in new buffers.
7635  */
7636 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
7637
7638 /**
7639  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7640  */
7641 void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res);
7642
7643 /**
7644  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the success state.
7645  */
7646 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o);
7647
7648 /**
7649  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the error state.
7650  */
7651 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7652
7653 /**
7654  * Frees any resources used by the CResult_HolderCommitmentTransactionDecodeErrorZ.
7655  */
7656 void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
7657
7658 /**
7659  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ which has the same data as `orig`
7660  * but with all dynamically-allocated buffers duplicated in new buffers.
7661  */
7662 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7663
7664 /**
7665  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the success state.
7666  */
7667 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o);
7668
7669 /**
7670  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the error state.
7671  */
7672 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7673
7674 /**
7675  * Frees any resources used by the CResult_BuiltCommitmentTransactionDecodeErrorZ.
7676  */
7677 void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
7678
7679 /**
7680  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ which has the same data as `orig`
7681  * but with all dynamically-allocated buffers duplicated in new buffers.
7682  */
7683 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7684
7685 /**
7686  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the success state.
7687  */
7688 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o);
7689
7690 /**
7691  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the error state.
7692  */
7693 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7694
7695 /**
7696  * Frees any resources used by the CResult_CommitmentTransactionDecodeErrorZ.
7697  */
7698 void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
7699
7700 /**
7701  * Creates a new CResult_CommitmentTransactionDecodeErrorZ which has the same data as `orig`
7702  * but with all dynamically-allocated buffers duplicated in new buffers.
7703  */
7704 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7705
7706 /**
7707  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the success state.
7708  */
7709 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o);
7710
7711 /**
7712  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the error state.
7713  */
7714 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void);
7715
7716 /**
7717  * Frees any resources used by the CResult_TrustedCommitmentTransactionNoneZ.
7718  */
7719 void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res);
7720
7721 /**
7722  * Creates a new CResult_CVec_SignatureZNoneZ in the success state.
7723  */
7724 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o);
7725
7726 /**
7727  * Creates a new CResult_CVec_SignatureZNoneZ in the error state.
7728  */
7729 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
7730
7731 /**
7732  * Frees any resources used by the CResult_CVec_SignatureZNoneZ.
7733  */
7734 void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
7735
7736 /**
7737  * Creates a new CResult_CVec_SignatureZNoneZ which has the same data as `orig`
7738  * but with all dynamically-allocated buffers duplicated in new buffers.
7739  */
7740 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
7741
7742 /**
7743  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7744  */
7745 void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
7746
7747 /**
7748  * Creates a new CResult_boolLightningErrorZ in the success state.
7749  */
7750 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
7751
7752 /**
7753  * Creates a new CResult_boolLightningErrorZ in the error state.
7754  */
7755 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
7756
7757 /**
7758  * Frees any resources used by the CResult_boolLightningErrorZ.
7759  */
7760 void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
7761
7762 /**
7763  * Creates a new CResult_boolLightningErrorZ which has the same data as `orig`
7764  * but with all dynamically-allocated buffers duplicated in new buffers.
7765  */
7766 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
7767
7768 /**
7769  * Creates a new tuple which has the same data as `orig`
7770  * but with all dynamically-allocated buffers duplicated in new buffers.
7771  */
7772 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
7773
7774 /**
7775  * Creates a new C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ from the contained elements.
7776  */
7777 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
7778
7779 /**
7780  * Frees any resources used by the C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.
7781  */
7782 void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
7783
7784 /**
7785  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7786  */
7787 void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
7788
7789 /**
7790  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7791  */
7792 void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res);
7793
7794 /**
7795  * Creates a new CResult_NoneLightningErrorZ in the success state.
7796  */
7797 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
7798
7799 /**
7800  * Creates a new CResult_NoneLightningErrorZ in the error state.
7801  */
7802 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
7803
7804 /**
7805  * Frees any resources used by the CResult_NoneLightningErrorZ.
7806  */
7807 void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
7808
7809 /**
7810  * Creates a new CResult_NoneLightningErrorZ which has the same data as `orig`
7811  * but with all dynamically-allocated buffers duplicated in new buffers.
7812  */
7813 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
7814
7815 /**
7816  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7817  */
7818 void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
7819
7820 /**
7821  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7822  */
7823 void CVec_u8Z_free(struct LDKCVec_u8Z _res);
7824
7825 /**
7826  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the success state.
7827  */
7828 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
7829
7830 /**
7831  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the error state.
7832  */
7833 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
7834
7835 /**
7836  * Frees any resources used by the CResult_CVec_u8ZPeerHandleErrorZ.
7837  */
7838 void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
7839
7840 /**
7841  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ which has the same data as `orig`
7842  * but with all dynamically-allocated buffers duplicated in new buffers.
7843  */
7844 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
7845
7846 /**
7847  * Creates a new CResult_NonePeerHandleErrorZ in the success state.
7848  */
7849 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
7850
7851 /**
7852  * Creates a new CResult_NonePeerHandleErrorZ in the error state.
7853  */
7854 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
7855
7856 /**
7857  * Frees any resources used by the CResult_NonePeerHandleErrorZ.
7858  */
7859 void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
7860
7861 /**
7862  * Creates a new CResult_NonePeerHandleErrorZ which has the same data as `orig`
7863  * but with all dynamically-allocated buffers duplicated in new buffers.
7864  */
7865 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
7866
7867 /**
7868  * Creates a new CResult_boolPeerHandleErrorZ in the success state.
7869  */
7870 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
7871
7872 /**
7873  * Creates a new CResult_boolPeerHandleErrorZ in the error state.
7874  */
7875 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
7876
7877 /**
7878  * Frees any resources used by the CResult_boolPeerHandleErrorZ.
7879  */
7880 void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
7881
7882 /**
7883  * Creates a new CResult_boolPeerHandleErrorZ which has the same data as `orig`
7884  * but with all dynamically-allocated buffers duplicated in new buffers.
7885  */
7886 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
7887
7888 /**
7889  * Creates a new CResult_InitFeaturesDecodeErrorZ in the success state.
7890  */
7891 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
7892
7893 /**
7894  * Creates a new CResult_InitFeaturesDecodeErrorZ in the error state.
7895  */
7896 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7897
7898 /**
7899  * Frees any resources used by the CResult_InitFeaturesDecodeErrorZ.
7900  */
7901 void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
7902
7903 /**
7904  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the success state.
7905  */
7906 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
7907
7908 /**
7909  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the error state.
7910  */
7911 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7912
7913 /**
7914  * Frees any resources used by the CResult_NodeFeaturesDecodeErrorZ.
7915  */
7916 void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
7917
7918 /**
7919  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the success state.
7920  */
7921 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
7922
7923 /**
7924  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the error state.
7925  */
7926 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7927
7928 /**
7929  * Frees any resources used by the CResult_ChannelFeaturesDecodeErrorZ.
7930  */
7931 void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
7932
7933 /**
7934  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the success state.
7935  */
7936 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
7937
7938 /**
7939  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the error state.
7940  */
7941 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7942
7943 /**
7944  * Frees any resources used by the CResult_InvoiceFeaturesDecodeErrorZ.
7945  */
7946 void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
7947
7948 /**
7949  * Creates a new CResult_ChannelConfigDecodeErrorZ in the success state.
7950  */
7951 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
7952
7953 /**
7954  * Creates a new CResult_ChannelConfigDecodeErrorZ in the error state.
7955  */
7956 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
7957
7958 /**
7959  * Frees any resources used by the CResult_ChannelConfigDecodeErrorZ.
7960  */
7961 void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
7962
7963 /**
7964  * Creates a new CResult_ChannelConfigDecodeErrorZ which has the same data as `orig`
7965  * but with all dynamically-allocated buffers duplicated in new buffers.
7966  */
7967 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
7968
7969 /**
7970  * Constructs a new COption_u64Z containing a u64
7971  */
7972 struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
7973
7974 /**
7975  * Constructs a new COption_u64Z containing nothing
7976  */
7977 struct LDKCOption_u64Z COption_u64Z_none(void);
7978
7979 /**
7980  * Frees any resources associated with the u64, if we are in the Some state
7981  */
7982 void COption_u64Z_free(struct LDKCOption_u64Z _res);
7983
7984 /**
7985  * Creates a new COption_u64Z which has the same data as `orig`
7986  * but with all dynamically-allocated buffers duplicated in new buffers.
7987  */
7988 struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
7989
7990 /**
7991  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ in the success state.
7992  */
7993 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_ok(struct LDKDirectionalChannelInfo o);
7994
7995 /**
7996  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ in the error state.
7997  */
7998 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
7999
8000 /**
8001  * Frees any resources used by the CResult_DirectionalChannelInfoDecodeErrorZ.
8002  */
8003 void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res);
8004
8005 /**
8006  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ which has the same data as `orig`
8007  * but with all dynamically-allocated buffers duplicated in new buffers.
8008  */
8009 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig);
8010
8011 /**
8012  * Creates a new CResult_ChannelInfoDecodeErrorZ in the success state.
8013  */
8014 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
8015
8016 /**
8017  * Creates a new CResult_ChannelInfoDecodeErrorZ in the error state.
8018  */
8019 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
8020
8021 /**
8022  * Frees any resources used by the CResult_ChannelInfoDecodeErrorZ.
8023  */
8024 void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
8025
8026 /**
8027  * Creates a new CResult_ChannelInfoDecodeErrorZ which has the same data as `orig`
8028  * but with all dynamically-allocated buffers duplicated in new buffers.
8029  */
8030 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
8031
8032 /**
8033  * Creates a new CResult_RoutingFeesDecodeErrorZ in the success state.
8034  */
8035 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
8036
8037 /**
8038  * Creates a new CResult_RoutingFeesDecodeErrorZ in the error state.
8039  */
8040 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
8041
8042 /**
8043  * Frees any resources used by the CResult_RoutingFeesDecodeErrorZ.
8044  */
8045 void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
8046
8047 /**
8048  * Creates a new CResult_RoutingFeesDecodeErrorZ which has the same data as `orig`
8049  * but with all dynamically-allocated buffers duplicated in new buffers.
8050  */
8051 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
8052
8053 /**
8054  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8055  */
8056 void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
8057
8058 /**
8059  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the success state.
8060  */
8061 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
8062
8063 /**
8064  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the error state.
8065  */
8066 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
8067
8068 /**
8069  * Frees any resources used by the CResult_NodeAnnouncementInfoDecodeErrorZ.
8070  */
8071 void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
8072
8073 /**
8074  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ which has the same data as `orig`
8075  * but with all dynamically-allocated buffers duplicated in new buffers.
8076  */
8077 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
8078
8079 /**
8080  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8081  */
8082 void CVec_u64Z_free(struct LDKCVec_u64Z _res);
8083
8084 /**
8085  * Creates a new CResult_NodeInfoDecodeErrorZ in the success state.
8086  */
8087 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
8088
8089 /**
8090  * Creates a new CResult_NodeInfoDecodeErrorZ in the error state.
8091  */
8092 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
8093
8094 /**
8095  * Frees any resources used by the CResult_NodeInfoDecodeErrorZ.
8096  */
8097 void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
8098
8099 /**
8100  * Creates a new CResult_NodeInfoDecodeErrorZ which has the same data as `orig`
8101  * but with all dynamically-allocated buffers duplicated in new buffers.
8102  */
8103 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
8104
8105 /**
8106  * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
8107  */
8108 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
8109
8110 /**
8111  * Creates a new CResult_NetworkGraphDecodeErrorZ in the error state.
8112  */
8113 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
8114
8115 /**
8116  * Frees any resources used by the CResult_NetworkGraphDecodeErrorZ.
8117  */
8118 void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
8119
8120 /**
8121  * Creates a new CResult_NetworkGraphDecodeErrorZ which has the same data as `orig`
8122  * but with all dynamically-allocated buffers duplicated in new buffers.
8123  */
8124 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
8125
8126 /**
8127  * Creates a new C2Tuple_usizeTransactionZ from the contained elements.
8128  */
8129 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
8130
8131 /**
8132  * Frees any resources used by the C2Tuple_usizeTransactionZ.
8133  */
8134 void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
8135
8136 /**
8137  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8138  */
8139 void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
8140
8141 /**
8142  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the success state.
8143  */
8144 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
8145
8146 /**
8147  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the error state.
8148  */
8149 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
8150
8151 /**
8152  * Frees any resources used by the CResult_NoneChannelMonitorUpdateErrZ.
8153  */
8154 void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
8155
8156 /**
8157  * Creates a new CResult_NoneChannelMonitorUpdateErrZ which has the same data as `orig`
8158  * but with all dynamically-allocated buffers duplicated in new buffers.
8159  */
8160 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
8161
8162 /**
8163  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8164  */
8165 void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
8166
8167 /**
8168  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8169  */
8170 void CVec_EventZ_free(struct LDKCVec_EventZ _res);
8171
8172 /**
8173  * Creates a new CResult_OutPointDecodeErrorZ in the success state.
8174  */
8175 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
8176
8177 /**
8178  * Creates a new CResult_OutPointDecodeErrorZ in the error state.
8179  */
8180 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
8181
8182 /**
8183  * Frees any resources used by the CResult_OutPointDecodeErrorZ.
8184  */
8185 void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
8186
8187 /**
8188  * Creates a new CResult_OutPointDecodeErrorZ which has the same data as `orig`
8189  * but with all dynamically-allocated buffers duplicated in new buffers.
8190  */
8191 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
8192
8193 /**
8194  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the success state.
8195  */
8196 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
8197
8198 /**
8199  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the error state.
8200  */
8201 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
8202
8203 /**
8204  * Frees any resources used by the CResult_ChannelMonitorUpdateDecodeErrorZ.
8205  */
8206 void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
8207
8208 /**
8209  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ which has the same data as `orig`
8210  * but with all dynamically-allocated buffers duplicated in new buffers.
8211  */
8212 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
8213
8214 /**
8215  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the success state.
8216  */
8217 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o);
8218
8219 /**
8220  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the error state.
8221  */
8222 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e);
8223
8224 /**
8225  * Frees any resources used by the CResult_HTLCUpdateDecodeErrorZ.
8226  */
8227 void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
8228
8229 /**
8230  * Creates a new CResult_HTLCUpdateDecodeErrorZ which has the same data as `orig`
8231  * but with all dynamically-allocated buffers duplicated in new buffers.
8232  */
8233 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
8234
8235 /**
8236  * Creates a new CResult_NoneMonitorUpdateErrorZ in the success state.
8237  */
8238 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
8239
8240 /**
8241  * Creates a new CResult_NoneMonitorUpdateErrorZ in the error state.
8242  */
8243 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e);
8244
8245 /**
8246  * Frees any resources used by the CResult_NoneMonitorUpdateErrorZ.
8247  */
8248 void CResult_NoneMonitorUpdateErrorZ_free(struct LDKCResult_NoneMonitorUpdateErrorZ _res);
8249
8250 /**
8251  * Creates a new CResult_NoneMonitorUpdateErrorZ which has the same data as `orig`
8252  * but with all dynamically-allocated buffers duplicated in new buffers.
8253  */
8254 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig);
8255
8256 /**
8257  * Creates a new tuple which has the same data as `orig`
8258  * but with all dynamically-allocated buffers duplicated in new buffers.
8259  */
8260 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
8261
8262 /**
8263  * Creates a new C2Tuple_OutPointScriptZ from the contained elements.
8264  */
8265 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
8266
8267 /**
8268  * Frees any resources used by the C2Tuple_OutPointScriptZ.
8269  */
8270 void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
8271
8272 /**
8273  * Creates a new tuple which has the same data as `orig`
8274  * but with all dynamically-allocated buffers duplicated in new buffers.
8275  */
8276 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
8277
8278 /**
8279  * Creates a new C2Tuple_u32ScriptZ from the contained elements.
8280  */
8281 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
8282
8283 /**
8284  * Frees any resources used by the C2Tuple_u32ScriptZ.
8285  */
8286 void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
8287
8288 /**
8289  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8290  */
8291 void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
8292
8293 /**
8294  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ from the contained elements.
8295  */
8296 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
8297
8298 /**
8299  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ.
8300  */
8301 void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
8302
8303 /**
8304  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8305  */
8306 void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
8307
8308 /**
8309  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8310  */
8311 void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
8312
8313 /**
8314  * Creates a new tuple which has the same data as `orig`
8315  * but with all dynamically-allocated buffers duplicated in new buffers.
8316  */
8317 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
8318
8319 /**
8320  * Creates a new C2Tuple_u32TxOutZ from the contained elements.
8321  */
8322 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
8323
8324 /**
8325  * Frees any resources used by the C2Tuple_u32TxOutZ.
8326  */
8327 void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res);
8328
8329 /**
8330  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8331  */
8332 void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
8333
8334 /**
8335  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ from the contained elements.
8336  */
8337 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b);
8338
8339 /**
8340  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ.
8341  */
8342 void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res);
8343
8344 /**
8345  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8346  */
8347 void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res);
8348
8349 /**
8350  * Creates a new C2Tuple_BlockHashChannelMonitorZ from the contained elements.
8351  */
8352 struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
8353
8354 /**
8355  * Frees any resources used by the C2Tuple_BlockHashChannelMonitorZ.
8356  */
8357 void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
8358
8359 /**
8360  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the success state.
8361  */
8362 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
8363
8364 /**
8365  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the error state.
8366  */
8367 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
8368
8369 /**
8370  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.
8371  */
8372 void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
8373
8374 /**
8375  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8376  */
8377 void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
8378
8379 /**
8380  * Creates a new CResult_TxOutAccessErrorZ in the success state.
8381  */
8382 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
8383
8384 /**
8385  * Creates a new CResult_TxOutAccessErrorZ in the error state.
8386  */
8387 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
8388
8389 /**
8390  * Frees any resources used by the CResult_TxOutAccessErrorZ.
8391  */
8392 void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
8393
8394 /**
8395  * Creates a new CResult_TxOutAccessErrorZ which has the same data as `orig`
8396  * but with all dynamically-allocated buffers duplicated in new buffers.
8397  */
8398 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
8399
8400 /**
8401  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing a crate::c_types::derived::C2Tuple_usizeTransactionZ
8402  */
8403 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
8404
8405 /**
8406  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing nothing
8407  */
8408 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
8409
8410 /**
8411  * Frees any resources associated with the crate::c_types::derived::C2Tuple_usizeTransactionZ, if we are in the Some state
8412  */
8413 void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
8414
8415 /**
8416  * Creates a new CResult_NoneAPIErrorZ in the success state.
8417  */
8418 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
8419
8420 /**
8421  * Creates a new CResult_NoneAPIErrorZ in the error state.
8422  */
8423 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
8424
8425 /**
8426  * Frees any resources used by the CResult_NoneAPIErrorZ.
8427  */
8428 void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
8429
8430 /**
8431  * Creates a new CResult_NoneAPIErrorZ which has the same data as `orig`
8432  * but with all dynamically-allocated buffers duplicated in new buffers.
8433  */
8434 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
8435
8436 /**
8437  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8438  */
8439 void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
8440
8441 /**
8442  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8443  */
8444 void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
8445
8446 /**
8447  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8448  */
8449 void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
8450
8451 /**
8452  * Creates a new CResult_NonePaymentSendFailureZ in the success state.
8453  */
8454 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
8455
8456 /**
8457  * Creates a new CResult_NonePaymentSendFailureZ in the error state.
8458  */
8459 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
8460
8461 /**
8462  * Frees any resources used by the CResult_NonePaymentSendFailureZ.
8463  */
8464 void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
8465
8466 /**
8467  * Creates a new CResult_NonePaymentSendFailureZ which has the same data as `orig`
8468  * but with all dynamically-allocated buffers duplicated in new buffers.
8469  */
8470 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
8471
8472 /**
8473  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8474  */
8475 void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
8476
8477 /**
8478  * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
8479  */
8480 struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
8481
8482 /**
8483  * Frees any resources used by the C2Tuple_BlockHashChannelManagerZ.
8484  */
8485 void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
8486
8487 /**
8488  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the success state.
8489  */
8490 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
8491
8492 /**
8493  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the error state.
8494  */
8495 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
8496
8497 /**
8498  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.
8499  */
8500 void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
8501
8502 /**
8503  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the success state.
8504  */
8505 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
8506
8507 /**
8508  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the error state.
8509  */
8510 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
8511
8512 /**
8513  * Frees any resources used by the CResult_SpendableOutputDescriptorDecodeErrorZ.
8514  */
8515 void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
8516
8517 /**
8518  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ which has the same data as `orig`
8519  * but with all dynamically-allocated buffers duplicated in new buffers.
8520  */
8521 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
8522
8523 /**
8524  * Creates a new tuple which has the same data as `orig`
8525  * but with all dynamically-allocated buffers duplicated in new buffers.
8526  */
8527 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
8528
8529 /**
8530  * Creates a new C2Tuple_SignatureCVec_SignatureZZ from the contained elements.
8531  */
8532 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
8533
8534 /**
8535  * Frees any resources used by the C2Tuple_SignatureCVec_SignatureZZ.
8536  */
8537 void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
8538
8539 /**
8540  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the success state.
8541  */
8542 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
8543
8544 /**
8545  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the error state.
8546  */
8547 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
8548
8549 /**
8550  * Frees any resources used by the CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ.
8551  */
8552 void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
8553
8554 /**
8555  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ which has the same data as `orig`
8556  * but with all dynamically-allocated buffers duplicated in new buffers.
8557  */
8558 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
8559
8560 /**
8561  * Creates a new CResult_SignatureNoneZ in the success state.
8562  */
8563 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
8564
8565 /**
8566  * Creates a new CResult_SignatureNoneZ in the error state.
8567  */
8568 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
8569
8570 /**
8571  * Frees any resources used by the CResult_SignatureNoneZ.
8572  */
8573 void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
8574
8575 /**
8576  * Creates a new CResult_SignatureNoneZ which has the same data as `orig`
8577  * but with all dynamically-allocated buffers duplicated in new buffers.
8578  */
8579 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
8580
8581 /**
8582  * Creates a new CResult_SignDecodeErrorZ in the success state.
8583  */
8584 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
8585
8586 /**
8587  * Creates a new CResult_SignDecodeErrorZ in the error state.
8588  */
8589 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
8590
8591 /**
8592  * Frees any resources used by the CResult_SignDecodeErrorZ.
8593  */
8594 void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
8595
8596 /**
8597  * Creates a new CResult_SignDecodeErrorZ which has the same data as `orig`
8598  * but with all dynamically-allocated buffers duplicated in new buffers.
8599  */
8600 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
8601
8602 /**
8603  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8604  */
8605 void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
8606
8607 /**
8608  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the success state.
8609  */
8610 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
8611
8612 /**
8613  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the error state.
8614  */
8615 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
8616
8617 /**
8618  * Frees any resources used by the CResult_CVec_CVec_u8ZZNoneZ.
8619  */
8620 void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
8621
8622 /**
8623  * Creates a new CResult_CVec_CVec_u8ZZNoneZ which has the same data as `orig`
8624  * but with all dynamically-allocated buffers duplicated in new buffers.
8625  */
8626 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
8627
8628 /**
8629  * Creates a new CResult_InMemorySignerDecodeErrorZ in the success state.
8630  */
8631 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
8632
8633 /**
8634  * Creates a new CResult_InMemorySignerDecodeErrorZ in the error state.
8635  */
8636 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
8637
8638 /**
8639  * Frees any resources used by the CResult_InMemorySignerDecodeErrorZ.
8640  */
8641 void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
8642
8643 /**
8644  * Creates a new CResult_InMemorySignerDecodeErrorZ which has the same data as `orig`
8645  * but with all dynamically-allocated buffers duplicated in new buffers.
8646  */
8647 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
8648
8649 /**
8650  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8651  */
8652 void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
8653
8654 /**
8655  * Creates a new CResult_TransactionNoneZ in the success state.
8656  */
8657 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
8658
8659 /**
8660  * Creates a new CResult_TransactionNoneZ in the error state.
8661  */
8662 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
8663
8664 /**
8665  * Frees any resources used by the CResult_TransactionNoneZ.
8666  */
8667 void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
8668
8669 /**
8670  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8671  */
8672 void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
8673
8674 /**
8675  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8676  */
8677 void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res);
8678
8679 /**
8680  * Creates a new CResult_RouteDecodeErrorZ in the success state.
8681  */
8682 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o);
8683
8684 /**
8685  * Creates a new CResult_RouteDecodeErrorZ in the error state.
8686  */
8687 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e);
8688
8689 /**
8690  * Frees any resources used by the CResult_RouteDecodeErrorZ.
8691  */
8692 void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
8693
8694 /**
8695  * Creates a new CResult_RouteDecodeErrorZ which has the same data as `orig`
8696  * but with all dynamically-allocated buffers duplicated in new buffers.
8697  */
8698 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
8699
8700 /**
8701  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8702  */
8703 void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
8704
8705 /**
8706  * Creates a new CResult_RouteLightningErrorZ in the success state.
8707  */
8708 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o);
8709
8710 /**
8711  * Creates a new CResult_RouteLightningErrorZ in the error state.
8712  */
8713 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e);
8714
8715 /**
8716  * Frees any resources used by the CResult_RouteLightningErrorZ.
8717  */
8718 void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
8719
8720 /**
8721  * Creates a new CResult_RouteLightningErrorZ which has the same data as `orig`
8722  * but with all dynamically-allocated buffers duplicated in new buffers.
8723  */
8724 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
8725
8726 /**
8727  * Creates a new CResult_NetAddressu8Z in the success state.
8728  */
8729 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_ok(struct LDKNetAddress o);
8730
8731 /**
8732  * Creates a new CResult_NetAddressu8Z in the error state.
8733  */
8734 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_err(uint8_t e);
8735
8736 /**
8737  * Frees any resources used by the CResult_NetAddressu8Z.
8738  */
8739 void CResult_NetAddressu8Z_free(struct LDKCResult_NetAddressu8Z _res);
8740
8741 /**
8742  * Creates a new CResult_NetAddressu8Z which has the same data as `orig`
8743  * but with all dynamically-allocated buffers duplicated in new buffers.
8744  */
8745 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_clone(const struct LDKCResult_NetAddressu8Z *NONNULL_PTR orig);
8746
8747 /**
8748  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ in the success state.
8749  */
8750 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_ok(struct LDKCResult_NetAddressu8Z o);
8751
8752 /**
8753  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ in the error state.
8754  */
8755 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_err(struct LDKDecodeError e);
8756
8757 /**
8758  * Frees any resources used by the CResult_CResult_NetAddressu8ZDecodeErrorZ.
8759  */
8760 void CResult_CResult_NetAddressu8ZDecodeErrorZ_free(struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ _res);
8761
8762 /**
8763  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ which has the same data as `orig`
8764  * but with all dynamically-allocated buffers duplicated in new buffers.
8765  */
8766 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(const struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ *NONNULL_PTR orig);
8767
8768 /**
8769  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8770  */
8771 void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
8772
8773 /**
8774  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8775  */
8776 void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
8777
8778 /**
8779  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8780  */
8781 void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
8782
8783 /**
8784  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8785  */
8786 void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
8787
8788 /**
8789  * Creates a new CResult_AcceptChannelDecodeErrorZ in the success state.
8790  */
8791 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o);
8792
8793 /**
8794  * Creates a new CResult_AcceptChannelDecodeErrorZ in the error state.
8795  */
8796 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e);
8797
8798 /**
8799  * Frees any resources used by the CResult_AcceptChannelDecodeErrorZ.
8800  */
8801 void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
8802
8803 /**
8804  * Creates a new CResult_AcceptChannelDecodeErrorZ which has the same data as `orig`
8805  * but with all dynamically-allocated buffers duplicated in new buffers.
8806  */
8807 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
8808
8809 /**
8810  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the success state.
8811  */
8812 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o);
8813
8814 /**
8815  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the error state.
8816  */
8817 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e);
8818
8819 /**
8820  * Frees any resources used by the CResult_AnnouncementSignaturesDecodeErrorZ.
8821  */
8822 void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
8823
8824 /**
8825  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ which has the same data as `orig`
8826  * but with all dynamically-allocated buffers duplicated in new buffers.
8827  */
8828 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
8829
8830 /**
8831  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the success state.
8832  */
8833 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o);
8834
8835 /**
8836  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the error state.
8837  */
8838 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e);
8839
8840 /**
8841  * Frees any resources used by the CResult_ChannelReestablishDecodeErrorZ.
8842  */
8843 void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
8844
8845 /**
8846  * Creates a new CResult_ChannelReestablishDecodeErrorZ which has the same data as `orig`
8847  * but with all dynamically-allocated buffers duplicated in new buffers.
8848  */
8849 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
8850
8851 /**
8852  * Creates a new CResult_ClosingSignedDecodeErrorZ in the success state.
8853  */
8854 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o);
8855
8856 /**
8857  * Creates a new CResult_ClosingSignedDecodeErrorZ in the error state.
8858  */
8859 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e);
8860
8861 /**
8862  * Frees any resources used by the CResult_ClosingSignedDecodeErrorZ.
8863  */
8864 void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
8865
8866 /**
8867  * Creates a new CResult_ClosingSignedDecodeErrorZ which has the same data as `orig`
8868  * but with all dynamically-allocated buffers duplicated in new buffers.
8869  */
8870 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
8871
8872 /**
8873  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the success state.
8874  */
8875 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o);
8876
8877 /**
8878  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the error state.
8879  */
8880 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e);
8881
8882 /**
8883  * Frees any resources used by the CResult_CommitmentSignedDecodeErrorZ.
8884  */
8885 void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
8886
8887 /**
8888  * Creates a new CResult_CommitmentSignedDecodeErrorZ which has the same data as `orig`
8889  * but with all dynamically-allocated buffers duplicated in new buffers.
8890  */
8891 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
8892
8893 /**
8894  * Creates a new CResult_FundingCreatedDecodeErrorZ in the success state.
8895  */
8896 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o);
8897
8898 /**
8899  * Creates a new CResult_FundingCreatedDecodeErrorZ in the error state.
8900  */
8901 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e);
8902
8903 /**
8904  * Frees any resources used by the CResult_FundingCreatedDecodeErrorZ.
8905  */
8906 void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
8907
8908 /**
8909  * Creates a new CResult_FundingCreatedDecodeErrorZ which has the same data as `orig`
8910  * but with all dynamically-allocated buffers duplicated in new buffers.
8911  */
8912 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
8913
8914 /**
8915  * Creates a new CResult_FundingSignedDecodeErrorZ in the success state.
8916  */
8917 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o);
8918
8919 /**
8920  * Creates a new CResult_FundingSignedDecodeErrorZ in the error state.
8921  */
8922 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e);
8923
8924 /**
8925  * Frees any resources used by the CResult_FundingSignedDecodeErrorZ.
8926  */
8927 void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
8928
8929 /**
8930  * Creates a new CResult_FundingSignedDecodeErrorZ which has the same data as `orig`
8931  * but with all dynamically-allocated buffers duplicated in new buffers.
8932  */
8933 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
8934
8935 /**
8936  * Creates a new CResult_FundingLockedDecodeErrorZ in the success state.
8937  */
8938 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o);
8939
8940 /**
8941  * Creates a new CResult_FundingLockedDecodeErrorZ in the error state.
8942  */
8943 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e);
8944
8945 /**
8946  * Frees any resources used by the CResult_FundingLockedDecodeErrorZ.
8947  */
8948 void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res);
8949
8950 /**
8951  * Creates a new CResult_FundingLockedDecodeErrorZ which has the same data as `orig`
8952  * but with all dynamically-allocated buffers duplicated in new buffers.
8953  */
8954 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig);
8955
8956 /**
8957  * Creates a new CResult_InitDecodeErrorZ in the success state.
8958  */
8959 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o);
8960
8961 /**
8962  * Creates a new CResult_InitDecodeErrorZ in the error state.
8963  */
8964 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e);
8965
8966 /**
8967  * Frees any resources used by the CResult_InitDecodeErrorZ.
8968  */
8969 void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
8970
8971 /**
8972  * Creates a new CResult_InitDecodeErrorZ which has the same data as `orig`
8973  * but with all dynamically-allocated buffers duplicated in new buffers.
8974  */
8975 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
8976
8977 /**
8978  * Creates a new CResult_OpenChannelDecodeErrorZ in the success state.
8979  */
8980 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o);
8981
8982 /**
8983  * Creates a new CResult_OpenChannelDecodeErrorZ in the error state.
8984  */
8985 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e);
8986
8987 /**
8988  * Frees any resources used by the CResult_OpenChannelDecodeErrorZ.
8989  */
8990 void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
8991
8992 /**
8993  * Creates a new CResult_OpenChannelDecodeErrorZ which has the same data as `orig`
8994  * but with all dynamically-allocated buffers duplicated in new buffers.
8995  */
8996 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
8997
8998 /**
8999  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the success state.
9000  */
9001 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o);
9002
9003 /**
9004  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the error state.
9005  */
9006 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e);
9007
9008 /**
9009  * Frees any resources used by the CResult_RevokeAndACKDecodeErrorZ.
9010  */
9011 void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
9012
9013 /**
9014  * Creates a new CResult_RevokeAndACKDecodeErrorZ which has the same data as `orig`
9015  * but with all dynamically-allocated buffers duplicated in new buffers.
9016  */
9017 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
9018
9019 /**
9020  * Creates a new CResult_ShutdownDecodeErrorZ in the success state.
9021  */
9022 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o);
9023
9024 /**
9025  * Creates a new CResult_ShutdownDecodeErrorZ in the error state.
9026  */
9027 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e);
9028
9029 /**
9030  * Frees any resources used by the CResult_ShutdownDecodeErrorZ.
9031  */
9032 void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
9033
9034 /**
9035  * Creates a new CResult_ShutdownDecodeErrorZ which has the same data as `orig`
9036  * but with all dynamically-allocated buffers duplicated in new buffers.
9037  */
9038 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
9039
9040 /**
9041  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the success state.
9042  */
9043 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o);
9044
9045 /**
9046  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the error state.
9047  */
9048 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9049
9050 /**
9051  * Frees any resources used by the CResult_UpdateFailHTLCDecodeErrorZ.
9052  */
9053 void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
9054
9055 /**
9056  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ which has the same data as `orig`
9057  * but with all dynamically-allocated buffers duplicated in new buffers.
9058  */
9059 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
9060
9061 /**
9062  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the success state.
9063  */
9064 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o);
9065
9066 /**
9067  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the error state.
9068  */
9069 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9070
9071 /**
9072  * Frees any resources used by the CResult_UpdateFailMalformedHTLCDecodeErrorZ.
9073  */
9074 void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
9075
9076 /**
9077  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ which has the same data as `orig`
9078  * but with all dynamically-allocated buffers duplicated in new buffers.
9079  */
9080 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
9081
9082 /**
9083  * Creates a new CResult_UpdateFeeDecodeErrorZ in the success state.
9084  */
9085 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o);
9086
9087 /**
9088  * Creates a new CResult_UpdateFeeDecodeErrorZ in the error state.
9089  */
9090 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e);
9091
9092 /**
9093  * Frees any resources used by the CResult_UpdateFeeDecodeErrorZ.
9094  */
9095 void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
9096
9097 /**
9098  * Creates a new CResult_UpdateFeeDecodeErrorZ which has the same data as `orig`
9099  * but with all dynamically-allocated buffers duplicated in new buffers.
9100  */
9101 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
9102
9103 /**
9104  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the success state.
9105  */
9106 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o);
9107
9108 /**
9109  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the error state.
9110  */
9111 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9112
9113 /**
9114  * Frees any resources used by the CResult_UpdateFulfillHTLCDecodeErrorZ.
9115  */
9116 void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
9117
9118 /**
9119  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ which has the same data as `orig`
9120  * but with all dynamically-allocated buffers duplicated in new buffers.
9121  */
9122 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
9123
9124 /**
9125  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the success state.
9126  */
9127 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o);
9128
9129 /**
9130  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the error state.
9131  */
9132 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9133
9134 /**
9135  * Frees any resources used by the CResult_UpdateAddHTLCDecodeErrorZ.
9136  */
9137 void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
9138
9139 /**
9140  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ which has the same data as `orig`
9141  * but with all dynamically-allocated buffers duplicated in new buffers.
9142  */
9143 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
9144
9145 /**
9146  * Creates a new CResult_PingDecodeErrorZ in the success state.
9147  */
9148 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o);
9149
9150 /**
9151  * Creates a new CResult_PingDecodeErrorZ in the error state.
9152  */
9153 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e);
9154
9155 /**
9156  * Frees any resources used by the CResult_PingDecodeErrorZ.
9157  */
9158 void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
9159
9160 /**
9161  * Creates a new CResult_PingDecodeErrorZ which has the same data as `orig`
9162  * but with all dynamically-allocated buffers duplicated in new buffers.
9163  */
9164 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
9165
9166 /**
9167  * Creates a new CResult_PongDecodeErrorZ in the success state.
9168  */
9169 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o);
9170
9171 /**
9172  * Creates a new CResult_PongDecodeErrorZ in the error state.
9173  */
9174 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e);
9175
9176 /**
9177  * Frees any resources used by the CResult_PongDecodeErrorZ.
9178  */
9179 void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
9180
9181 /**
9182  * Creates a new CResult_PongDecodeErrorZ which has the same data as `orig`
9183  * but with all dynamically-allocated buffers duplicated in new buffers.
9184  */
9185 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
9186
9187 /**
9188  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the success state.
9189  */
9190 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o);
9191
9192 /**
9193  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the error state.
9194  */
9195 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9196
9197 /**
9198  * Frees any resources used by the CResult_UnsignedChannelAnnouncementDecodeErrorZ.
9199  */
9200 void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
9201
9202 /**
9203  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ which has the same data as `orig`
9204  * but with all dynamically-allocated buffers duplicated in new buffers.
9205  */
9206 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9207
9208 /**
9209  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the success state.
9210  */
9211 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o);
9212
9213 /**
9214  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the error state.
9215  */
9216 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9217
9218 /**
9219  * Frees any resources used by the CResult_ChannelAnnouncementDecodeErrorZ.
9220  */
9221 void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
9222
9223 /**
9224  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ which has the same data as `orig`
9225  * but with all dynamically-allocated buffers duplicated in new buffers.
9226  */
9227 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9228
9229 /**
9230  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the success state.
9231  */
9232 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o);
9233
9234 /**
9235  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the error state.
9236  */
9237 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
9238
9239 /**
9240  * Frees any resources used by the CResult_UnsignedChannelUpdateDecodeErrorZ.
9241  */
9242 void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
9243
9244 /**
9245  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ which has the same data as `orig`
9246  * but with all dynamically-allocated buffers duplicated in new buffers.
9247  */
9248 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
9249
9250 /**
9251  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the success state.
9252  */
9253 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o);
9254
9255 /**
9256  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the error state.
9257  */
9258 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
9259
9260 /**
9261  * Frees any resources used by the CResult_ChannelUpdateDecodeErrorZ.
9262  */
9263 void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
9264
9265 /**
9266  * Creates a new CResult_ChannelUpdateDecodeErrorZ which has the same data as `orig`
9267  * but with all dynamically-allocated buffers duplicated in new buffers.
9268  */
9269 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
9270
9271 /**
9272  * Creates a new CResult_ErrorMessageDecodeErrorZ in the success state.
9273  */
9274 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o);
9275
9276 /**
9277  * Creates a new CResult_ErrorMessageDecodeErrorZ in the error state.
9278  */
9279 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e);
9280
9281 /**
9282  * Frees any resources used by the CResult_ErrorMessageDecodeErrorZ.
9283  */
9284 void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
9285
9286 /**
9287  * Creates a new CResult_ErrorMessageDecodeErrorZ which has the same data as `orig`
9288  * but with all dynamically-allocated buffers duplicated in new buffers.
9289  */
9290 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
9291
9292 /**
9293  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the success state.
9294  */
9295 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
9296
9297 /**
9298  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the error state.
9299  */
9300 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9301
9302 /**
9303  * Frees any resources used by the CResult_UnsignedNodeAnnouncementDecodeErrorZ.
9304  */
9305 void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
9306
9307 /**
9308  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ which has the same data as `orig`
9309  * but with all dynamically-allocated buffers duplicated in new buffers.
9310  */
9311 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9312
9313 /**
9314  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the success state.
9315  */
9316 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o);
9317
9318 /**
9319  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the error state.
9320  */
9321 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9322
9323 /**
9324  * Frees any resources used by the CResult_NodeAnnouncementDecodeErrorZ.
9325  */
9326 void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
9327
9328 /**
9329  * Creates a new CResult_NodeAnnouncementDecodeErrorZ which has the same data as `orig`
9330  * but with all dynamically-allocated buffers duplicated in new buffers.
9331  */
9332 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9333
9334 /**
9335  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the success state.
9336  */
9337 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o);
9338
9339 /**
9340  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the error state.
9341  */
9342 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e);
9343
9344 /**
9345  * Frees any resources used by the CResult_QueryShortChannelIdsDecodeErrorZ.
9346  */
9347 void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
9348
9349 /**
9350  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ which has the same data as `orig`
9351  * but with all dynamically-allocated buffers duplicated in new buffers.
9352  */
9353 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
9354
9355 /**
9356  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the success state.
9357  */
9358 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o);
9359
9360 /**
9361  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the error state.
9362  */
9363 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e);
9364
9365 /**
9366  * Frees any resources used by the CResult_ReplyShortChannelIdsEndDecodeErrorZ.
9367  */
9368 void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
9369
9370 /**
9371  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ which has the same data as `orig`
9372  * but with all dynamically-allocated buffers duplicated in new buffers.
9373  */
9374 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
9375
9376 /**
9377  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the success state.
9378  */
9379 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o);
9380
9381 /**
9382  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the error state.
9383  */
9384 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
9385
9386 /**
9387  * Frees any resources used by the CResult_QueryChannelRangeDecodeErrorZ.
9388  */
9389 void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
9390
9391 /**
9392  * Creates a new CResult_QueryChannelRangeDecodeErrorZ which has the same data as `orig`
9393  * but with all dynamically-allocated buffers duplicated in new buffers.
9394  */
9395 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
9396
9397 /**
9398  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the success state.
9399  */
9400 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o);
9401
9402 /**
9403  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the error state.
9404  */
9405 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
9406
9407 /**
9408  * Frees any resources used by the CResult_ReplyChannelRangeDecodeErrorZ.
9409  */
9410 void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
9411
9412 /**
9413  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ which has the same data as `orig`
9414  * but with all dynamically-allocated buffers duplicated in new buffers.
9415  */
9416 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
9417
9418 /**
9419  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the success state.
9420  */
9421 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o);
9422
9423 /**
9424  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the error state.
9425  */
9426 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e);
9427
9428 /**
9429  * Frees any resources used by the CResult_GossipTimestampFilterDecodeErrorZ.
9430  */
9431 void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
9432
9433 /**
9434  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ which has the same data as `orig`
9435  * but with all dynamically-allocated buffers duplicated in new buffers.
9436  */
9437 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
9438
9439 /**
9440  * Frees any resources used by the Event
9441  */
9442 void Event_free(struct LDKEvent this_ptr);
9443
9444 /**
9445  * Creates a copy of the Event
9446  */
9447 struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
9448
9449 /**
9450  * Serialize the Event object into a byte array which can be read by Event_read
9451  */
9452 struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
9453
9454 /**
9455  * Frees any resources used by the MessageSendEvent
9456  */
9457 void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
9458
9459 /**
9460  * Creates a copy of the MessageSendEvent
9461  */
9462 struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
9463
9464 /**
9465  * Calls the free function if one is set
9466  */
9467 void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
9468
9469 /**
9470  * Calls the free function if one is set
9471  */
9472 void EventsProvider_free(struct LDKEventsProvider this_ptr);
9473
9474 /**
9475  * Frees any resources used by the APIError
9476  */
9477 void APIError_free(struct LDKAPIError this_ptr);
9478
9479 /**
9480  * Creates a copy of the APIError
9481  */
9482 struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
9483
9484 /**
9485  * Creates a copy of the Level
9486  */
9487 enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
9488
9489 /**
9490  * Returns the most verbose logging level.
9491  */
9492 MUST_USE_RES enum LDKLevel Level_max(void);
9493
9494 /**
9495  * Calls the free function if one is set
9496  */
9497 void Logger_free(struct LDKLogger this_ptr);
9498
9499 /**
9500  * Frees any resources used by the ChannelHandshakeConfig, if is_owned is set and inner is non-NULL.
9501  */
9502 void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
9503
9504 /**
9505  * Confirmations we will wait for before considering the channel locked in.
9506  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
9507  * equivalent limit applied to outbound channels).
9508  *
9509  * Default value: 6.
9510  */
9511 uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9512
9513 /**
9514  * Confirmations we will wait for before considering the channel locked in.
9515  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
9516  * equivalent limit applied to outbound channels).
9517  *
9518  * Default value: 6.
9519  */
9520 void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
9521
9522 /**
9523  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
9524  * the number of blocks we have to punish our counterparty if they broadcast a revoked
9525  * transaction).
9526  *
9527  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
9528  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
9529  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
9530  * possibly with time in between to RBF the spending transaction).
9531  *
9532  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
9533  * case of an honest unilateral channel close, which implicitly decrease the economic value of
9534  * our channel.
9535  *
9536  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
9537  * can tweak config to ask for more security, not less.
9538  */
9539 uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9540
9541 /**
9542  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
9543  * the number of blocks we have to punish our counterparty if they broadcast a revoked
9544  * transaction).
9545  *
9546  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
9547  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
9548  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
9549  * possibly with time in between to RBF the spending transaction).
9550  *
9551  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
9552  * case of an honest unilateral channel close, which implicitly decrease the economic value of
9553  * our channel.
9554  *
9555  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
9556  * can tweak config to ask for more security, not less.
9557  */
9558 void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
9559
9560 /**
9561  * Set to the smallest value HTLC we will accept to process.
9562  *
9563  * This value is sent to our counterparty on channel-open and we close the channel any time
9564  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
9565  *
9566  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
9567  * by the protocol.
9568  */
9569 uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9570
9571 /**
9572  * Set to the smallest value HTLC we will accept to process.
9573  *
9574  * This value is sent to our counterparty on channel-open and we close the channel any time
9575  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
9576  *
9577  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
9578  * by the protocol.
9579  */
9580 void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
9581
9582 /**
9583  * Constructs a new ChannelHandshakeConfig given each field
9584  */
9585 MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_new(uint32_t minimum_depth_arg, uint16_t our_to_self_delay_arg, uint64_t our_htlc_minimum_msat_arg);
9586
9587 /**
9588  * Creates a copy of the ChannelHandshakeConfig
9589  */
9590 struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
9591
9592 /**
9593  * Creates a "default" ChannelHandshakeConfig. See struct and individual field documentaiton for details on which values are used.
9594  */
9595 MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
9596
9597 /**
9598  * Frees any resources used by the ChannelHandshakeLimits, if is_owned is set and inner is non-NULL.
9599  */
9600 void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
9601
9602 /**
9603  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
9604  * only applies to inbound channels.
9605  *
9606  * Default value: 0.
9607  */
9608 uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9609
9610 /**
9611  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
9612  * only applies to inbound channels.
9613  *
9614  * Default value: 0.
9615  */
9616 void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9617
9618 /**
9619  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
9620  * you to limit the maximum minimum-size they can require.
9621  *
9622  * Default value: u64::max_value.
9623  */
9624 uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9625
9626 /**
9627  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
9628  * you to limit the maximum minimum-size they can require.
9629  *
9630  * Default value: u64::max_value.
9631  */
9632 void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9633
9634 /**
9635  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
9636  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
9637  *
9638  * Default value: 0.
9639  */
9640 uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9641
9642 /**
9643  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
9644  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
9645  *
9646  * Default value: 0.
9647  */
9648 void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9649
9650 /**
9651  * The remote node will require we keep a certain amount in direct payment to ourselves at all
9652  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
9653  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
9654  *
9655  * Default value: u64::max_value.
9656  */
9657 uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9658
9659 /**
9660  * The remote node will require we keep a certain amount in direct payment to ourselves at all
9661  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
9662  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
9663  *
9664  * Default value: u64::max_value.
9665  */
9666 void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9667
9668 /**
9669  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
9670  * time. This allows you to set a minimum such value.
9671  *
9672  * Default value: 0.
9673  */
9674 uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9675
9676 /**
9677  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
9678  * time. This allows you to set a minimum such value.
9679  *
9680  * Default value: 0.
9681  */
9682 void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
9683
9684 /**
9685  * Outputs below a certain value will not be added to on-chain transactions. The dust value is
9686  * required to always be higher than this value so this only applies to HTLC outputs (and
9687  * potentially to-self outputs before any payments have been made).
9688  * Thus, HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9689  * This setting allows you to set a minimum dust limit for their commitment transactions,
9690  * reflecting the reality that tiny outputs are not considered standard transactions and will
9691  * not propagate through the Bitcoin network.
9692  *
9693  * Default value: 546, the current dust limit on the Bitcoin network.
9694  */
9695 uint64_t ChannelHandshakeLimits_get_min_dust_limit_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9696
9697 /**
9698  * Outputs below a certain value will not be added to on-chain transactions. The dust value is
9699  * required to always be higher than this value so this only applies to HTLC outputs (and
9700  * potentially to-self outputs before any payments have been made).
9701  * Thus, HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9702  * This setting allows you to set a minimum dust limit for their commitment transactions,
9703  * reflecting the reality that tiny outputs are not considered standard transactions and will
9704  * not propagate through the Bitcoin network.
9705  *
9706  * Default value: 546, the current dust limit on the Bitcoin network.
9707  */
9708 void ChannelHandshakeLimits_set_min_dust_limit_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9709
9710 /**
9711  * Maximum allowed threshold above which outputs will not be generated in their commitment
9712  * transactions.
9713  * HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9714  *
9715  * Default value: u64::max_value.
9716  */
9717 uint64_t ChannelHandshakeLimits_get_max_dust_limit_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9718
9719 /**
9720  * Maximum allowed threshold above which outputs will not be generated in their commitment
9721  * transactions.
9722  * HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9723  *
9724  * Default value: u64::max_value.
9725  */
9726 void ChannelHandshakeLimits_set_max_dust_limit_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9727
9728 /**
9729  * Before a channel is usable the funding transaction will need to be confirmed by at least a
9730  * certain number of blocks, specified by the node which is not the funder (as the funder can
9731  * assume they aren't going to double-spend themselves).
9732  * This config allows you to set a limit on the maximum amount of time to wait.
9733  *
9734  * Default value: 144, or roughly one day and only applies to outbound channels.
9735  */
9736 uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9737
9738 /**
9739  * Before a channel is usable the funding transaction will need to be confirmed by at least a
9740  * certain number of blocks, specified by the node which is not the funder (as the funder can
9741  * assume they aren't going to double-spend themselves).
9742  * This config allows you to set a limit on the maximum amount of time to wait.
9743  *
9744  * Default value: 144, or roughly one day and only applies to outbound channels.
9745  */
9746 void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
9747
9748 /**
9749  * Set to force the incoming channel to match our announced channel preference in
9750  * ChannelConfig.
9751  *
9752  * Default value: true, to make the default that no announced channels are possible (which is
9753  * appropriate for any nodes which are not online very reliably).
9754  */
9755 bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9756
9757 /**
9758  * Set to force the incoming channel to match our announced channel preference in
9759  * ChannelConfig.
9760  *
9761  * Default value: true, to make the default that no announced channels are possible (which is
9762  * appropriate for any nodes which are not online very reliably).
9763  */
9764 void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
9765
9766 /**
9767  * Set to the amount of time we're willing to wait to claim money back to us.
9768  *
9769  * Not checking this value would be a security issue, as our peer would be able to set it to
9770  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
9771  *
9772  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
9773  * reduce the loss of having useless locked funds (if your peer accepts)
9774  */
9775 uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9776
9777 /**
9778  * Set to the amount of time we're willing to wait to claim money back to us.
9779  *
9780  * Not checking this value would be a security issue, as our peer would be able to set it to
9781  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
9782  *
9783  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
9784  * reduce the loss of having useless locked funds (if your peer accepts)
9785  */
9786 void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
9787
9788 /**
9789  * Constructs a new ChannelHandshakeLimits given each field
9790  */
9791 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_new(uint64_t min_funding_satoshis_arg, uint64_t max_htlc_minimum_msat_arg, uint64_t min_max_htlc_value_in_flight_msat_arg, uint64_t max_channel_reserve_satoshis_arg, uint16_t min_max_accepted_htlcs_arg, uint64_t min_dust_limit_satoshis_arg, uint64_t max_dust_limit_satoshis_arg, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
9792
9793 /**
9794  * Creates a copy of the ChannelHandshakeLimits
9795  */
9796 struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
9797
9798 /**
9799  * Creates a "default" ChannelHandshakeLimits. See struct and individual field documentaiton for details on which values are used.
9800  */
9801 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
9802
9803 /**
9804  * Frees any resources used by the ChannelConfig, if is_owned is set and inner is non-NULL.
9805  */
9806 void ChannelConfig_free(struct LDKChannelConfig this_obj);
9807
9808 /**
9809  * Amount (in millionths of a satoshi) the channel will charge per transferred satoshi.
9810  * This may be allowed to change at runtime in a later update, however doing so must result in
9811  * update messages sent to notify all nodes of our updated relay fee.
9812  *
9813  * Default value: 0.
9814  */
9815 uint32_t ChannelConfig_get_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9816
9817 /**
9818  * Amount (in millionths of a satoshi) the channel will charge per transferred satoshi.
9819  * This may be allowed to change at runtime in a later update, however doing so must result in
9820  * update messages sent to notify all nodes of our updated relay fee.
9821  *
9822  * Default value: 0.
9823  */
9824 void ChannelConfig_set_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
9825
9826 /**
9827  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
9828  * the channel this config applies to.
9829  *
9830  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
9831  * HTLC balance when a channel appears on-chain whereas
9832  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
9833  * (non-HTLC-encumbered) balance.
9834  *
9835  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
9836  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
9837  * commitment transaction at least once per this many blocks (minus some margin to allow us
9838  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
9839  * the spending transaction).
9840  *
9841  * Default value: 72 (12 hours at an average of 6 blocks/hour).
9842  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
9843  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
9844  *
9845  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
9846  */
9847 uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9848
9849 /**
9850  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
9851  * the channel this config applies to.
9852  *
9853  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
9854  * HTLC balance when a channel appears on-chain whereas
9855  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
9856  * (non-HTLC-encumbered) balance.
9857  *
9858  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
9859  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
9860  * commitment transaction at least once per this many blocks (minus some margin to allow us
9861  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
9862  * the spending transaction).
9863  *
9864  * Default value: 72 (12 hours at an average of 6 blocks/hour).
9865  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
9866  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
9867  *
9868  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
9869  */
9870 void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
9871
9872 /**
9873  * Set to announce the channel publicly and notify all nodes that they can route via this
9874  * channel.
9875  *
9876  * This should only be set to true for nodes which expect to be online reliably.
9877  *
9878  * As the node which funds a channel picks this value this will only apply for new outbound
9879  * channels unless ChannelHandshakeLimits::force_announced_channel_preferences is set.
9880  *
9881  * This cannot be changed after the initial channel handshake.
9882  *
9883  * Default value: false.
9884  */
9885 bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9886
9887 /**
9888  * Set to announce the channel publicly and notify all nodes that they can route via this
9889  * channel.
9890  *
9891  * This should only be set to true for nodes which expect to be online reliably.
9892  *
9893  * As the node which funds a channel picks this value this will only apply for new outbound
9894  * channels unless ChannelHandshakeLimits::force_announced_channel_preferences is set.
9895  *
9896  * This cannot be changed after the initial channel handshake.
9897  *
9898  * Default value: false.
9899  */
9900 void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
9901
9902 /**
9903  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
9904  * supports it, they will then enforce the mutual-close output to us matches what we provided
9905  * at intialization, preventing us from closing to an alternate pubkey.
9906  *
9907  * This is set to true by default to provide a slight increase in security, though ultimately
9908  * any attacker who is able to take control of a channel can just as easily send the funds via
9909  * lightning payments, so we never require that our counterparties support this option.
9910  *
9911  * This cannot be changed after a channel has been initialized.
9912  *
9913  * Default value: true.
9914  */
9915 bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9916
9917 /**
9918  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
9919  * supports it, they will then enforce the mutual-close output to us matches what we provided
9920  * at intialization, preventing us from closing to an alternate pubkey.
9921  *
9922  * This is set to true by default to provide a slight increase in security, though ultimately
9923  * any attacker who is able to take control of a channel can just as easily send the funds via
9924  * lightning payments, so we never require that our counterparties support this option.
9925  *
9926  * This cannot be changed after a channel has been initialized.
9927  *
9928  * Default value: true.
9929  */
9930 void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
9931
9932 /**
9933  * Constructs a new ChannelConfig given each field
9934  */
9935 MUST_USE_RES struct LDKChannelConfig ChannelConfig_new(uint32_t fee_proportional_millionths_arg, uint16_t cltv_expiry_delta_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg);
9936
9937 /**
9938  * Creates a copy of the ChannelConfig
9939  */
9940 struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
9941
9942 /**
9943  * Creates a "default" ChannelConfig. See struct and individual field documentaiton for details on which values are used.
9944  */
9945 MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
9946
9947 /**
9948  * Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
9949  */
9950 struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
9951
9952 /**
9953  * Read a ChannelConfig from a byte array, created by ChannelConfig_write
9954  */
9955 struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser);
9956
9957 /**
9958  * Frees any resources used by the UserConfig, if is_owned is set and inner is non-NULL.
9959  */
9960 void UserConfig_free(struct LDKUserConfig this_obj);
9961
9962 /**
9963  * Channel config that we propose to our counterparty.
9964  */
9965 struct LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9966
9967 /**
9968  * Channel config that we propose to our counterparty.
9969  */
9970 void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
9971
9972 /**
9973  * Limits applied to our counterparty's proposed channel config settings.
9974  */
9975 struct LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9976
9977 /**
9978  * Limits applied to our counterparty's proposed channel config settings.
9979  */
9980 void UserConfig_set_peer_channel_config_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
9981
9982 /**
9983  * Channel config which affects behavior during channel lifetime.
9984  */
9985 struct LDKChannelConfig UserConfig_get_channel_options(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9986
9987 /**
9988  * Channel config which affects behavior during channel lifetime.
9989  */
9990 void UserConfig_set_channel_options(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
9991
9992 /**
9993  * Constructs a new UserConfig given each field
9994  */
9995 MUST_USE_RES struct LDKUserConfig UserConfig_new(struct LDKChannelHandshakeConfig own_channel_config_arg, struct LDKChannelHandshakeLimits peer_channel_config_limits_arg, struct LDKChannelConfig channel_options_arg);
9996
9997 /**
9998  * Creates a copy of the UserConfig
9999  */
10000 struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
10001
10002 /**
10003  * Creates a "default" UserConfig. See struct and individual field documentaiton for details on which values are used.
10004  */
10005 MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
10006
10007 /**
10008  * Creates a copy of the AccessError
10009  */
10010 enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
10011
10012 /**
10013  * Calls the free function if one is set
10014  */
10015 void Access_free(struct LDKAccess this_ptr);
10016
10017 /**
10018  * Calls the free function if one is set
10019  */
10020 void Listen_free(struct LDKListen this_ptr);
10021
10022 /**
10023  * Calls the free function if one is set
10024  */
10025 void Watch_free(struct LDKWatch this_ptr);
10026
10027 /**
10028  * Calls the free function if one is set
10029  */
10030 void Filter_free(struct LDKFilter this_ptr);
10031
10032 /**
10033  * Frees any resources used by the WatchedOutput, if is_owned is set and inner is non-NULL.
10034  */
10035 void WatchedOutput_free(struct LDKWatchedOutput this_obj);
10036
10037 /**
10038  * First block where the transaction output may have been spent.
10039  */
10040 struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10041
10042 /**
10043  * First block where the transaction output may have been spent.
10044  */
10045 void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10046
10047 /**
10048  * Outpoint identifying the transaction output.
10049  */
10050 struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10051
10052 /**
10053  * Outpoint identifying the transaction output.
10054  */
10055 void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10056
10057 /**
10058  * Spending condition of the transaction output.
10059  */
10060 struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10061
10062 /**
10063  * Spending condition of the transaction output.
10064  */
10065 void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
10066
10067 /**
10068  * Constructs a new WatchedOutput given each field
10069  */
10070 MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
10071
10072 /**
10073  * Calls the free function if one is set
10074  */
10075 void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
10076
10077 /**
10078  * Creates a copy of the ConfirmationTarget
10079  */
10080 enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
10081
10082 /**
10083  * Calls the free function if one is set
10084  */
10085 void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
10086
10087 /**
10088  * Frees any resources used by the ChainMonitor, if is_owned is set and inner is non-NULL.
10089  */
10090 void ChainMonitor_free(struct LDKChainMonitor this_obj);
10091
10092 /**
10093  * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
10094  * of a channel and reacting accordingly based on transactions in the connected block. See
10095  * [`ChannelMonitor::block_connected`] for details. Any HTLCs that were resolved on chain will
10096  * be returned by [`chain::Watch::release_pending_monitor_events`].
10097  *
10098  * Calls back to [`chain::Filter`] if any monitor indicated new outputs to watch. Subsequent
10099  * calls must not exclude any transactions matching the new outputs nor any in-block
10100  * descendants of such transactions. It is not necessary to re-fetch the block to obtain
10101  * updated `txdata`.
10102  */
10103 void ChainMonitor_block_connected(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
10104
10105 /**
10106  * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
10107  * of a channel based on the disconnected block. See [`ChannelMonitor::block_disconnected`] for
10108  * details.
10109  */
10110 void ChainMonitor_block_disconnected(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t disconnected_height);
10111
10112 /**
10113  * Creates a new `ChainMonitor` used to watch on-chain activity pertaining to channels.
10114  *
10115  * When an optional chain source implementing [`chain::Filter`] is provided, the chain monitor
10116  * will call back to it indicating transactions and outputs of interest. This allows clients to
10117  * pre-filter blocks or only fetch blocks matching a compact filter. Otherwise, clients may
10118  * always need to fetch full blocks absent another means for determining which blocks contain
10119  * transactions relevant to the watched channels.
10120  */
10121 MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKFilter *chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
10122
10123 /**
10124  * Constructs a new Watch which calls the relevant methods on this_arg.
10125  * This copies the `inner` pointer in this_arg and thus the returned Watch must be freed before this_arg is
10126  */
10127 struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
10128
10129 /**
10130  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
10131  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
10132  */
10133 struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
10134
10135 /**
10136  * Frees any resources used by the ChannelMonitorUpdate, if is_owned is set and inner is non-NULL.
10137  */
10138 void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
10139
10140 /**
10141  * The sequence number of this update. Updates *must* be replayed in-order according to this
10142  * sequence number (and updates may panic if they are not). The update_id values are strictly
10143  * increasing and increase by one for each new update, with one exception specified below.
10144  *
10145  * This sequence number is also used to track up to which points updates which returned
10146  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
10147  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
10148  *
10149  * The only instance where update_id values are not strictly increasing is the case where we
10150  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
10151  * its docs for more details.
10152  */
10153 uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr);
10154
10155 /**
10156  * The sequence number of this update. Updates *must* be replayed in-order according to this
10157  * sequence number (and updates may panic if they are not). The update_id values are strictly
10158  * increasing and increase by one for each new update, with one exception specified below.
10159  *
10160  * This sequence number is also used to track up to which points updates which returned
10161  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
10162  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
10163  *
10164  * The only instance where update_id values are not strictly increasing is the case where we
10165  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
10166  * its docs for more details.
10167  */
10168 void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
10169
10170 /**
10171  * Creates a copy of the ChannelMonitorUpdate
10172  */
10173 struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
10174
10175 /**
10176  * Serialize the ChannelMonitorUpdate object into a byte array which can be read by ChannelMonitorUpdate_read
10177  */
10178 struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj);
10179
10180 /**
10181  * Read a ChannelMonitorUpdate from a byte array, created by ChannelMonitorUpdate_write
10182  */
10183 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
10184
10185 /**
10186  * Creates a copy of the ChannelMonitorUpdateErr
10187  */
10188 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
10189
10190 /**
10191  * Frees any resources used by the MonitorUpdateError, if is_owned is set and inner is non-NULL.
10192  */
10193 void MonitorUpdateError_free(struct LDKMonitorUpdateError this_obj);
10194
10195 /**
10196  * Creates a copy of the MonitorUpdateError
10197  */
10198 struct LDKMonitorUpdateError MonitorUpdateError_clone(const struct LDKMonitorUpdateError *NONNULL_PTR orig);
10199
10200 /**
10201  * Frees any resources used by the MonitorEvent
10202  */
10203 void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
10204
10205 /**
10206  * Creates a copy of the MonitorEvent
10207  */
10208 struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
10209
10210 /**
10211  * Frees any resources used by the HTLCUpdate, if is_owned is set and inner is non-NULL.
10212  */
10213 void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
10214
10215 /**
10216  * Creates a copy of the HTLCUpdate
10217  */
10218 struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
10219
10220 /**
10221  * Serialize the HTLCUpdate object into a byte array which can be read by HTLCUpdate_read
10222  */
10223 struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
10224
10225 /**
10226  * Read a HTLCUpdate from a byte array, created by HTLCUpdate_write
10227  */
10228 struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser);
10229
10230 /**
10231  * Frees any resources used by the ChannelMonitor, if is_owned is set and inner is non-NULL.
10232  */
10233 void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
10234
10235 /**
10236  * Serialize the ChannelMonitor object into a byte array which can be read by ChannelMonitor_read
10237  */
10238 struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
10239
10240 /**
10241  * Updates a ChannelMonitor on the basis of some new information provided by the Channel
10242  * itself.
10243  *
10244  * panics if the given update is not the next update by update_id.
10245  */
10246 MUST_USE_RES struct LDKCResult_NoneMonitorUpdateErrorZ ChannelMonitor_update_monitor(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKChannelMonitorUpdate *NONNULL_PTR updates, const struct LDKBroadcasterInterface *NONNULL_PTR broadcaster, const struct LDKFeeEstimator *NONNULL_PTR fee_estimator, const struct LDKLogger *NONNULL_PTR logger);
10247
10248 /**
10249  * Gets the update_id from the latest ChannelMonitorUpdate which was applied to this
10250  * ChannelMonitor.
10251  */
10252 MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10253
10254 /**
10255  * Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.
10256  */
10257 MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10258
10259 /**
10260  * Gets a list of txids, with their output scripts (in the order they appear in the
10261  * transaction), which we must learn about spends of via block_connected().
10262  */
10263 MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10264
10265 /**
10266  * Loads the funding txo and outputs to watch into the given `chain::Filter` by repeatedly
10267  * calling `chain::Filter::register_output` and `chain::Filter::register_tx` until all outputs
10268  * have been registered.
10269  */
10270 void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
10271
10272 /**
10273  * Get the list of HTLCs who's status has been updated on chain. This should be called by
10274  * ChannelManager via [`chain::Watch::release_pending_monitor_events`].
10275  */
10276 MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10277
10278 /**
10279  * Gets the list of pending events which were generated by previous actions, clearing the list
10280  * in the process.
10281  *
10282  * This is called by ChainMonitor::get_and_clear_pending_events() and is equivalent to
10283  * EventsProvider::get_and_clear_pending_events() except that it requires &mut self as we do
10284  * no internal locking in ChannelMonitors.
10285  */
10286 MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10287
10288 /**
10289  * Used by ChannelManager deserialization to broadcast the latest holder state if its copy of
10290  * the Channel was out-of-date. You may use it to get a broadcastable holder toxic tx in case of
10291  * fallen-behind, i.e when receiving a channel_reestablish with a proof that our counterparty side knows
10292  * a higher revocation secret than the holder commitment number we are aware of. Broadcasting these
10293  * transactions are UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to
10294  * broadcast them if counterparty don't close channel with his higher commitment transaction after a
10295  * substantial amount of time (a month or even a year) to get back funds. Best may be to contact
10296  * out-of-band the other node operator to coordinate with him if option is available to you.
10297  * In any-case, choice is up to the user.
10298  */
10299 MUST_USE_RES struct LDKCVec_TransactionZ ChannelMonitor_get_latest_holder_commitment_txn(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKLogger *NONNULL_PTR logger);
10300
10301 /**
10302  * Processes transactions in a newly connected block, which may result in any of the following:
10303  * - update the monitor's state against resolved HTLCs
10304  * - punish the counterparty in the case of seeing a revoked commitment transaction
10305  * - force close the channel and claim/timeout incoming/outgoing HTLCs if near expiration
10306  * - detect settled outputs for later spending
10307  * - schedule and bump any in-flight claims
10308  *
10309  * Returns any new outputs to watch from `txdata`; after called, these are also included in
10310  * [`get_outputs_to_watch`].
10311  *
10312  * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
10313  */
10314 MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_block_connected(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
10315
10316 /**
10317  * Determines if the disconnected block contained any transactions of interest and updates
10318  * appropriately.
10319  */
10320 void ChannelMonitor_block_disconnected(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
10321
10322 /**
10323  * Calls the free function if one is set
10324  */
10325 void Persist_free(struct LDKPersist this_ptr);
10326
10327 /**
10328  * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
10329  */
10330 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
10331
10332 /**
10333  * Frees any resources used by the OutPoint, if is_owned is set and inner is non-NULL.
10334  */
10335 void OutPoint_free(struct LDKOutPoint this_obj);
10336
10337 /**
10338  * The referenced transaction's txid.
10339  */
10340 const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32];
10341
10342 /**
10343  * The referenced transaction's txid.
10344  */
10345 void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10346
10347 /**
10348  * The index of the referenced output in its transaction's vout.
10349  */
10350 uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
10351
10352 /**
10353  * The index of the referenced output in its transaction's vout.
10354  */
10355 void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
10356
10357 /**
10358  * Constructs a new OutPoint given each field
10359  */
10360 MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
10361
10362 /**
10363  * Creates a copy of the OutPoint
10364  */
10365 struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
10366
10367 /**
10368  * Convert an `OutPoint` to a lightning channel id.
10369  */
10370 MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg);
10371
10372 /**
10373  * Serialize the OutPoint object into a byte array which can be read by OutPoint_read
10374  */
10375 struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
10376
10377 /**
10378  * Read a OutPoint from a byte array, created by OutPoint_write
10379  */
10380 struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser);
10381
10382 /**
10383  * Frees any resources used by the DelayedPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
10384  */
10385 void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
10386
10387 /**
10388  * The outpoint which is spendable
10389  */
10390 struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10391
10392 /**
10393  * The outpoint which is spendable
10394  */
10395 void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10396
10397 /**
10398  * Per commitment point to derive delayed_payment_key by key holder
10399  */
10400 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10401
10402 /**
10403  * Per commitment point to derive delayed_payment_key by key holder
10404  */
10405 void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
10406
10407 /**
10408  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
10409  * the witness_script.
10410  */
10411 uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10412
10413 /**
10414  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
10415  * the witness_script.
10416  */
10417 void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
10418
10419 /**
10420  * The output which is referenced by the given outpoint
10421  */
10422 void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
10423
10424 /**
10425  * The revocation point specific to the commitment transaction which was broadcast. Used to
10426  * derive the witnessScript for this output.
10427  */
10428 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10429
10430 /**
10431  * The revocation point specific to the commitment transaction which was broadcast. Used to
10432  * derive the witnessScript for this output.
10433  */
10434 void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
10435
10436 /**
10437  * Arbitrary identification information returned by a call to
10438  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10439  * the channel to spend the output.
10440  */
10441 const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
10442
10443 /**
10444  * Arbitrary identification information returned by a call to
10445  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10446  * the channel to spend the output.
10447  */
10448 void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10449
10450 /**
10451  * The value of the channel which this output originated from, possibly indirectly.
10452  */
10453 uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10454
10455 /**
10456  * The value of the channel which this output originated from, possibly indirectly.
10457  */
10458 void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
10459
10460 /**
10461  * Constructs a new DelayedPaymentOutputDescriptor given each field
10462  */
10463 MUST_USE_RES struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKPublicKey per_commitment_point_arg, uint16_t to_self_delay_arg, struct LDKTxOut output_arg, struct LDKPublicKey revocation_pubkey_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
10464
10465 /**
10466  * Creates a copy of the DelayedPaymentOutputDescriptor
10467  */
10468 struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
10469
10470 /**
10471  * Frees any resources used by the StaticPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
10472  */
10473 void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
10474
10475 /**
10476  * The outpoint which is spendable
10477  */
10478 struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10479
10480 /**
10481  * The outpoint which is spendable
10482  */
10483 void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10484
10485 /**
10486  * The output which is referenced by the given outpoint
10487  */
10488 void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
10489
10490 /**
10491  * Arbitrary identification information returned by a call to
10492  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10493  * the channel to spend the output.
10494  */
10495 const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
10496
10497 /**
10498  * Arbitrary identification information returned by a call to
10499  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10500  * the channel to spend the output.
10501  */
10502 void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10503
10504 /**
10505  * The value of the channel which this transactions spends.
10506  */
10507 uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10508
10509 /**
10510  * The value of the channel which this transactions spends.
10511  */
10512 void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
10513
10514 /**
10515  * Constructs a new StaticPaymentOutputDescriptor given each field
10516  */
10517 MUST_USE_RES struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKTxOut output_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
10518
10519 /**
10520  * Creates a copy of the StaticPaymentOutputDescriptor
10521  */
10522 struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
10523
10524 /**
10525  * Frees any resources used by the SpendableOutputDescriptor
10526  */
10527 void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
10528
10529 /**
10530  * Creates a copy of the SpendableOutputDescriptor
10531  */
10532 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
10533
10534 /**
10535  * Serialize the SpendableOutputDescriptor object into a byte array which can be read by SpendableOutputDescriptor_read
10536  */
10537 struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
10538
10539 /**
10540  * Read a SpendableOutputDescriptor from a byte array, created by SpendableOutputDescriptor_write
10541  */
10542 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
10543
10544 /**
10545  * Calls the free function if one is set
10546  */
10547 void BaseSign_free(struct LDKBaseSign this_ptr);
10548
10549 /**
10550  * Creates a copy of a Sign
10551  */
10552 struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
10553
10554 /**
10555  * Calls the free function if one is set
10556  */
10557 void Sign_free(struct LDKSign this_ptr);
10558
10559 /**
10560  * Calls the free function if one is set
10561  */
10562 void KeysInterface_free(struct LDKKeysInterface this_ptr);
10563
10564 /**
10565  * Frees any resources used by the InMemorySigner, if is_owned is set and inner is non-NULL.
10566  */
10567 void InMemorySigner_free(struct LDKInMemorySigner this_obj);
10568
10569 /**
10570  * Private key of anchor tx
10571  */
10572 const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10573
10574 /**
10575  * Private key of anchor tx
10576  */
10577 void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10578
10579 /**
10580  * Holder secret key for blinded revocation pubkey
10581  */
10582 const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10583
10584 /**
10585  * Holder secret key for blinded revocation pubkey
10586  */
10587 void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10588
10589 /**
10590  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
10591  */
10592 const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10593
10594 /**
10595  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
10596  */
10597 void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10598
10599 /**
10600  * Holder secret key used in HTLC tx
10601  */
10602 const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10603
10604 /**
10605  * Holder secret key used in HTLC tx
10606  */
10607 void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10608
10609 /**
10610  * Holder htlc secret key used in commitment tx htlc outputs
10611  */
10612 const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10613
10614 /**
10615  * Holder htlc secret key used in commitment tx htlc outputs
10616  */
10617 void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10618
10619 /**
10620  * Commitment seed
10621  */
10622 const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10623
10624 /**
10625  * Commitment seed
10626  */
10627 void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10628
10629 /**
10630  * Creates a copy of the InMemorySigner
10631  */
10632 struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
10633
10634 /**
10635  * Create a new InMemorySigner
10636  */
10637 MUST_USE_RES struct LDKInMemorySigner InMemorySigner_new(struct LDKSecretKey funding_key, struct LDKSecretKey revocation_base_key, struct LDKSecretKey payment_key, struct LDKSecretKey delayed_payment_base_key, struct LDKSecretKey htlc_base_key, struct LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
10638
10639 /**
10640  * Counterparty pubkeys.
10641  * Will panic if ready_channel wasn't called.
10642  */
10643 MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10644
10645 /**
10646  * The contest_delay value specified by our counterparty and applied on holder-broadcastable
10647  * transactions, ie the amount of time that we have to wait to recover our funds if we
10648  * broadcast a transaction.
10649  * Will panic if ready_channel wasn't called.
10650  */
10651 MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10652
10653 /**
10654  * The contest_delay value specified by us and applied on transactions broadcastable
10655  * by our counterparty, ie the amount of time that they have to wait to recover their funds
10656  * if they broadcast a transaction.
10657  * Will panic if ready_channel wasn't called.
10658  */
10659 MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10660
10661 /**
10662  * Whether the holder is the initiator
10663  * Will panic if ready_channel wasn't called.
10664  */
10665 MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10666
10667 /**
10668  * Funding outpoint
10669  * Will panic if ready_channel wasn't called.
10670  */
10671 MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10672
10673 /**
10674  * Obtain a ChannelTransactionParameters for this channel, to be used when verifying or
10675  * building transactions.
10676  *
10677  * Will panic if ready_channel wasn't called.
10678  */
10679 MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10680
10681 /**
10682  * Sign the single input of spend_tx at index `input_idx` which spends the output
10683  * described by descriptor, returning the witness stack for the input.
10684  *
10685  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
10686  * or is not spending the outpoint described by `descriptor.outpoint`.
10687  */
10688 MUST_USE_RES struct LDKCResult_CVec_CVec_u8ZZNoneZ InMemorySigner_sign_counterparty_payment_input(const struct LDKInMemorySigner *NONNULL_PTR this_arg, struct LDKTransaction spend_tx, uintptr_t input_idx, const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR descriptor);
10689
10690 /**
10691  * Sign the single input of spend_tx at index `input_idx` which spends the output
10692  * described by descriptor, returning the witness stack for the input.
10693  *
10694  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
10695  * is not spending the outpoint described by `descriptor.outpoint`, or does not have a
10696  * sequence set to `descriptor.to_self_delay`.
10697  */
10698 MUST_USE_RES struct LDKCResult_CVec_CVec_u8ZZNoneZ InMemorySigner_sign_dynamic_p2wsh_input(const struct LDKInMemorySigner *NONNULL_PTR this_arg, struct LDKTransaction spend_tx, uintptr_t input_idx, const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR descriptor);
10699
10700 /**
10701  * Constructs a new BaseSign which calls the relevant methods on this_arg.
10702  * This copies the `inner` pointer in this_arg and thus the returned BaseSign must be freed before this_arg is
10703  */
10704 struct LDKBaseSign InMemorySigner_as_BaseSign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10705
10706 /**
10707  * Constructs a new Sign which calls the relevant methods on this_arg.
10708  * This copies the `inner` pointer in this_arg and thus the returned Sign must be freed before this_arg is
10709  */
10710 struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10711
10712 /**
10713  * Serialize the InMemorySigner object into a byte array which can be read by InMemorySigner_read
10714  */
10715 struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
10716
10717 /**
10718  * Read a InMemorySigner from a byte array, created by InMemorySigner_write
10719  */
10720 struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser);
10721
10722 /**
10723  * Frees any resources used by the KeysManager, if is_owned is set and inner is non-NULL.
10724  */
10725 void KeysManager_free(struct LDKKeysManager this_obj);
10726
10727 /**
10728  * Constructs a KeysManager from a 32-byte seed. If the seed is in some way biased (eg your
10729  * CSRNG is busted) this may panic (but more importantly, you will possibly lose funds).
10730  * starting_time isn't strictly required to actually be a time, but it must absolutely,
10731  * without a doubt, be unique to this instance. ie if you start multiple times with the same
10732  * seed, starting_time must be unique to each run. Thus, the easiest way to achieve this is to
10733  * simply use the current time (with very high precision).
10734  *
10735  * The seed MUST be backed up safely prior to use so that the keys can be re-created, however,
10736  * obviously, starting_time should be unique every time you reload the library - it is only
10737  * used to generate new ephemeral key data (which will be stored by the individual channel if
10738  * necessary).
10739  *
10740  * Note that the seed is required to recover certain on-chain funds independent of
10741  * ChannelMonitor data, though a current copy of ChannelMonitor data is also required for any
10742  * channel, and some on-chain during-closing funds.
10743  *
10744  * Note that until the 0.1 release there is no guarantee of backward compatibility between
10745  * versions. Once the library is more fully supported, the docs will be updated to include a
10746  * detailed description of the guarantee.
10747  */
10748 MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
10749
10750 /**
10751  * Derive an old Sign containing per-channel secrets based on a key derivation parameters.
10752  *
10753  * Key derivation parameters are accessible through a per-channel secrets
10754  * Sign::channel_keys_id and is provided inside DynamicOuputP2WSH in case of
10755  * onchain output detection for which a corresponding delayed_payment_key must be derived.
10756  */
10757 MUST_USE_RES struct LDKInMemorySigner KeysManager_derive_channel_keys(const struct LDKKeysManager *NONNULL_PTR this_arg, uint64_t channel_value_satoshis, const uint8_t (*params)[32]);
10758
10759 /**
10760  * Creates a Transaction which spends the given descriptors to the given outputs, plus an
10761  * output to the given change destination (if sufficient change value remains). The
10762  * transaction will have a feerate, at least, of the given value.
10763  *
10764  * Returns `Err(())` if the output value is greater than the input value minus required fee or
10765  * if a descriptor was duplicated.
10766  *
10767  * We do not enforce that outputs meet the dust limit or that any output scripts are standard.
10768  *
10769  * May panic if the `SpendableOutputDescriptor`s were not generated by Channels which used
10770  * this KeysManager or one of the `InMemorySigner` created by this KeysManager.
10771  */
10772 MUST_USE_RES struct LDKCResult_TransactionNoneZ KeysManager_spend_spendable_outputs(const struct LDKKeysManager *NONNULL_PTR this_arg, struct LDKCVec_SpendableOutputDescriptorZ descriptors, struct LDKCVec_TxOutZ outputs, struct LDKCVec_u8Z change_destination_script, uint32_t feerate_sat_per_1000_weight);
10773
10774 /**
10775  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
10776  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
10777  */
10778 struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
10779
10780 /**
10781  * Frees any resources used by the ChannelManager, if is_owned is set and inner is non-NULL.
10782  */
10783 void ChannelManager_free(struct LDKChannelManager this_obj);
10784
10785 /**
10786  * Frees any resources used by the ChainParameters, if is_owned is set and inner is non-NULL.
10787  */
10788 void ChainParameters_free(struct LDKChainParameters this_obj);
10789
10790 /**
10791  * The network for determining the `chain_hash` in Lightning messages.
10792  */
10793 enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
10794
10795 /**
10796  * The network for determining the `chain_hash` in Lightning messages.
10797  */
10798 void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
10799
10800 /**
10801  * The hash of the latest block successfully connected.
10802  */
10803 const uint8_t (*ChainParameters_get_latest_hash(const struct LDKChainParameters *NONNULL_PTR this_ptr))[32];
10804
10805 /**
10806  * The hash of the latest block successfully connected.
10807  */
10808 void ChainParameters_set_latest_hash(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10809
10810 /**
10811  * The height of the latest block successfully connected.
10812  *
10813  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
10814  */
10815 uintptr_t ChainParameters_get_latest_height(const struct LDKChainParameters *NONNULL_PTR this_ptr);
10816
10817 /**
10818  * The height of the latest block successfully connected.
10819  *
10820  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
10821  */
10822 void ChainParameters_set_latest_height(struct LDKChainParameters *NONNULL_PTR this_ptr, uintptr_t val);
10823
10824 /**
10825  * Constructs a new ChainParameters given each field
10826  */
10827 MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKThirtyTwoBytes latest_hash_arg, uintptr_t latest_height_arg);
10828
10829 /**
10830  * Frees any resources used by the ChannelDetails, if is_owned is set and inner is non-NULL.
10831  */
10832 void ChannelDetails_free(struct LDKChannelDetails this_obj);
10833
10834 /**
10835  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
10836  * thereafter this is the txid of the funding transaction xor the funding transaction output).
10837  * Note that this means this value is *not* persistent - it can change once during the
10838  * lifetime of the channel.
10839  */
10840 const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32];
10841
10842 /**
10843  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
10844  * thereafter this is the txid of the funding transaction xor the funding transaction output).
10845  * Note that this means this value is *not* persistent - it can change once during the
10846  * lifetime of the channel.
10847  */
10848 void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10849
10850 /**
10851  * The position of the funding transaction in the chain. None if the funding transaction has
10852  * not yet been confirmed and the channel fully opened.
10853  */
10854 struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10855
10856 /**
10857  * The position of the funding transaction in the chain. None if the funding transaction has
10858  * not yet been confirmed and the channel fully opened.
10859  */
10860 void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
10861
10862 /**
10863  * The node_id of our counterparty
10864  */
10865 struct LDKPublicKey ChannelDetails_get_remote_network_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10866
10867 /**
10868  * The node_id of our counterparty
10869  */
10870 void ChannelDetails_set_remote_network_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKPublicKey val);
10871
10872 /**
10873  * The Features the channel counterparty provided upon last connection.
10874  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
10875  * many routing-relevant features are present in the init context.
10876  */
10877 struct LDKInitFeatures ChannelDetails_get_counterparty_features(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10878
10879 /**
10880  * The Features the channel counterparty provided upon last connection.
10881  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
10882  * many routing-relevant features are present in the init context.
10883  */
10884 void ChannelDetails_set_counterparty_features(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
10885
10886 /**
10887  * The value, in satoshis, of this channel as appears in the funding output
10888  */
10889 uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10890
10891 /**
10892  * The value, in satoshis, of this channel as appears in the funding output
10893  */
10894 void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10895
10896 /**
10897  * The user_id passed in to create_channel, or 0 if the channel was inbound.
10898  */
10899 uint64_t ChannelDetails_get_user_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10900
10901 /**
10902  * The user_id passed in to create_channel, or 0 if the channel was inbound.
10903  */
10904 void ChannelDetails_set_user_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10905
10906 /**
10907  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
10908  * any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10909  * available for inclusion in new outbound HTLCs). This further does not include any pending
10910  * outgoing HTLCs which are awaiting some other resolution to be sent.
10911  */
10912 uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10913
10914 /**
10915  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
10916  * any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10917  * available for inclusion in new outbound HTLCs). This further does not include any pending
10918  * outgoing HTLCs which are awaiting some other resolution to be sent.
10919  */
10920 void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10921
10922 /**
10923  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
10924  * include any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10925  * available for inclusion in new inbound HTLCs).
10926  * Note that there are some corner cases not fully handled here, so the actual available
10927  * inbound capacity may be slightly higher than this.
10928  */
10929 uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10930
10931 /**
10932  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
10933  * include any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10934  * available for inclusion in new inbound HTLCs).
10935  * Note that there are some corner cases not fully handled here, so the actual available
10936  * inbound capacity may be slightly higher than this.
10937  */
10938 void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10939
10940 /**
10941  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
10942  * the peer is connected, and (c) no monitor update failure is pending resolution.
10943  */
10944 bool ChannelDetails_get_is_live(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10945
10946 /**
10947  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
10948  * the peer is connected, and (c) no monitor update failure is pending resolution.
10949  */
10950 void ChannelDetails_set_is_live(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
10951
10952 /**
10953  * Creates a copy of the ChannelDetails
10954  */
10955 struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
10956
10957 /**
10958  * Frees any resources used by the PaymentSendFailure
10959  */
10960 void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
10961
10962 /**
10963  * Creates a copy of the PaymentSendFailure
10964  */
10965 struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
10966
10967 /**
10968  * Constructs a new ChannelManager to hold several channels and route between them.
10969  *
10970  * This is the main \"logic hub\" for all channel-related actions, and implements
10971  * ChannelMessageHandler.
10972  *
10973  * Non-proportional fees are fixed according to our risk using the provided fee estimator.
10974  *
10975  * panics if channel_value_satoshis is >= `MAX_FUNDING_SATOSHIS`!
10976  *
10977  * Users need to notify the new ChannelManager when a new block is connected or
10978  * disconnected using its `block_connected` and `block_disconnected` methods, starting
10979  * from after `params.latest_hash`.
10980  */
10981 MUST_USE_RES struct LDKChannelManager ChannelManager_new(struct LDKFeeEstimator fee_est, struct LDKWatch chain_monitor, struct LDKBroadcasterInterface tx_broadcaster, struct LDKLogger logger, struct LDKKeysInterface keys_manager, struct LDKUserConfig config, struct LDKChainParameters params);
10982
10983 /**
10984  * Creates a new outbound channel to the given remote node and with the given value.
10985  *
10986  * user_id will be provided back as user_channel_id in FundingGenerationReady events to allow
10987  * tracking of which events correspond with which create_channel call. Note that the
10988  * user_channel_id defaults to 0 for inbound channels, so you may wish to avoid using 0 for
10989  * user_id here. user_id has no meaning inside of LDK, it is simply copied to events and
10990  * otherwise ignored.
10991  *
10992  * If successful, will generate a SendOpenChannel message event, so you should probably poll
10993  * PeerManager::process_events afterwards.
10994  *
10995  * Raises APIError::APIMisuseError when channel_value_satoshis > 2**24 or push_msat is
10996  * greater than channel_value_satoshis * 1k or channel_value_satoshis is < 1000.
10997  */
10998 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_create_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKPublicKey their_network_key, uint64_t channel_value_satoshis, uint64_t push_msat, uint64_t user_id, struct LDKUserConfig override_config);
10999
11000 /**
11001  * Gets the list of open channels, in random order. See ChannelDetail field documentation for
11002  * more information.
11003  */
11004 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
11005
11006 /**
11007  * Gets the list of usable channels, in random order. Useful as an argument to
11008  * get_route to ensure non-announced channels are used.
11009  *
11010  * These are guaranteed to have their is_live value set to true, see the documentation for
11011  * ChannelDetails::is_live for more info on exactly what the criteria are.
11012  */
11013 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
11014
11015 /**
11016  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
11017  * will be accepted on the given channel, and after additional timeout/the closing of all
11018  * pending HTLCs, the channel will be closed on chain.
11019  *
11020  * May generate a SendShutdown message event on success, which should be relayed.
11021  */
11022 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
11023
11024 /**
11025  * Force closes a channel, immediately broadcasting the latest local commitment transaction to
11026  * the chain and rejecting new HTLCs on the given channel. Fails if channel_id is unknown to the manager.
11027  */
11028 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
11029
11030 /**
11031  * Force close all channels, immediately broadcasting the latest local commitment transaction
11032  * for each to the chain and rejecting new HTLCs on each.
11033  */
11034 void ChannelManager_force_close_all_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
11035
11036 /**
11037  * Sends a payment along a given route.
11038  *
11039  * Value parameters are provided via the last hop in route, see documentation for RouteHop
11040  * fields for more info.
11041  *
11042  * Note that if the payment_hash already exists elsewhere (eg you're sending a duplicative
11043  * payment), we don't do anything to stop you! We always try to ensure that if the provided
11044  * next hop knows the preimage to payment_hash they can claim an additional amount as
11045  * specified in the last hop in the route! Thus, you should probably do your own
11046  * payment_preimage tracking (which you should already be doing as they represent \"proof of
11047  * payment\") and prevent double-sends yourself.
11048  *
11049  * May generate SendHTLCs message(s) event on success, which should be relayed.
11050  *
11051  * Each path may have a different return value, and PaymentSendValue may return a Vec with
11052  * each entry matching the corresponding-index entry in the route paths, see
11053  * PaymentSendFailure for more info.
11054  *
11055  * In general, a path may raise:
11056  *  * APIError::RouteError when an invalid route or forwarding parameter (cltv_delta, fee,
11057  *    node public key) is specified.
11058  *  * APIError::ChannelUnavailable if the next-hop channel is not available for updates
11059  *    (including due to previous monitor update failure or new permanent monitor update
11060  *    failure).
11061  *  * APIError::MonitorUpdateFailed if a new monitor update failure prevented sending the
11062  *    relevant updates.
11063  *
11064  * Note that depending on the type of the PaymentSendFailure the HTLC may have been
11065  * irrevocably committed to on our end. In such a case, do NOT retry the payment with a
11066  * different route unless you intend to pay twice!
11067  *
11068  * payment_secret is unrelated to payment_hash (or PaymentPreimage) and exists to authenticate
11069  * the sender to the recipient and prevent payment-probing (deanonymization) attacks. For
11070  * newer nodes, it will be provided to you in the invoice. If you do not have one, the Route
11071  * must not contain multiple paths as multi-path payments require a recipient-provided
11072  * payment_secret.
11073  * If a payment_secret *is* provided, we assume that the invoice had the payment_secret feature
11074  * bit set (either as required or as available). If multiple paths are present in the Route,
11075  * we assume the invoice had the basic_mpp feature set.
11076  */
11077 MUST_USE_RES struct LDKCResult_NonePaymentSendFailureZ ChannelManager_send_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
11078
11079 /**
11080  * Call this upon creation of a funding transaction for the given channel.
11081  *
11082  * Returns an [`APIError::APIMisuseError`] if the funding_transaction spent non-SegWit outputs
11083  * or if no output was found which matches the parameters in [`Event::FundingGenerationReady`].
11084  *
11085  * Panics if a funding transaction has already been provided for this channel.
11086  *
11087  * May panic if the output found in the funding transaction is duplicative with some other
11088  * channel (note that this should be trivially prevented by using unique funding transaction
11089  * keys per-channel).
11090  *
11091  * Do NOT broadcast the funding transaction yourself. When we have safely received our
11092  * counterparty's signature the funding transaction will automatically be broadcast via the
11093  * [`BroadcasterInterface`] provided when this `ChannelManager` was constructed.
11094  *
11095  * Note that this includes RBF or similar transaction replacement strategies - lightning does
11096  * not currently support replacing a funding transaction on an existing channel. Instead,
11097  * create a new channel with a conflicting funding transaction.
11098  */
11099 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_funding_transaction_generated(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKTransaction funding_transaction);
11100
11101 /**
11102  * Generates a signed node_announcement from the given arguments and creates a
11103  * BroadcastNodeAnnouncement event. Note that such messages will be ignored unless peers have
11104  * seen a channel_announcement from us (ie unless we have public channels open).
11105  *
11106  * RGB is a node \"color\" and alias is a printable human-readable string to describe this node
11107  * to humans. They carry no in-protocol meaning.
11108  *
11109  * addresses represent the set (possibly empty) of socket addresses on which this node accepts
11110  * incoming connections. These will be broadcast to the network, publicly tying these
11111  * addresses together. If you wish to preserve user privacy, addresses should likely contain
11112  * only Tor Onion addresses.
11113  *
11114  * Panics if addresses is absurdly large (more than 500).
11115  */
11116 void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
11117
11118 /**
11119  * Processes HTLCs which are pending waiting on random forward delay.
11120  *
11121  * Should only really ever be called in response to a PendingHTLCsForwardable event.
11122  * Will likely generate further events.
11123  */
11124 void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
11125
11126 /**
11127  * If a peer is disconnected we mark any channels with that peer as 'disabled'.
11128  * After some time, if channels are still disabled we need to broadcast a ChannelUpdate
11129  * to inform the network about the uselessness of these channels.
11130  *
11131  * This method handles all the details, and must be called roughly once per minute.
11132  *
11133  * Note that in some rare cases this may generate a `chain::Watch::update_channel` call.
11134  */
11135 void ChannelManager_timer_chan_freshness_every_min(const struct LDKChannelManager *NONNULL_PTR this_arg);
11136
11137 /**
11138  * Indicates that the preimage for payment_hash is unknown or the received amount is incorrect
11139  * after a PaymentReceived event, failing the HTLC back to its origin and freeing resources
11140  * along the path (including in our own channel on which we received it).
11141  * Returns false if no payment was found to fail backwards, true if the process of failing the
11142  * HTLC backwards has been started.
11143  */
11144 MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32], struct LDKThirtyTwoBytes payment_secret);
11145
11146 /**
11147  * Provides a payment preimage in response to a PaymentReceived event, returning true and
11148  * generating message events for the net layer to claim the payment, if possible. Thus, you
11149  * should probably kick the net layer to go send messages if this returns true!
11150  *
11151  * You must specify the expected amounts for this HTLC, and we will only claim HTLCs
11152  * available within a few percent of the expected amount. This is critical for several
11153  * reasons : a) it avoids providing senders with `proof-of-payment` (in the form of the
11154  * payment_preimage without having provided the full value and b) it avoids certain
11155  * privacy-breaking recipient-probing attacks which may reveal payment activity to
11156  * motivated attackers.
11157  *
11158  * Note that the privacy concerns in (b) are not relevant in payments with a payment_secret
11159  * set. Thus, for such payments we will claim any payments which do not under-pay.
11160  *
11161  * May panic if called except in response to a PaymentReceived event.
11162  */
11163 MUST_USE_RES bool ChannelManager_claim_funds(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret, uint64_t expected_amount);
11164
11165 /**
11166  * Gets the node_id held by this ChannelManager
11167  */
11168 MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
11169
11170 /**
11171  * Restores a single, given channel to normal operation after a
11172  * ChannelMonitorUpdateErr::TemporaryFailure was returned from a channel monitor update
11173  * operation.
11174  *
11175  * All ChannelMonitor updates up to and including highest_applied_update_id must have been
11176  * fully committed in every copy of the given channels' ChannelMonitors.
11177  *
11178  * Note that there is no effect to calling with a highest_applied_update_id other than the
11179  * current latest ChannelMonitorUpdate and one call to this function after multiple
11180  * ChannelMonitorUpdateErr::TemporaryFailures is fine. The highest_applied_update_id field
11181  * exists largely only to prevent races between this and concurrent update_monitor calls.
11182  *
11183  * Thus, the anticipated use is, at a high level:
11184  *  1) You register a chain::Watch with this ChannelManager,
11185  *  2) it stores each update to disk, and begins updating any remote (eg watchtower) copies of
11186  *     said ChannelMonitors as it can, returning ChannelMonitorUpdateErr::TemporaryFailures
11187  *     any time it cannot do so instantly,
11188  *  3) update(s) are applied to each remote copy of a ChannelMonitor,
11189  *  4) once all remote copies are updated, you call this function with the update_id that
11190  *     completed, and once it is the latest the Channel will be re-enabled.
11191  */
11192 void ChannelManager_channel_monitor_updated(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKOutPoint *NONNULL_PTR funding_txo, uint64_t highest_applied_update_id);
11193
11194 /**
11195  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
11196  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
11197  */
11198 struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
11199
11200 /**
11201  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
11202  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
11203  */
11204 struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
11205
11206 /**
11207  * Constructs a new Listen which calls the relevant methods on this_arg.
11208  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
11209  */
11210 struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
11211
11212 /**
11213  * Updates channel state to take note of transactions which were confirmed in the given block
11214  * at the given height.
11215  *
11216  * Note that you must still call (or have called) [`update_best_block`] with the block
11217  * information which is included here.
11218  *
11219  * This method may be called before or after [`update_best_block`] for a given block's
11220  * transaction data and may be called multiple times with additional transaction data for a
11221  * given block.
11222  *
11223  * This method may be called for a previous block after an [`update_best_block`] call has
11224  * been made for a later block, however it must *not* be called with transaction data from a
11225  * block which is no longer in the best chain (ie where [`update_best_block`] has already
11226  * been informed about a blockchain reorganization which no longer includes the block which
11227  * corresponds to `header`).
11228  *
11229  * [`update_best_block`]: `Self::update_best_block`
11230  */
11231 void ChannelManager_transactions_confirmed(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKCVec_C2Tuple_usizeTransactionZZ txdata);
11232
11233 /**
11234  * Updates channel state with the current best blockchain tip. You should attempt to call this
11235  * quickly after a new block becomes available, however if multiple new blocks become
11236  * available at the same time, only a single `update_best_block()` call needs to be made.
11237  *
11238  * This method should also be called immediately after any block disconnections, once at the
11239  * reorganization fork point, and once with the new chain tip. Calling this method at the
11240  * blockchain reorganization fork point ensures we learn when a funding transaction which was
11241  * previously confirmed is reorganized out of the blockchain, ensuring we do not continue to
11242  * accept payments which cannot be enforced on-chain.
11243  *
11244  * In both the block-connection and block-disconnection case, this method may be called either
11245  * once per block connected or disconnected, or simply at the fork point and new tip(s),
11246  * skipping any intermediary blocks.
11247  */
11248 void ChannelManager_update_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height);
11249
11250 /**
11251  * Blocks until ChannelManager needs to be persisted or a timeout is reached. It returns a bool
11252  * indicating whether persistence is necessary. Only one listener on
11253  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
11254  * up.
11255  * Note that the feature `allow_wallclock_use` must be enabled to use this function.
11256  */
11257 MUST_USE_RES bool ChannelManager_await_persistable_update_timeout(const struct LDKChannelManager *NONNULL_PTR this_arg, uint64_t max_wait);
11258
11259 /**
11260  * Blocks until ChannelManager needs to be persisted. Only one listener on
11261  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
11262  * up.
11263  */
11264 void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
11265
11266 /**
11267  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
11268  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
11269  */
11270 struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
11271
11272 /**
11273  * Serialize the ChannelManager object into a byte array which can be read by ChannelManager_read
11274  */
11275 struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
11276
11277 /**
11278  * Frees any resources used by the ChannelManagerReadArgs, if is_owned is set and inner is non-NULL.
11279  */
11280 void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
11281
11282 /**
11283  * The keys provider which will give us relevant keys. Some keys will be loaded during
11284  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
11285  * signing data.
11286  */
11287 const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11288
11289 /**
11290  * The keys provider which will give us relevant keys. Some keys will be loaded during
11291  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
11292  * signing data.
11293  */
11294 void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
11295
11296 /**
11297  * The fee_estimator for use in the ChannelManager in the future.
11298  *
11299  * No calls to the FeeEstimator will be made during deserialization.
11300  */
11301 const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11302
11303 /**
11304  * The fee_estimator for use in the ChannelManager in the future.
11305  *
11306  * No calls to the FeeEstimator will be made during deserialization.
11307  */
11308 void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
11309
11310 /**
11311  * The chain::Watch for use in the ChannelManager in the future.
11312  *
11313  * No calls to the chain::Watch will be made during deserialization. It is assumed that
11314  * you have deserialized ChannelMonitors separately and will add them to your
11315  * chain::Watch after deserializing this ChannelManager.
11316  */
11317 const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11318
11319 /**
11320  * The chain::Watch for use in the ChannelManager in the future.
11321  *
11322  * No calls to the chain::Watch will be made during deserialization. It is assumed that
11323  * you have deserialized ChannelMonitors separately and will add them to your
11324  * chain::Watch after deserializing this ChannelManager.
11325  */
11326 void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
11327
11328 /**
11329  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
11330  * used to broadcast the latest local commitment transactions of channels which must be
11331  * force-closed during deserialization.
11332  */
11333 const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11334
11335 /**
11336  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
11337  * used to broadcast the latest local commitment transactions of channels which must be
11338  * force-closed during deserialization.
11339  */
11340 void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
11341
11342 /**
11343  * The Logger for use in the ChannelManager and which may be used to log information during
11344  * deserialization.
11345  */
11346 const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11347
11348 /**
11349  * The Logger for use in the ChannelManager and which may be used to log information during
11350  * deserialization.
11351  */
11352 void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
11353
11354 /**
11355  * Default settings used for new channels. Any existing channels will continue to use the
11356  * runtime settings which were stored when the ChannelManager was serialized.
11357  */
11358 struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11359
11360 /**
11361  * Default settings used for new channels. Any existing channels will continue to use the
11362  * runtime settings which were stored when the ChannelManager was serialized.
11363  */
11364 void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
11365
11366 /**
11367  * Simple utility function to create a ChannelManagerReadArgs which creates the monitor
11368  * HashMap for you. This is primarily useful for C bindings where it is not practical to
11369  * populate a HashMap directly from C.
11370  */
11371 MUST_USE_RES struct LDKChannelManagerReadArgs ChannelManagerReadArgs_new(struct LDKKeysInterface keys_manager, struct LDKFeeEstimator fee_estimator, struct LDKWatch chain_monitor, struct LDKBroadcasterInterface tx_broadcaster, struct LDKLogger logger, struct LDKUserConfig default_config, struct LDKCVec_ChannelMonitorZ channel_monitors);
11372
11373 /**
11374  * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
11375  */
11376 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
11377
11378 /**
11379  * Frees any resources used by the DecodeError, if is_owned is set and inner is non-NULL.
11380  */
11381 void DecodeError_free(struct LDKDecodeError this_obj);
11382
11383 /**
11384  * Creates a copy of the DecodeError
11385  */
11386 struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
11387
11388 /**
11389  * Frees any resources used by the Init, if is_owned is set and inner is non-NULL.
11390  */
11391 void Init_free(struct LDKInit this_obj);
11392
11393 /**
11394  * The relevant features which the sender supports
11395  */
11396 struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
11397
11398 /**
11399  * The relevant features which the sender supports
11400  */
11401 void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
11402
11403 /**
11404  * Constructs a new Init given each field
11405  */
11406 MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
11407
11408 /**
11409  * Creates a copy of the Init
11410  */
11411 struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
11412
11413 /**
11414  * Frees any resources used by the ErrorMessage, if is_owned is set and inner is non-NULL.
11415  */
11416 void ErrorMessage_free(struct LDKErrorMessage this_obj);
11417
11418 /**
11419  * The channel ID involved in the error
11420  */
11421 const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32];
11422
11423 /**
11424  * The channel ID involved in the error
11425  */
11426 void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11427
11428 /**
11429  * A possibly human-readable error description.
11430  * The string should be sanitized before it is used (e.g. emitted to logs
11431  * or printed to stdout).  Otherwise, a well crafted error message may trigger a security
11432  * vulnerability in the terminal emulator or the logging subsystem.
11433  */
11434 struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
11435
11436 /**
11437  * A possibly human-readable error description.
11438  * The string should be sanitized before it is used (e.g. emitted to logs
11439  * or printed to stdout).  Otherwise, a well crafted error message may trigger a security
11440  * vulnerability in the terminal emulator or the logging subsystem.
11441  */
11442 void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
11443
11444 /**
11445  * Constructs a new ErrorMessage given each field
11446  */
11447 MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z data_arg);
11448
11449 /**
11450  * Creates a copy of the ErrorMessage
11451  */
11452 struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
11453
11454 /**
11455  * Frees any resources used by the Ping, if is_owned is set and inner is non-NULL.
11456  */
11457 void Ping_free(struct LDKPing this_obj);
11458
11459 /**
11460  * The desired response length
11461  */
11462 uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
11463
11464 /**
11465  * The desired response length
11466  */
11467 void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
11468
11469 /**
11470  * The ping packet size.
11471  * This field is not sent on the wire. byteslen zeros are sent.
11472  */
11473 uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
11474
11475 /**
11476  * The ping packet size.
11477  * This field is not sent on the wire. byteslen zeros are sent.
11478  */
11479 void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
11480
11481 /**
11482  * Constructs a new Ping given each field
11483  */
11484 MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
11485
11486 /**
11487  * Creates a copy of the Ping
11488  */
11489 struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
11490
11491 /**
11492  * Frees any resources used by the Pong, if is_owned is set and inner is non-NULL.
11493  */
11494 void Pong_free(struct LDKPong this_obj);
11495
11496 /**
11497  * The pong packet size.
11498  * This field is not sent on the wire. byteslen zeros are sent.
11499  */
11500 uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
11501
11502 /**
11503  * The pong packet size.
11504  * This field is not sent on the wire. byteslen zeros are sent.
11505  */
11506 void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
11507
11508 /**
11509  * Constructs a new Pong given each field
11510  */
11511 MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
11512
11513 /**
11514  * Creates a copy of the Pong
11515  */
11516 struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
11517
11518 /**
11519  * Frees any resources used by the OpenChannel, if is_owned is set and inner is non-NULL.
11520  */
11521 void OpenChannel_free(struct LDKOpenChannel this_obj);
11522
11523 /**
11524  * The genesis hash of the blockchain where the channel is to be opened
11525  */
11526 const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
11527
11528 /**
11529  * The genesis hash of the blockchain where the channel is to be opened
11530  */
11531 void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11532
11533 /**
11534  * A temporary channel ID, until the funding outpoint is announced
11535  */
11536 const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
11537
11538 /**
11539  * A temporary channel ID, until the funding outpoint is announced
11540  */
11541 void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11542
11543 /**
11544  * The channel value
11545  */
11546 uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11547
11548 /**
11549  * The channel value
11550  */
11551 void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11552
11553 /**
11554  * The amount to push to the counterparty as part of the open, in milli-satoshi
11555  */
11556 uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11557
11558 /**
11559  * The amount to push to the counterparty as part of the open, in milli-satoshi
11560  */
11561 void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11562
11563 /**
11564  * The threshold below which outputs on transactions broadcast by sender will be omitted
11565  */
11566 uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11567
11568 /**
11569  * The threshold below which outputs on transactions broadcast by sender will be omitted
11570  */
11571 void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11572
11573 /**
11574  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11575  */
11576 uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11577
11578 /**
11579  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11580  */
11581 void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11582
11583 /**
11584  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11585  */
11586 uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11587
11588 /**
11589  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11590  */
11591 void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11592
11593 /**
11594  * The minimum HTLC size incoming to sender, in milli-satoshi
11595  */
11596 uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11597
11598 /**
11599  * The minimum HTLC size incoming to sender, in milli-satoshi
11600  */
11601 void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11602
11603 /**
11604  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
11605  */
11606 uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11607
11608 /**
11609  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
11610  */
11611 void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
11612
11613 /**
11614  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11615  */
11616 uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11617
11618 /**
11619  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11620  */
11621 void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
11622
11623 /**
11624  * The maximum number of inbound HTLCs towards sender
11625  */
11626 uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11627
11628 /**
11629  * The maximum number of inbound HTLCs towards sender
11630  */
11631 void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
11632
11633 /**
11634  * The sender's key controlling the funding transaction
11635  */
11636 struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11637
11638 /**
11639  * The sender's key controlling the funding transaction
11640  */
11641 void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11642
11643 /**
11644  * Used to derive a revocation key for transactions broadcast by counterparty
11645  */
11646 struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11647
11648 /**
11649  * Used to derive a revocation key for transactions broadcast by counterparty
11650  */
11651 void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11652
11653 /**
11654  * A payment key to sender for transactions broadcast by counterparty
11655  */
11656 struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11657
11658 /**
11659  * A payment key to sender for transactions broadcast by counterparty
11660  */
11661 void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11662
11663 /**
11664  * Used to derive a payment key to sender for transactions broadcast by sender
11665  */
11666 struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11667
11668 /**
11669  * Used to derive a payment key to sender for transactions broadcast by sender
11670  */
11671 void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11672
11673 /**
11674  * Used to derive an HTLC payment key to sender
11675  */
11676 struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11677
11678 /**
11679  * Used to derive an HTLC payment key to sender
11680  */
11681 void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11682
11683 /**
11684  * The first to-be-broadcast-by-sender transaction's per commitment point
11685  */
11686 struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11687
11688 /**
11689  * The first to-be-broadcast-by-sender transaction's per commitment point
11690  */
11691 void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11692
11693 /**
11694  * Channel flags
11695  */
11696 uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11697
11698 /**
11699  * Channel flags
11700  */
11701 void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
11702
11703 /**
11704  * Creates a copy of the OpenChannel
11705  */
11706 struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
11707
11708 /**
11709  * Frees any resources used by the AcceptChannel, if is_owned is set and inner is non-NULL.
11710  */
11711 void AcceptChannel_free(struct LDKAcceptChannel this_obj);
11712
11713 /**
11714  * A temporary channel ID, until the funding outpoint is announced
11715  */
11716 const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32];
11717
11718 /**
11719  * A temporary channel ID, until the funding outpoint is announced
11720  */
11721 void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11722
11723 /**
11724  * The threshold below which outputs on transactions broadcast by sender will be omitted
11725  */
11726 uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11727
11728 /**
11729  * The threshold below which outputs on transactions broadcast by sender will be omitted
11730  */
11731 void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11732
11733 /**
11734  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11735  */
11736 uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11737
11738 /**
11739  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11740  */
11741 void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11742
11743 /**
11744  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11745  */
11746 uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11747
11748 /**
11749  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11750  */
11751 void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11752
11753 /**
11754  * The minimum HTLC size incoming to sender, in milli-satoshi
11755  */
11756 uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11757
11758 /**
11759  * The minimum HTLC size incoming to sender, in milli-satoshi
11760  */
11761 void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11762
11763 /**
11764  * Minimum depth of the funding transaction before the channel is considered open
11765  */
11766 uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11767
11768 /**
11769  * Minimum depth of the funding transaction before the channel is considered open
11770  */
11771 void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
11772
11773 /**
11774  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11775  */
11776 uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11777
11778 /**
11779  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11780  */
11781 void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
11782
11783 /**
11784  * The maximum number of inbound HTLCs towards sender
11785  */
11786 uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11787
11788 /**
11789  * The maximum number of inbound HTLCs towards sender
11790  */
11791 void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
11792
11793 /**
11794  * The sender's key controlling the funding transaction
11795  */
11796 struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11797
11798 /**
11799  * The sender's key controlling the funding transaction
11800  */
11801 void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11802
11803 /**
11804  * Used to derive a revocation key for transactions broadcast by counterparty
11805  */
11806 struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11807
11808 /**
11809  * Used to derive a revocation key for transactions broadcast by counterparty
11810  */
11811 void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11812
11813 /**
11814  * A payment key to sender for transactions broadcast by counterparty
11815  */
11816 struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11817
11818 /**
11819  * A payment key to sender for transactions broadcast by counterparty
11820  */
11821 void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11822
11823 /**
11824  * Used to derive a payment key to sender for transactions broadcast by sender
11825  */
11826 struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11827
11828 /**
11829  * Used to derive a payment key to sender for transactions broadcast by sender
11830  */
11831 void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11832
11833 /**
11834  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
11835  */
11836 struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11837
11838 /**
11839  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
11840  */
11841 void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11842
11843 /**
11844  * The first to-be-broadcast-by-sender transaction's per commitment point
11845  */
11846 struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11847
11848 /**
11849  * The first to-be-broadcast-by-sender transaction's per commitment point
11850  */
11851 void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11852
11853 /**
11854  * Creates a copy of the AcceptChannel
11855  */
11856 struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
11857
11858 /**
11859  * Frees any resources used by the FundingCreated, if is_owned is set and inner is non-NULL.
11860  */
11861 void FundingCreated_free(struct LDKFundingCreated this_obj);
11862
11863 /**
11864  * A temporary channel ID, until the funding is established
11865  */
11866 const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
11867
11868 /**
11869  * A temporary channel ID, until the funding is established
11870  */
11871 void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11872
11873 /**
11874  * The funding transaction ID
11875  */
11876 const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
11877
11878 /**
11879  * The funding transaction ID
11880  */
11881 void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11882
11883 /**
11884  * The specific output index funding this channel
11885  */
11886 uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
11887
11888 /**
11889  * The specific output index funding this channel
11890  */
11891 void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
11892
11893 /**
11894  * The signature of the channel initiator (funder) on the funding transaction
11895  */
11896 struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
11897
11898 /**
11899  * The signature of the channel initiator (funder) on the funding transaction
11900  */
11901 void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
11902
11903 /**
11904  * Constructs a new FundingCreated given each field
11905  */
11906 MUST_USE_RES struct LDKFundingCreated FundingCreated_new(struct LDKThirtyTwoBytes temporary_channel_id_arg, struct LDKThirtyTwoBytes funding_txid_arg, uint16_t funding_output_index_arg, struct LDKSignature signature_arg);
11907
11908 /**
11909  * Creates a copy of the FundingCreated
11910  */
11911 struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
11912
11913 /**
11914  * Frees any resources used by the FundingSigned, if is_owned is set and inner is non-NULL.
11915  */
11916 void FundingSigned_free(struct LDKFundingSigned this_obj);
11917
11918 /**
11919  * The channel ID
11920  */
11921 const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32];
11922
11923 /**
11924  * The channel ID
11925  */
11926 void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11927
11928 /**
11929  * The signature of the channel acceptor (fundee) on the funding transaction
11930  */
11931 struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
11932
11933 /**
11934  * The signature of the channel acceptor (fundee) on the funding transaction
11935  */
11936 void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
11937
11938 /**
11939  * Constructs a new FundingSigned given each field
11940  */
11941 MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
11942
11943 /**
11944  * Creates a copy of the FundingSigned
11945  */
11946 struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
11947
11948 /**
11949  * Frees any resources used by the FundingLocked, if is_owned is set and inner is non-NULL.
11950  */
11951 void FundingLocked_free(struct LDKFundingLocked this_obj);
11952
11953 /**
11954  * The channel ID
11955  */
11956 const uint8_t (*FundingLocked_get_channel_id(const struct LDKFundingLocked *NONNULL_PTR this_ptr))[32];
11957
11958 /**
11959  * The channel ID
11960  */
11961 void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11962
11963 /**
11964  * The per-commitment point of the second commitment transaction
11965  */
11966 struct LDKPublicKey FundingLocked_get_next_per_commitment_point(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
11967
11968 /**
11969  * The per-commitment point of the second commitment transaction
11970  */
11971 void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11972
11973 /**
11974  * Constructs a new FundingLocked given each field
11975  */
11976 MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
11977
11978 /**
11979  * Creates a copy of the FundingLocked
11980  */
11981 struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig);
11982
11983 /**
11984  * Frees any resources used by the Shutdown, if is_owned is set and inner is non-NULL.
11985  */
11986 void Shutdown_free(struct LDKShutdown this_obj);
11987
11988 /**
11989  * The channel ID
11990  */
11991 const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32];
11992
11993 /**
11994  * The channel ID
11995  */
11996 void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11997
11998 /**
11999  * The destination of this peer's funds on closing.
12000  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
12001  */
12002 struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
12003
12004 /**
12005  * The destination of this peer's funds on closing.
12006  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
12007  */
12008 void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
12009
12010 /**
12011  * Constructs a new Shutdown given each field
12012  */
12013 MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
12014
12015 /**
12016  * Creates a copy of the Shutdown
12017  */
12018 struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
12019
12020 /**
12021  * Frees any resources used by the ClosingSigned, if is_owned is set and inner is non-NULL.
12022  */
12023 void ClosingSigned_free(struct LDKClosingSigned this_obj);
12024
12025 /**
12026  * The channel ID
12027  */
12028 const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32];
12029
12030 /**
12031  * The channel ID
12032  */
12033 void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12034
12035 /**
12036  * The proposed total fee for the closing transaction
12037  */
12038 uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
12039
12040 /**
12041  * The proposed total fee for the closing transaction
12042  */
12043 void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
12044
12045 /**
12046  * A signature on the closing transaction
12047  */
12048 struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
12049
12050 /**
12051  * A signature on the closing transaction
12052  */
12053 void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
12054
12055 /**
12056  * Constructs a new ClosingSigned given each field
12057  */
12058 MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg);
12059
12060 /**
12061  * Creates a copy of the ClosingSigned
12062  */
12063 struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
12064
12065 /**
12066  * Frees any resources used by the UpdateAddHTLC, if is_owned is set and inner is non-NULL.
12067  */
12068 void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
12069
12070 /**
12071  * The channel ID
12072  */
12073 const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
12074
12075 /**
12076  * The channel ID
12077  */
12078 void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12079
12080 /**
12081  * The HTLC ID
12082  */
12083 uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12084
12085 /**
12086  * The HTLC ID
12087  */
12088 void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
12089
12090 /**
12091  * The HTLC value in milli-satoshi
12092  */
12093 uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12094
12095 /**
12096  * The HTLC value in milli-satoshi
12097  */
12098 void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
12099
12100 /**
12101  * The payment hash, the pre-image of which controls HTLC redemption
12102  */
12103 const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
12104
12105 /**
12106  * The payment hash, the pre-image of which controls HTLC redemption
12107  */
12108 void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12109
12110 /**
12111  * The expiry height of the HTLC
12112  */
12113 uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12114
12115 /**
12116  * The expiry height of the HTLC
12117  */
12118 void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
12119
12120 /**
12121  * Creates a copy of the UpdateAddHTLC
12122  */
12123 struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
12124
12125 /**
12126  * Frees any resources used by the UpdateFulfillHTLC, if is_owned is set and inner is non-NULL.
12127  */
12128 void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
12129
12130 /**
12131  * The channel ID
12132  */
12133 const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
12134
12135 /**
12136  * The channel ID
12137  */
12138 void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12139
12140 /**
12141  * The HTLC ID
12142  */
12143 uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
12144
12145 /**
12146  * The HTLC ID
12147  */
12148 void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
12149
12150 /**
12151  * The pre-image of the payment hash, allowing HTLC redemption
12152  */
12153 const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
12154
12155 /**
12156  * The pre-image of the payment hash, allowing HTLC redemption
12157  */
12158 void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12159
12160 /**
12161  * Constructs a new UpdateFulfillHTLC given each field
12162  */
12163 MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
12164
12165 /**
12166  * Creates a copy of the UpdateFulfillHTLC
12167  */
12168 struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
12169
12170 /**
12171  * Frees any resources used by the UpdateFailHTLC, if is_owned is set and inner is non-NULL.
12172  */
12173 void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
12174
12175 /**
12176  * The channel ID
12177  */
12178 const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32];
12179
12180 /**
12181  * The channel ID
12182  */
12183 void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12184
12185 /**
12186  * The HTLC ID
12187  */
12188 uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
12189
12190 /**
12191  * The HTLC ID
12192  */
12193 void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
12194
12195 /**
12196  * Creates a copy of the UpdateFailHTLC
12197  */
12198 struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
12199
12200 /**
12201  * Frees any resources used by the UpdateFailMalformedHTLC, if is_owned is set and inner is non-NULL.
12202  */
12203 void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
12204
12205 /**
12206  * The channel ID
12207  */
12208 const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32];
12209
12210 /**
12211  * The channel ID
12212  */
12213 void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12214
12215 /**
12216  * The HTLC ID
12217  */
12218 uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
12219
12220 /**
12221  * The HTLC ID
12222  */
12223 void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
12224
12225 /**
12226  * The failure code
12227  */
12228 uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
12229
12230 /**
12231  * The failure code
12232  */
12233 void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
12234
12235 /**
12236  * Creates a copy of the UpdateFailMalformedHTLC
12237  */
12238 struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
12239
12240 /**
12241  * Frees any resources used by the CommitmentSigned, if is_owned is set and inner is non-NULL.
12242  */
12243 void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
12244
12245 /**
12246  * The channel ID
12247  */
12248 const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32];
12249
12250 /**
12251  * The channel ID
12252  */
12253 void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12254
12255 /**
12256  * A signature on the commitment transaction
12257  */
12258 struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
12259
12260 /**
12261  * A signature on the commitment transaction
12262  */
12263 void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
12264
12265 /**
12266  * Signatures on the HTLC transactions
12267  */
12268 void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
12269
12270 /**
12271  * Constructs a new CommitmentSigned given each field
12272  */
12273 MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
12274
12275 /**
12276  * Creates a copy of the CommitmentSigned
12277  */
12278 struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
12279
12280 /**
12281  * Frees any resources used by the RevokeAndACK, if is_owned is set and inner is non-NULL.
12282  */
12283 void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
12284
12285 /**
12286  * The channel ID
12287  */
12288 const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
12289
12290 /**
12291  * The channel ID
12292  */
12293 void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12294
12295 /**
12296  * The secret corresponding to the per-commitment point
12297  */
12298 const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
12299
12300 /**
12301  * The secret corresponding to the per-commitment point
12302  */
12303 void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12304
12305 /**
12306  * The next sender-broadcast commitment transaction's per-commitment point
12307  */
12308 struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
12309
12310 /**
12311  * The next sender-broadcast commitment transaction's per-commitment point
12312  */
12313 void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12314
12315 /**
12316  * Constructs a new RevokeAndACK given each field
12317  */
12318 MUST_USE_RES struct LDKRevokeAndACK RevokeAndACK_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKThirtyTwoBytes per_commitment_secret_arg, struct LDKPublicKey next_per_commitment_point_arg);
12319
12320 /**
12321  * Creates a copy of the RevokeAndACK
12322  */
12323 struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
12324
12325 /**
12326  * Frees any resources used by the UpdateFee, if is_owned is set and inner is non-NULL.
12327  */
12328 void UpdateFee_free(struct LDKUpdateFee this_obj);
12329
12330 /**
12331  * The channel ID
12332  */
12333 const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32];
12334
12335 /**
12336  * The channel ID
12337  */
12338 void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12339
12340 /**
12341  * Fee rate per 1000-weight of the transaction
12342  */
12343 uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
12344
12345 /**
12346  * Fee rate per 1000-weight of the transaction
12347  */
12348 void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
12349
12350 /**
12351  * Constructs a new UpdateFee given each field
12352  */
12353 MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
12354
12355 /**
12356  * Creates a copy of the UpdateFee
12357  */
12358 struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
12359
12360 /**
12361  * Frees any resources used by the DataLossProtect, if is_owned is set and inner is non-NULL.
12362  */
12363 void DataLossProtect_free(struct LDKDataLossProtect this_obj);
12364
12365 /**
12366  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
12367  * belonging to the recipient
12368  */
12369 const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32];
12370
12371 /**
12372  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
12373  * belonging to the recipient
12374  */
12375 void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12376
12377 /**
12378  * The sender's per-commitment point for their current commitment transaction
12379  */
12380 struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
12381
12382 /**
12383  * The sender's per-commitment point for their current commitment transaction
12384  */
12385 void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12386
12387 /**
12388  * Constructs a new DataLossProtect given each field
12389  */
12390 MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
12391
12392 /**
12393  * Creates a copy of the DataLossProtect
12394  */
12395 struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
12396
12397 /**
12398  * Frees any resources used by the ChannelReestablish, if is_owned is set and inner is non-NULL.
12399  */
12400 void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
12401
12402 /**
12403  * The channel ID
12404  */
12405 const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32];
12406
12407 /**
12408  * The channel ID
12409  */
12410 void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12411
12412 /**
12413  * The next commitment number for the sender
12414  */
12415 uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
12416
12417 /**
12418  * The next commitment number for the sender
12419  */
12420 void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
12421
12422 /**
12423  * The next commitment number for the recipient
12424  */
12425 uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
12426
12427 /**
12428  * The next commitment number for the recipient
12429  */
12430 void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
12431
12432 /**
12433  * Creates a copy of the ChannelReestablish
12434  */
12435 struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
12436
12437 /**
12438  * Frees any resources used by the AnnouncementSignatures, if is_owned is set and inner is non-NULL.
12439  */
12440 void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
12441
12442 /**
12443  * The channel ID
12444  */
12445 const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32];
12446
12447 /**
12448  * The channel ID
12449  */
12450 void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12451
12452 /**
12453  * The short channel ID
12454  */
12455 uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12456
12457 /**
12458  * The short channel ID
12459  */
12460 void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
12461
12462 /**
12463  * A signature by the node key
12464  */
12465 struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12466
12467 /**
12468  * A signature by the node key
12469  */
12470 void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
12471
12472 /**
12473  * A signature by the funding key
12474  */
12475 struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12476
12477 /**
12478  * A signature by the funding key
12479  */
12480 void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
12481
12482 /**
12483  * Constructs a new AnnouncementSignatures given each field
12484  */
12485 MUST_USE_RES struct LDKAnnouncementSignatures AnnouncementSignatures_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t short_channel_id_arg, struct LDKSignature node_signature_arg, struct LDKSignature bitcoin_signature_arg);
12486
12487 /**
12488  * Creates a copy of the AnnouncementSignatures
12489  */
12490 struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
12491
12492 /**
12493  * Frees any resources used by the NetAddress
12494  */
12495 void NetAddress_free(struct LDKNetAddress this_ptr);
12496
12497 /**
12498  * Creates a copy of the NetAddress
12499  */
12500 struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
12501
12502 /**
12503  * Serialize the NetAddress object into a byte array which can be read by NetAddress_read
12504  */
12505 struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
12506
12507 /**
12508  * Read a Result from a byte array, created by Result_write
12509  */
12510 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ Result_read(struct LDKu8slice ser);
12511
12512 /**
12513  * Frees any resources used by the UnsignedNodeAnnouncement, if is_owned is set and inner is non-NULL.
12514  */
12515 void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
12516
12517 /**
12518  * The advertised features
12519  */
12520 struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12521
12522 /**
12523  * The advertised features
12524  */
12525 void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
12526
12527 /**
12528  * A strictly monotonic announcement counter, with gaps allowed
12529  */
12530 uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12531
12532 /**
12533  * A strictly monotonic announcement counter, with gaps allowed
12534  */
12535 void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
12536
12537 /**
12538  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
12539  * to this node).
12540  */
12541 struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12542
12543 /**
12544  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
12545  * to this node).
12546  */
12547 void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12548
12549 /**
12550  * An RGB color for UI purposes
12551  */
12552 const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
12553
12554 /**
12555  * An RGB color for UI purposes
12556  */
12557 void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
12558
12559 /**
12560  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
12561  * of uniqueness.
12562  */
12563 const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
12564
12565 /**
12566  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
12567  * of uniqueness.
12568  */
12569 void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12570
12571 /**
12572  * List of addresses on which this node is reachable
12573  */
12574 void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
12575
12576 /**
12577  * Creates a copy of the UnsignedNodeAnnouncement
12578  */
12579 struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
12580
12581 /**
12582  * Frees any resources used by the NodeAnnouncement, if is_owned is set and inner is non-NULL.
12583  */
12584 void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
12585
12586 /**
12587  * The signature by the node key
12588  */
12589 struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
12590
12591 /**
12592  * The signature by the node key
12593  */
12594 void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12595
12596 /**
12597  * The actual content of the announcement
12598  */
12599 struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
12600
12601 /**
12602  * The actual content of the announcement
12603  */
12604 void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
12605
12606 /**
12607  * Constructs a new NodeAnnouncement given each field
12608  */
12609 MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
12610
12611 /**
12612  * Creates a copy of the NodeAnnouncement
12613  */
12614 struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
12615
12616 /**
12617  * Frees any resources used by the UnsignedChannelAnnouncement, if is_owned is set and inner is non-NULL.
12618  */
12619 void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
12620
12621 /**
12622  * The advertised channel features
12623  */
12624 struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12625
12626 /**
12627  * The advertised channel features
12628  */
12629 void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
12630
12631 /**
12632  * The genesis hash of the blockchain where the channel is to be opened
12633  */
12634 const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
12635
12636 /**
12637  * The genesis hash of the blockchain where the channel is to be opened
12638  */
12639 void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12640
12641 /**
12642  * The short channel ID
12643  */
12644 uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12645
12646 /**
12647  * The short channel ID
12648  */
12649 void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
12650
12651 /**
12652  * One of the two node_ids which are endpoints of this channel
12653  */
12654 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12655
12656 /**
12657  * One of the two node_ids which are endpoints of this channel
12658  */
12659 void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12660
12661 /**
12662  * The other of the two node_ids which are endpoints of this channel
12663  */
12664 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12665
12666 /**
12667  * The other of the two node_ids which are endpoints of this channel
12668  */
12669 void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12670
12671 /**
12672  * The funding key for the first node
12673  */
12674 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12675
12676 /**
12677  * The funding key for the first node
12678  */
12679 void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12680
12681 /**
12682  * The funding key for the second node
12683  */
12684 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12685
12686 /**
12687  * The funding key for the second node
12688  */
12689 void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12690
12691 /**
12692  * Creates a copy of the UnsignedChannelAnnouncement
12693  */
12694 struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
12695
12696 /**
12697  * Frees any resources used by the ChannelAnnouncement, if is_owned is set and inner is non-NULL.
12698  */
12699 void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
12700
12701 /**
12702  * Authentication of the announcement by the first public node
12703  */
12704 struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12705
12706 /**
12707  * Authentication of the announcement by the first public node
12708  */
12709 void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12710
12711 /**
12712  * Authentication of the announcement by the second public node
12713  */
12714 struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12715
12716 /**
12717  * Authentication of the announcement by the second public node
12718  */
12719 void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12720
12721 /**
12722  * Proof of funding UTXO ownership by the first public node
12723  */
12724 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12725
12726 /**
12727  * Proof of funding UTXO ownership by the first public node
12728  */
12729 void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12730
12731 /**
12732  * Proof of funding UTXO ownership by the second public node
12733  */
12734 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12735
12736 /**
12737  * Proof of funding UTXO ownership by the second public node
12738  */
12739 void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12740
12741 /**
12742  * The actual announcement
12743  */
12744 struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12745
12746 /**
12747  * The actual announcement
12748  */
12749 void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
12750
12751 /**
12752  * Constructs a new ChannelAnnouncement given each field
12753  */
12754 MUST_USE_RES struct LDKChannelAnnouncement ChannelAnnouncement_new(struct LDKSignature node_signature_1_arg, struct LDKSignature node_signature_2_arg, struct LDKSignature bitcoin_signature_1_arg, struct LDKSignature bitcoin_signature_2_arg, struct LDKUnsignedChannelAnnouncement contents_arg);
12755
12756 /**
12757  * Creates a copy of the ChannelAnnouncement
12758  */
12759 struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
12760
12761 /**
12762  * Frees any resources used by the UnsignedChannelUpdate, if is_owned is set and inner is non-NULL.
12763  */
12764 void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
12765
12766 /**
12767  * The genesis hash of the blockchain where the channel is to be opened
12768  */
12769 const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32];
12770
12771 /**
12772  * The genesis hash of the blockchain where the channel is to be opened
12773  */
12774 void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12775
12776 /**
12777  * The short channel ID
12778  */
12779 uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12780
12781 /**
12782  * The short channel ID
12783  */
12784 void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
12785
12786 /**
12787  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
12788  */
12789 uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12790
12791 /**
12792  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
12793  */
12794 void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12795
12796 /**
12797  * Channel flags
12798  */
12799 uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12800
12801 /**
12802  * Channel flags
12803  */
12804 void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
12805
12806 /**
12807  * The number of blocks such that if:
12808  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
12809  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
12810  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
12811  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
12812  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
12813  * forwarding. Note that the HTLC sender is the one who originally sets this value when
12814  * constructing the route.
12815  */
12816 uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12817
12818 /**
12819  * The number of blocks such that if:
12820  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
12821  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
12822  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
12823  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
12824  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
12825  * forwarding. Note that the HTLC sender is the one who originally sets this value when
12826  * constructing the route.
12827  */
12828 void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
12829
12830 /**
12831  * The minimum HTLC size incoming to sender, in milli-satoshi
12832  */
12833 uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12834
12835 /**
12836  * The minimum HTLC size incoming to sender, in milli-satoshi
12837  */
12838 void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
12839
12840 /**
12841  * The base HTLC fee charged by sender, in milli-satoshi
12842  */
12843 uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12844
12845 /**
12846  * The base HTLC fee charged by sender, in milli-satoshi
12847  */
12848 void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12849
12850 /**
12851  * The amount to fee multiplier, in micro-satoshi
12852  */
12853 uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12854
12855 /**
12856  * The amount to fee multiplier, in micro-satoshi
12857  */
12858 void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12859
12860 /**
12861  * Creates a copy of the UnsignedChannelUpdate
12862  */
12863 struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
12864
12865 /**
12866  * Frees any resources used by the ChannelUpdate, if is_owned is set and inner is non-NULL.
12867  */
12868 void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
12869
12870 /**
12871  * A signature of the channel update
12872  */
12873 struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
12874
12875 /**
12876  * A signature of the channel update
12877  */
12878 void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
12879
12880 /**
12881  * The actual channel update
12882  */
12883 struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
12884
12885 /**
12886  * The actual channel update
12887  */
12888 void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
12889
12890 /**
12891  * Constructs a new ChannelUpdate given each field
12892  */
12893 MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
12894
12895 /**
12896  * Creates a copy of the ChannelUpdate
12897  */
12898 struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
12899
12900 /**
12901  * Frees any resources used by the QueryChannelRange, if is_owned is set and inner is non-NULL.
12902  */
12903 void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
12904
12905 /**
12906  * The genesis hash of the blockchain being queried
12907  */
12908 const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32];
12909
12910 /**
12911  * The genesis hash of the blockchain being queried
12912  */
12913 void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12914
12915 /**
12916  * The height of the first block for the channel UTXOs being queried
12917  */
12918 uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
12919
12920 /**
12921  * The height of the first block for the channel UTXOs being queried
12922  */
12923 void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12924
12925 /**
12926  * The number of blocks to include in the query results
12927  */
12928 uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
12929
12930 /**
12931  * The number of blocks to include in the query results
12932  */
12933 void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12934
12935 /**
12936  * Constructs a new QueryChannelRange given each field
12937  */
12938 MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
12939
12940 /**
12941  * Creates a copy of the QueryChannelRange
12942  */
12943 struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
12944
12945 /**
12946  * Frees any resources used by the ReplyChannelRange, if is_owned is set and inner is non-NULL.
12947  */
12948 void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
12949
12950 /**
12951  * The genesis hash of the blockchain being queried
12952  */
12953 const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32];
12954
12955 /**
12956  * The genesis hash of the blockchain being queried
12957  */
12958 void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12959
12960 /**
12961  * The height of the first block in the range of the reply
12962  */
12963 uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12964
12965 /**
12966  * The height of the first block in the range of the reply
12967  */
12968 void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12969
12970 /**
12971  * The number of blocks included in the range of the reply
12972  */
12973 uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12974
12975 /**
12976  * The number of blocks included in the range of the reply
12977  */
12978 void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12979
12980 /**
12981  * True when this is the final reply for a query
12982  */
12983 bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12984
12985 /**
12986  * True when this is the final reply for a query
12987  */
12988 void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val);
12989
12990 /**
12991  * The short_channel_ids in the channel range
12992  */
12993 void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
12994
12995 /**
12996  * Constructs a new ReplyChannelRange given each field
12997  */
12998 MUST_USE_RES struct LDKReplyChannelRange ReplyChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg, bool sync_complete_arg, struct LDKCVec_u64Z short_channel_ids_arg);
12999
13000 /**
13001  * Creates a copy of the ReplyChannelRange
13002  */
13003 struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
13004
13005 /**
13006  * Frees any resources used by the QueryShortChannelIds, if is_owned is set and inner is non-NULL.
13007  */
13008 void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
13009
13010 /**
13011  * The genesis hash of the blockchain being queried
13012  */
13013 const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32];
13014
13015 /**
13016  * The genesis hash of the blockchain being queried
13017  */
13018 void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13019
13020 /**
13021  * The short_channel_ids that are being queried
13022  */
13023 void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
13024
13025 /**
13026  * Constructs a new QueryShortChannelIds given each field
13027  */
13028 MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
13029
13030 /**
13031  * Creates a copy of the QueryShortChannelIds
13032  */
13033 struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
13034
13035 /**
13036  * Frees any resources used by the ReplyShortChannelIdsEnd, if is_owned is set and inner is non-NULL.
13037  */
13038 void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
13039
13040 /**
13041  * The genesis hash of the blockchain that was queried
13042  */
13043 const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32];
13044
13045 /**
13046  * The genesis hash of the blockchain that was queried
13047  */
13048 void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13049
13050 /**
13051  * Indicates if the query recipient maintains up-to-date channel
13052  * information for the chain_hash
13053  */
13054 bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
13055
13056 /**
13057  * Indicates if the query recipient maintains up-to-date channel
13058  * information for the chain_hash
13059  */
13060 void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
13061
13062 /**
13063  * Constructs a new ReplyShortChannelIdsEnd given each field
13064  */
13065 MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
13066
13067 /**
13068  * Creates a copy of the ReplyShortChannelIdsEnd
13069  */
13070 struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
13071
13072 /**
13073  * Frees any resources used by the GossipTimestampFilter, if is_owned is set and inner is non-NULL.
13074  */
13075 void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
13076
13077 /**
13078  * The genesis hash of the blockchain for channel and node information
13079  */
13080 const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32];
13081
13082 /**
13083  * The genesis hash of the blockchain for channel and node information
13084  */
13085 void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13086
13087 /**
13088  * The starting unix timestamp
13089  */
13090 uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
13091
13092 /**
13093  * The starting unix timestamp
13094  */
13095 void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
13096
13097 /**
13098  * The range of information in seconds
13099  */
13100 uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
13101
13102 /**
13103  * The range of information in seconds
13104  */
13105 void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
13106
13107 /**
13108  * Constructs a new GossipTimestampFilter given each field
13109  */
13110 MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
13111
13112 /**
13113  * Creates a copy of the GossipTimestampFilter
13114  */
13115 struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
13116
13117 /**
13118  * Frees any resources used by the ErrorAction
13119  */
13120 void ErrorAction_free(struct LDKErrorAction this_ptr);
13121
13122 /**
13123  * Creates a copy of the ErrorAction
13124  */
13125 struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
13126
13127 /**
13128  * Frees any resources used by the LightningError, if is_owned is set and inner is non-NULL.
13129  */
13130 void LightningError_free(struct LDKLightningError this_obj);
13131
13132 /**
13133  * A human-readable message describing the error
13134  */
13135 struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
13136
13137 /**
13138  * A human-readable message describing the error
13139  */
13140 void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
13141
13142 /**
13143  * The action which should be taken against the offending peer.
13144  */
13145 struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
13146
13147 /**
13148  * The action which should be taken against the offending peer.
13149  */
13150 void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
13151
13152 /**
13153  * Constructs a new LightningError given each field
13154  */
13155 MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKCVec_u8Z err_arg, struct LDKErrorAction action_arg);
13156
13157 /**
13158  * Creates a copy of the LightningError
13159  */
13160 struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
13161
13162 /**
13163  * Frees any resources used by the CommitmentUpdate, if is_owned is set and inner is non-NULL.
13164  */
13165 void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
13166
13167 /**
13168  * update_add_htlc messages which should be sent
13169  */
13170 void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val);
13171
13172 /**
13173  * update_fulfill_htlc messages which should be sent
13174  */
13175 void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
13176
13177 /**
13178  * update_fail_htlc messages which should be sent
13179  */
13180 void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
13181
13182 /**
13183  * update_fail_malformed_htlc messages which should be sent
13184  */
13185 void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
13186
13187 /**
13188  * An update_fee message which should be sent
13189  */
13190 struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
13191
13192 /**
13193  * An update_fee message which should be sent
13194  */
13195 void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
13196
13197 /**
13198  * Finally, the commitment_signed message which should be sent
13199  */
13200 struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
13201
13202 /**
13203  * Finally, the commitment_signed message which should be sent
13204  */
13205 void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
13206
13207 /**
13208  * Constructs a new CommitmentUpdate given each field
13209  */
13210 MUST_USE_RES struct LDKCommitmentUpdate CommitmentUpdate_new(struct LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg, struct LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg, struct LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg, struct LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg, struct LDKUpdateFee update_fee_arg, struct LDKCommitmentSigned commitment_signed_arg);
13211
13212 /**
13213  * Creates a copy of the CommitmentUpdate
13214  */
13215 struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
13216
13217 /**
13218  * Frees any resources used by the HTLCFailChannelUpdate
13219  */
13220 void HTLCFailChannelUpdate_free(struct LDKHTLCFailChannelUpdate this_ptr);
13221
13222 /**
13223  * Creates a copy of the HTLCFailChannelUpdate
13224  */
13225 struct LDKHTLCFailChannelUpdate HTLCFailChannelUpdate_clone(const struct LDKHTLCFailChannelUpdate *NONNULL_PTR orig);
13226
13227 /**
13228  * Calls the free function if one is set
13229  */
13230 void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
13231
13232 /**
13233  * Calls the free function if one is set
13234  */
13235 void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
13236
13237 /**
13238  * Serialize the AcceptChannel object into a byte array which can be read by AcceptChannel_read
13239  */
13240 struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
13241
13242 /**
13243  * Read a AcceptChannel from a byte array, created by AcceptChannel_write
13244  */
13245 struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser);
13246
13247 /**
13248  * Serialize the AnnouncementSignatures object into a byte array which can be read by AnnouncementSignatures_read
13249  */
13250 struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
13251
13252 /**
13253  * Read a AnnouncementSignatures from a byte array, created by AnnouncementSignatures_write
13254  */
13255 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser);
13256
13257 /**
13258  * Serialize the ChannelReestablish object into a byte array which can be read by ChannelReestablish_read
13259  */
13260 struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
13261
13262 /**
13263  * Read a ChannelReestablish from a byte array, created by ChannelReestablish_write
13264  */
13265 struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
13266
13267 /**
13268  * Serialize the ClosingSigned object into a byte array which can be read by ClosingSigned_read
13269  */
13270 struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
13271
13272 /**
13273  * Read a ClosingSigned from a byte array, created by ClosingSigned_write
13274  */
13275 struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser);
13276
13277 /**
13278  * Serialize the CommitmentSigned object into a byte array which can be read by CommitmentSigned_read
13279  */
13280 struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
13281
13282 /**
13283  * Read a CommitmentSigned from a byte array, created by CommitmentSigned_write
13284  */
13285 struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser);
13286
13287 /**
13288  * Serialize the FundingCreated object into a byte array which can be read by FundingCreated_read
13289  */
13290 struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
13291
13292 /**
13293  * Read a FundingCreated from a byte array, created by FundingCreated_write
13294  */
13295 struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser);
13296
13297 /**
13298  * Serialize the FundingSigned object into a byte array which can be read by FundingSigned_read
13299  */
13300 struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
13301
13302 /**
13303  * Read a FundingSigned from a byte array, created by FundingSigned_write
13304  */
13305 struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser);
13306
13307 /**
13308  * Serialize the FundingLocked object into a byte array which can be read by FundingLocked_read
13309  */
13310 struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj);
13311
13312 /**
13313  * Read a FundingLocked from a byte array, created by FundingLocked_write
13314  */
13315 struct LDKCResult_FundingLockedDecodeErrorZ FundingLocked_read(struct LDKu8slice ser);
13316
13317 /**
13318  * Serialize the Init object into a byte array which can be read by Init_read
13319  */
13320 struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
13321
13322 /**
13323  * Read a Init from a byte array, created by Init_write
13324  */
13325 struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
13326
13327 /**
13328  * Serialize the OpenChannel object into a byte array which can be read by OpenChannel_read
13329  */
13330 struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
13331
13332 /**
13333  * Read a OpenChannel from a byte array, created by OpenChannel_write
13334  */
13335 struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser);
13336
13337 /**
13338  * Serialize the RevokeAndACK object into a byte array which can be read by RevokeAndACK_read
13339  */
13340 struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
13341
13342 /**
13343  * Read a RevokeAndACK from a byte array, created by RevokeAndACK_write
13344  */
13345 struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser);
13346
13347 /**
13348  * Serialize the Shutdown object into a byte array which can be read by Shutdown_read
13349  */
13350 struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
13351
13352 /**
13353  * Read a Shutdown from a byte array, created by Shutdown_write
13354  */
13355 struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser);
13356
13357 /**
13358  * Serialize the UpdateFailHTLC object into a byte array which can be read by UpdateFailHTLC_read
13359  */
13360 struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
13361
13362 /**
13363  * Read a UpdateFailHTLC from a byte array, created by UpdateFailHTLC_write
13364  */
13365 struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser);
13366
13367 /**
13368  * Serialize the UpdateFailMalformedHTLC object into a byte array which can be read by UpdateFailMalformedHTLC_read
13369  */
13370 struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
13371
13372 /**
13373  * Read a UpdateFailMalformedHTLC from a byte array, created by UpdateFailMalformedHTLC_write
13374  */
13375 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser);
13376
13377 /**
13378  * Serialize the UpdateFee object into a byte array which can be read by UpdateFee_read
13379  */
13380 struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
13381
13382 /**
13383  * Read a UpdateFee from a byte array, created by UpdateFee_write
13384  */
13385 struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser);
13386
13387 /**
13388  * Serialize the UpdateFulfillHTLC object into a byte array which can be read by UpdateFulfillHTLC_read
13389  */
13390 struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
13391
13392 /**
13393  * Read a UpdateFulfillHTLC from a byte array, created by UpdateFulfillHTLC_write
13394  */
13395 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser);
13396
13397 /**
13398  * Serialize the UpdateAddHTLC object into a byte array which can be read by UpdateAddHTLC_read
13399  */
13400 struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
13401
13402 /**
13403  * Read a UpdateAddHTLC from a byte array, created by UpdateAddHTLC_write
13404  */
13405 struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser);
13406
13407 /**
13408  * Serialize the Ping object into a byte array which can be read by Ping_read
13409  */
13410 struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
13411
13412 /**
13413  * Read a Ping from a byte array, created by Ping_write
13414  */
13415 struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
13416
13417 /**
13418  * Serialize the Pong object into a byte array which can be read by Pong_read
13419  */
13420 struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
13421
13422 /**
13423  * Read a Pong from a byte array, created by Pong_write
13424  */
13425 struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
13426
13427 /**
13428  * Serialize the UnsignedChannelAnnouncement object into a byte array which can be read by UnsignedChannelAnnouncement_read
13429  */
13430 struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
13431
13432 /**
13433  * Read a UnsignedChannelAnnouncement from a byte array, created by UnsignedChannelAnnouncement_write
13434  */
13435 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
13436
13437 /**
13438  * Serialize the ChannelAnnouncement object into a byte array which can be read by ChannelAnnouncement_read
13439  */
13440 struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
13441
13442 /**
13443  * Read a ChannelAnnouncement from a byte array, created by ChannelAnnouncement_write
13444  */
13445 struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser);
13446
13447 /**
13448  * Serialize the UnsignedChannelUpdate object into a byte array which can be read by UnsignedChannelUpdate_read
13449  */
13450 struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
13451
13452 /**
13453  * Read a UnsignedChannelUpdate from a byte array, created by UnsignedChannelUpdate_write
13454  */
13455 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
13456
13457 /**
13458  * Serialize the ChannelUpdate object into a byte array which can be read by ChannelUpdate_read
13459  */
13460 struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
13461
13462 /**
13463  * Read a ChannelUpdate from a byte array, created by ChannelUpdate_write
13464  */
13465 struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser);
13466
13467 /**
13468  * Serialize the ErrorMessage object into a byte array which can be read by ErrorMessage_read
13469  */
13470 struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
13471
13472 /**
13473  * Read a ErrorMessage from a byte array, created by ErrorMessage_write
13474  */
13475 struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
13476
13477 /**
13478  * Serialize the UnsignedNodeAnnouncement object into a byte array which can be read by UnsignedNodeAnnouncement_read
13479  */
13480 struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
13481
13482 /**
13483  * Read a UnsignedNodeAnnouncement from a byte array, created by UnsignedNodeAnnouncement_write
13484  */
13485 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
13486
13487 /**
13488  * Serialize the NodeAnnouncement object into a byte array which can be read by NodeAnnouncement_read
13489  */
13490 struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
13491
13492 /**
13493  * Read a NodeAnnouncement from a byte array, created by NodeAnnouncement_write
13494  */
13495 struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser);
13496
13497 /**
13498  * Read a QueryShortChannelIds from a byte array, created by QueryShortChannelIds_write
13499  */
13500 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
13501
13502 /**
13503  * Serialize the QueryShortChannelIds object into a byte array which can be read by QueryShortChannelIds_read
13504  */
13505 struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
13506
13507 /**
13508  * Read a ReplyShortChannelIdsEnd from a byte array, created by ReplyShortChannelIdsEnd_write
13509  */
13510 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
13511
13512 /**
13513  * Serialize the ReplyShortChannelIdsEnd object into a byte array which can be read by ReplyShortChannelIdsEnd_read
13514  */
13515 struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
13516
13517 /**
13518  *\n\t * Calculates the overflow safe ending block height for the query.\n\t * Overflow returns `0xffffffff`, otherwise returns `first_blocknum + number_of_blocks`\n\t
13519  */
13520 MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
13521
13522 /**
13523  * Read a QueryChannelRange from a byte array, created by QueryChannelRange_write
13524  */
13525 struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
13526
13527 /**
13528  * Serialize the QueryChannelRange object into a byte array which can be read by QueryChannelRange_read
13529  */
13530 struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
13531
13532 /**
13533  * Read a ReplyChannelRange from a byte array, created by ReplyChannelRange_write
13534  */
13535 struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
13536
13537 /**
13538  * Serialize the ReplyChannelRange object into a byte array which can be read by ReplyChannelRange_read
13539  */
13540 struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
13541
13542 /**
13543  * Read a GossipTimestampFilter from a byte array, created by GossipTimestampFilter_write
13544  */
13545 struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
13546
13547 /**
13548  * Serialize the GossipTimestampFilter object into a byte array which can be read by GossipTimestampFilter_read
13549  */
13550 struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
13551
13552 /**
13553  * Frees any resources used by the IgnoringMessageHandler, if is_owned is set and inner is non-NULL.
13554  */
13555 void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
13556
13557 /**
13558  * Constructs a new IgnoringMessageHandler given each field
13559  */
13560 MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
13561
13562 /**
13563  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
13564  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
13565  */
13566 struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
13567
13568 /**
13569  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
13570  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
13571  */
13572 struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
13573
13574 /**
13575  * Frees any resources used by the ErroringMessageHandler, if is_owned is set and inner is non-NULL.
13576  */
13577 void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
13578
13579 /**
13580  * Constructs a new ErroringMessageHandler
13581  */
13582 MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
13583
13584 /**
13585  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
13586  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
13587  */
13588 struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
13589
13590 /**
13591  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
13592  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
13593  */
13594 struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
13595
13596 /**
13597  * Frees any resources used by the MessageHandler, if is_owned is set and inner is non-NULL.
13598  */
13599 void MessageHandler_free(struct LDKMessageHandler this_obj);
13600
13601 /**
13602  * A message handler which handles messages specific to channels. Usually this is just a
13603  * ChannelManager object or a ErroringMessageHandler.
13604  */
13605 const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
13606
13607 /**
13608  * A message handler which handles messages specific to channels. Usually this is just a
13609  * ChannelManager object or a ErroringMessageHandler.
13610  */
13611 void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
13612
13613 /**
13614  * A message handler which handles messages updating our knowledge of the network channel
13615  * graph. Usually this is just a NetGraphMsgHandlerMonitor object or an IgnoringMessageHandler.
13616  */
13617 const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
13618
13619 /**
13620  * A message handler which handles messages updating our knowledge of the network channel
13621  * graph. Usually this is just a NetGraphMsgHandlerMonitor object or an IgnoringMessageHandler.
13622  */
13623 void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
13624
13625 /**
13626  * Constructs a new MessageHandler given each field
13627  */
13628 MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
13629
13630 /**
13631  * Creates a copy of a SocketDescriptor
13632  */
13633 struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
13634
13635 /**
13636  * Calls the free function if one is set
13637  */
13638 void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
13639
13640 /**
13641  * Frees any resources used by the PeerHandleError, if is_owned is set and inner is non-NULL.
13642  */
13643 void PeerHandleError_free(struct LDKPeerHandleError this_obj);
13644
13645 /**
13646  * Used to indicate that we probably can't make any future connections to this peer, implying
13647  * we should go ahead and force-close any channels we have with it.
13648  */
13649 bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr);
13650
13651 /**
13652  * Used to indicate that we probably can't make any future connections to this peer, implying
13653  * we should go ahead and force-close any channels we have with it.
13654  */
13655 void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
13656
13657 /**
13658  * Constructs a new PeerHandleError given each field
13659  */
13660 MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
13661
13662 /**
13663  * Creates a copy of the PeerHandleError
13664  */
13665 struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
13666
13667 /**
13668  * Frees any resources used by the PeerManager, if is_owned is set and inner is non-NULL.
13669  */
13670 void PeerManager_free(struct LDKPeerManager this_obj);
13671
13672 /**
13673  * Constructs a new PeerManager with the given message handlers and node_id secret key
13674  * ephemeral_random_data is used to derive per-connection ephemeral keys and must be
13675  * cryptographically secure random bytes.
13676  */
13677 MUST_USE_RES struct LDKPeerManager PeerManager_new(struct LDKMessageHandler message_handler, struct LDKSecretKey our_node_secret, const uint8_t (*ephemeral_random_data)[32], struct LDKLogger logger);
13678
13679 /**
13680  * Get the list of node ids for peers which have completed the initial handshake.
13681  *
13682  * For outbound connections, this will be the same as the their_node_id parameter passed in to
13683  * new_outbound_connection, however entries will only appear once the initial handshake has
13684  * completed and we are sure the remote peer has the private key for the given node_id.
13685  */
13686 MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
13687
13688 /**
13689  * Indicates a new outbound connection has been established to a node with the given node_id.
13690  * Note that if an Err is returned here you MUST NOT call socket_disconnected for the new
13691  * descriptor but must disconnect the connection immediately.
13692  *
13693  * Returns a small number of bytes to send to the remote node (currently always 50).
13694  *
13695  * Panics if descriptor is duplicative with some other descriptor which has not yet had a
13696  * socket_disconnected().
13697  */
13698 MUST_USE_RES struct LDKCResult_CVec_u8ZPeerHandleErrorZ PeerManager_new_outbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKSocketDescriptor descriptor);
13699
13700 /**
13701  * Indicates a new inbound connection has been established.
13702  *
13703  * May refuse the connection by returning an Err, but will never write bytes to the remote end
13704  * (outbound connector always speaks first). Note that if an Err is returned here you MUST NOT
13705  * call socket_disconnected for the new descriptor but must disconnect the connection
13706  * immediately.
13707  *
13708  * Panics if descriptor is duplicative with some other descriptor which has not yet had
13709  * socket_disconnected called.
13710  */
13711 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor);
13712
13713 /**
13714  * Indicates that there is room to write data to the given socket descriptor.
13715  *
13716  * May return an Err to indicate that the connection should be closed.
13717  *
13718  * Will most likely call send_data on the descriptor passed in (or the descriptor handed into
13719  * new_*\\_connection) before returning. Thus, be very careful with reentrancy issues! The
13720  * invariants around calling write_buffer_space_avail in case a write did not fully complete
13721  * must still hold - be ready to call write_buffer_space_avail again if a write call generated
13722  * here isn't sufficient! Panics if the descriptor was not previously registered in a
13723  * new_\\*_connection event.
13724  */
13725 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
13726
13727 /**
13728  * Indicates that data was read from the given socket descriptor.
13729  *
13730  * May return an Err to indicate that the connection should be closed.
13731  *
13732  * Will *not* call back into send_data on any descriptors to avoid reentrancy complexity.
13733  * Thus, however, you almost certainly want to call process_events() after any read_event to
13734  * generate send_data calls to handle responses.
13735  *
13736  * If Ok(true) is returned, further read_events should not be triggered until a send_data call
13737  * on this file descriptor has resume_read set (preventing DoS issues in the send buffer).
13738  *
13739  * Panics if the descriptor was not previously registered in a new_*_connection event.
13740  */
13741 MUST_USE_RES struct LDKCResult_boolPeerHandleErrorZ PeerManager_read_event(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR peer_descriptor, struct LDKu8slice data);
13742
13743 /**
13744  * Checks for any events generated by our handlers and processes them. Includes sending most
13745  * response messages as well as messages generated by calls to handler functions directly (eg
13746  * functions like ChannelManager::process_pending_htlc_forward or send_payment).
13747  */
13748 void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
13749
13750 /**
13751  * Indicates that the given socket descriptor's connection is now closed.
13752  *
13753  * This must only be called if the socket has been disconnected by the peer or your own
13754  * decision to disconnect it and must NOT be called in any case where other parts of this
13755  * library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect
13756  * the peer.
13757  *
13758  * Panics if the descriptor was not previously registered in a successful new_*_connection event.
13759  */
13760 void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
13761
13762 /**
13763  * Disconnect a peer given its node id.
13764  *
13765  * Set no_connection_possible to true to prevent any further connection with this peer,
13766  * force-closing any channels we have with it.
13767  *
13768  * If a peer is connected, this will call `disconnect_socket` on the descriptor for the peer,
13769  * so be careful about reentrancy issues.
13770  */
13771 void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
13772
13773 /**
13774  * This function should be called roughly once every 30 seconds.
13775  * It will send pings to each peer and disconnect those which did not respond to the last round of pings.
13776  * Will most likely call send_data on all of the registered descriptors, thus, be very careful with reentrancy issues!
13777  */
13778 void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
13779
13780 /**
13781  * Build the commitment secret from the seed and the commitment number
13782  */
13783 struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
13784
13785 /**
13786  * Derives a per-commitment-transaction private key (eg an htlc key or delayed_payment key)
13787  * from the base secret and the per_commitment_point.
13788  *
13789  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13790  * generated (ie our own).
13791  */
13792 struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
13793
13794 /**
13795  * Derives a per-commitment-transaction public key (eg an htlc key or a delayed_payment key)
13796  * from the base point and the per_commitment_key. This is the public equivalent of
13797  * derive_private_key - using only public keys to derive a public key instead of private keys.
13798  *
13799  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13800  * generated (ie our own).
13801  */
13802 struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point);
13803
13804 /**
13805  * Derives a per-commitment-transaction revocation key from its constituent parts.
13806  *
13807  * Only the cheating participant owns a valid witness to propagate a revoked
13808  * commitment transaction, thus per_commitment_secret always come from cheater
13809  * and revocation_base_secret always come from punisher, which is the broadcaster
13810  * of the transaction spending with this key knowledge.
13811  *
13812  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13813  * generated (ie our own).
13814  */
13815 struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]);
13816
13817 /**
13818  * Derives a per-commitment-transaction revocation public key from its constituent parts. This is
13819  * the public equivalend of derive_private_revocation_key - using only public keys to derive a
13820  * public key instead of private keys.
13821  *
13822  * Only the cheating participant owns a valid witness to propagate a revoked
13823  * commitment transaction, thus per_commitment_point always come from cheater
13824  * and revocation_base_point always come from punisher, which is the broadcaster
13825  * of the transaction spending with this key knowledge.
13826  *
13827  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13828  * generated (ie our own).
13829  */
13830 struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point);
13831
13832 /**
13833  * Frees any resources used by the TxCreationKeys, if is_owned is set and inner is non-NULL.
13834  */
13835 void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
13836
13837 /**
13838  * The broadcaster's per-commitment public key which was used to derive the other keys.
13839  */
13840 struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13841
13842 /**
13843  * The broadcaster's per-commitment public key which was used to derive the other keys.
13844  */
13845 void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13846
13847 /**
13848  * The revocation key which is used to allow the broadcaster of the commitment
13849  * transaction to provide their counterparty the ability to punish them if they broadcast
13850  * an old state.
13851  */
13852 struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13853
13854 /**
13855  * The revocation key which is used to allow the broadcaster of the commitment
13856  * transaction to provide their counterparty the ability to punish them if they broadcast
13857  * an old state.
13858  */
13859 void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13860
13861 /**
13862  * Broadcaster's HTLC Key
13863  */
13864 struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13865
13866 /**
13867  * Broadcaster's HTLC Key
13868  */
13869 void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13870
13871 /**
13872  * Countersignatory's HTLC Key
13873  */
13874 struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13875
13876 /**
13877  * Countersignatory's HTLC Key
13878  */
13879 void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13880
13881 /**
13882  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
13883  */
13884 struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13885
13886 /**
13887  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
13888  */
13889 void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13890
13891 /**
13892  * Constructs a new TxCreationKeys given each field
13893  */
13894 MUST_USE_RES struct LDKTxCreationKeys TxCreationKeys_new(struct LDKPublicKey per_commitment_point_arg, struct LDKPublicKey revocation_key_arg, struct LDKPublicKey broadcaster_htlc_key_arg, struct LDKPublicKey countersignatory_htlc_key_arg, struct LDKPublicKey broadcaster_delayed_payment_key_arg);
13895
13896 /**
13897  * Creates a copy of the TxCreationKeys
13898  */
13899 struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
13900
13901 /**
13902  * Serialize the TxCreationKeys object into a byte array which can be read by TxCreationKeys_read
13903  */
13904 struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj);
13905
13906 /**
13907  * Read a TxCreationKeys from a byte array, created by TxCreationKeys_write
13908  */
13909 struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser);
13910
13911 /**
13912  * Frees any resources used by the ChannelPublicKeys, if is_owned is set and inner is non-NULL.
13913  */
13914 void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
13915
13916 /**
13917  * The public key which is used to sign all commitment transactions, as it appears in the
13918  * on-chain channel lock-in 2-of-2 multisig output.
13919  */
13920 struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13921
13922 /**
13923  * The public key which is used to sign all commitment transactions, as it appears in the
13924  * on-chain channel lock-in 2-of-2 multisig output.
13925  */
13926 void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13927
13928 /**
13929  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
13930  * revocation keys. This is combined with the per-commitment-secret generated by the
13931  * counterparty to create a secret which the counterparty can reveal to revoke previous
13932  * states.
13933  */
13934 struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13935
13936 /**
13937  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
13938  * revocation keys. This is combined with the per-commitment-secret generated by the
13939  * counterparty to create a secret which the counterparty can reveal to revoke previous
13940  * states.
13941  */
13942 void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13943
13944 /**
13945  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
13946  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
13947  * static across every commitment transaction.
13948  */
13949 struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13950
13951 /**
13952  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
13953  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
13954  * static across every commitment transaction.
13955  */
13956 void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13957
13958 /**
13959  * The base point which is used (with derive_public_key) to derive a per-commitment payment
13960  * public key which receives non-HTLC-encumbered funds which are only available for spending
13961  * after some delay (or can be claimed via the revocation path).
13962  */
13963 struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13964
13965 /**
13966  * The base point which is used (with derive_public_key) to derive a per-commitment payment
13967  * public key which receives non-HTLC-encumbered funds which are only available for spending
13968  * after some delay (or can be claimed via the revocation path).
13969  */
13970 void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13971
13972 /**
13973  * The base point which is used (with derive_public_key) to derive a per-commitment public key
13974  * which is used to encumber HTLC-in-flight outputs.
13975  */
13976 struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13977
13978 /**
13979  * The base point which is used (with derive_public_key) to derive a per-commitment public key
13980  * which is used to encumber HTLC-in-flight outputs.
13981  */
13982 void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13983
13984 /**
13985  * Constructs a new ChannelPublicKeys given each field
13986  */
13987 MUST_USE_RES struct LDKChannelPublicKeys ChannelPublicKeys_new(struct LDKPublicKey funding_pubkey_arg, struct LDKPublicKey revocation_basepoint_arg, struct LDKPublicKey payment_point_arg, struct LDKPublicKey delayed_payment_basepoint_arg, struct LDKPublicKey htlc_basepoint_arg);
13988
13989 /**
13990  * Creates a copy of the ChannelPublicKeys
13991  */
13992 struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
13993
13994 /**
13995  * Serialize the ChannelPublicKeys object into a byte array which can be read by ChannelPublicKeys_read
13996  */
13997 struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj);
13998
13999 /**
14000  * Read a ChannelPublicKeys from a byte array, created by ChannelPublicKeys_write
14001  */
14002 struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser);
14003
14004 /**
14005  * Create per-state keys from channel base points and the per-commitment point.
14006  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
14007  */
14008 MUST_USE_RES struct LDKCResult_TxCreationKeysErrorZ TxCreationKeys_derive_new(struct LDKPublicKey per_commitment_point, struct LDKPublicKey broadcaster_delayed_payment_base, struct LDKPublicKey broadcaster_htlc_base, struct LDKPublicKey countersignatory_revocation_base, struct LDKPublicKey countersignatory_htlc_base);
14009
14010 /**
14011  * Generate per-state keys from channel static keys.
14012  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
14013  */
14014 MUST_USE_RES struct LDKCResult_TxCreationKeysErrorZ TxCreationKeys_from_channel_static_keys(struct LDKPublicKey per_commitment_point, const struct LDKChannelPublicKeys *NONNULL_PTR broadcaster_keys, const struct LDKChannelPublicKeys *NONNULL_PTR countersignatory_keys);
14015
14016 /**
14017  * A script either spendable by the revocation
14018  * key or the broadcaster_delayed_payment_key and satisfying the relative-locktime OP_CSV constrain.
14019  * Encumbering a `to_holder` output on a commitment transaction or 2nd-stage HTLC transactions.
14020  */
14021 struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
14022
14023 /**
14024  * Frees any resources used by the HTLCOutputInCommitment, if is_owned is set and inner is non-NULL.
14025  */
14026 void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
14027
14028 /**
14029  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
14030  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
14031  * need to compare this value to whether the commitment transaction in question is that of
14032  * the counterparty or our own.
14033  */
14034 bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14035
14036 /**
14037  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
14038  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
14039  * need to compare this value to whether the commitment transaction in question is that of
14040  * the counterparty or our own.
14041  */
14042 void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
14043
14044 /**
14045  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
14046  * this divided by 1000.
14047  */
14048 uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14049
14050 /**
14051  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
14052  * this divided by 1000.
14053  */
14054 void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
14055
14056 /**
14057  * The CLTV lock-time at which this HTLC expires.
14058  */
14059 uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14060
14061 /**
14062  * The CLTV lock-time at which this HTLC expires.
14063  */
14064 void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
14065
14066 /**
14067  * The hash of the preimage which unlocks this HTLC.
14068  */
14069 const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
14070
14071 /**
14072  * The hash of the preimage which unlocks this HTLC.
14073  */
14074 void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14075
14076 /**
14077  * The position within the commitment transactions' outputs. This may be None if the value is
14078  * below the dust limit (in which case no output appears in the commitment transaction and the
14079  * value is spent to additional transaction fees).
14080  */
14081 struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14082
14083 /**
14084  * The position within the commitment transactions' outputs. This may be None if the value is
14085  * below the dust limit (in which case no output appears in the commitment transaction and the
14086  * value is spent to additional transaction fees).
14087  */
14088 void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
14089
14090 /**
14091  * Constructs a new HTLCOutputInCommitment given each field
14092  */
14093 MUST_USE_RES struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_new(bool offered_arg, uint64_t amount_msat_arg, uint32_t cltv_expiry_arg, struct LDKThirtyTwoBytes payment_hash_arg, struct LDKCOption_u32Z transaction_output_index_arg);
14094
14095 /**
14096  * Creates a copy of the HTLCOutputInCommitment
14097  */
14098 struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
14099
14100 /**
14101  * Serialize the HTLCOutputInCommitment object into a byte array which can be read by HTLCOutputInCommitment_read
14102  */
14103 struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
14104
14105 /**
14106  * Read a HTLCOutputInCommitment from a byte array, created by HTLCOutputInCommitment_write
14107  */
14108 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser);
14109
14110 /**
14111  * Gets the witness redeemscript for an HTLC output in a commitment transaction. Note that htlc
14112  * does not need to have its previous_output_index filled.
14113  */
14114 struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, const struct LDKTxCreationKeys *NONNULL_PTR keys);
14115
14116 /**
14117  * Gets the redeemscript for a funding output from the two funding public keys.
14118  * Note that the order of funding public keys does not matter.
14119  */
14120 struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
14121
14122 /**
14123  * panics if htlc.transaction_output_index.is_none()!
14124  */
14125 struct LDKTransaction build_htlc_transaction(const uint8_t (*prev_hash)[32], uint32_t feerate_per_kw, uint16_t contest_delay, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, struct LDKPublicKey broadcaster_delayed_payment_key, struct LDKPublicKey revocation_key);
14126
14127 /**
14128  * Frees any resources used by the ChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14129  */
14130 void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
14131
14132 /**
14133  * Holder public keys
14134  */
14135 struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14136
14137 /**
14138  * Holder public keys
14139  */
14140 void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
14141
14142 /**
14143  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
14144  */
14145 uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14146
14147 /**
14148  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
14149  */
14150 void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
14151
14152 /**
14153  * Whether the holder is the initiator of this channel.
14154  * This is an input to the commitment number obscure factor computation.
14155  */
14156 bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14157
14158 /**
14159  * Whether the holder is the initiator of this channel.
14160  * This is an input to the commitment number obscure factor computation.
14161  */
14162 void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
14163
14164 /**
14165  * The late-bound counterparty channel transaction parameters.
14166  * These parameters are populated at the point in the protocol where the counterparty provides them.
14167  */
14168 struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14169
14170 /**
14171  * The late-bound counterparty channel transaction parameters.
14172  * These parameters are populated at the point in the protocol where the counterparty provides them.
14173  */
14174 void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
14175
14176 /**
14177  * The late-bound funding outpoint
14178  */
14179 struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14180
14181 /**
14182  * The late-bound funding outpoint
14183  */
14184 void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
14185
14186 /**
14187  * Constructs a new ChannelTransactionParameters given each field
14188  */
14189 MUST_USE_RES struct LDKChannelTransactionParameters ChannelTransactionParameters_new(struct LDKChannelPublicKeys holder_pubkeys_arg, uint16_t holder_selected_contest_delay_arg, bool is_outbound_from_holder_arg, struct LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg, struct LDKOutPoint funding_outpoint_arg);
14190
14191 /**
14192  * Creates a copy of the ChannelTransactionParameters
14193  */
14194 struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
14195
14196 /**
14197  * Frees any resources used by the CounterpartyChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14198  */
14199 void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
14200
14201 /**
14202  * Counter-party public keys
14203  */
14204 struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
14205
14206 /**
14207  * Counter-party public keys
14208  */
14209 void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
14210
14211 /**
14212  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
14213  */
14214 uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
14215
14216 /**
14217  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
14218  */
14219 void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
14220
14221 /**
14222  * Constructs a new CounterpartyChannelTransactionParameters given each field
14223  */
14224 MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
14225
14226 /**
14227  * Creates a copy of the CounterpartyChannelTransactionParameters
14228  */
14229 struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
14230
14231 /**
14232  * Whether the late bound parameters are populated.
14233  */
14234 MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14235
14236 /**
14237  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
14238  * given that the holder is the broadcaster.
14239  *
14240  * self.is_populated() must be true before calling this function.
14241  */
14242 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14243
14244 /**
14245  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
14246  * given that the counterparty is the broadcaster.
14247  *
14248  * self.is_populated() must be true before calling this function.
14249  */
14250 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14251
14252 /**
14253  * Serialize the CounterpartyChannelTransactionParameters object into a byte array which can be read by CounterpartyChannelTransactionParameters_read
14254  */
14255 struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
14256
14257 /**
14258  * Read a CounterpartyChannelTransactionParameters from a byte array, created by CounterpartyChannelTransactionParameters_write
14259  */
14260 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser);
14261
14262 /**
14263  * Serialize the ChannelTransactionParameters object into a byte array which can be read by ChannelTransactionParameters_read
14264  */
14265 struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
14266
14267 /**
14268  * Read a ChannelTransactionParameters from a byte array, created by ChannelTransactionParameters_write
14269  */
14270 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser);
14271
14272 /**
14273  * Frees any resources used by the DirectedChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14274  */
14275 void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
14276
14277 /**
14278  * Get the channel pubkeys for the broadcaster
14279  */
14280 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14281
14282 /**
14283  * Get the channel pubkeys for the countersignatory
14284  */
14285 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14286
14287 /**
14288  * Get the contest delay applicable to the transactions.
14289  * Note that the contest delay was selected by the countersignatory.
14290  */
14291 MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14292
14293 /**
14294  * Whether the channel is outbound from the broadcaster.
14295  *
14296  * The boolean representing the side that initiated the channel is
14297  * an input to the commitment number obscure factor computation.
14298  */
14299 MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14300
14301 /**
14302  * The funding outpoint
14303  */
14304 MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14305
14306 /**
14307  * Frees any resources used by the HolderCommitmentTransaction, if is_owned is set and inner is non-NULL.
14308  */
14309 void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
14310
14311 /**
14312  * Our counterparty's signature for the transaction
14313  */
14314 struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
14315
14316 /**
14317  * Our counterparty's signature for the transaction
14318  */
14319 void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
14320
14321 /**
14322  * All non-dust counterparty HTLC signatures, in the order they appear in the transaction
14323  */
14324 void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
14325
14326 /**
14327  * Creates a copy of the HolderCommitmentTransaction
14328  */
14329 struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
14330
14331 /**
14332  * Serialize the HolderCommitmentTransaction object into a byte array which can be read by HolderCommitmentTransaction_read
14333  */
14334 struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj);
14335
14336 /**
14337  * Read a HolderCommitmentTransaction from a byte array, created by HolderCommitmentTransaction_write
14338  */
14339 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser);
14340
14341 /**
14342  * Create a new holder transaction with the given counterparty signatures.
14343  * The funding keys are used to figure out which signature should go first when building the transaction for broadcast.
14344  */
14345 MUST_USE_RES struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_new(struct LDKCommitmentTransaction commitment_tx, struct LDKSignature counterparty_sig, struct LDKCVec_SignatureZ counterparty_htlc_sigs, struct LDKPublicKey holder_funding_key, struct LDKPublicKey counterparty_funding_key);
14346
14347 /**
14348  * Frees any resources used by the BuiltCommitmentTransaction, if is_owned is set and inner is non-NULL.
14349  */
14350 void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
14351
14352 /**
14353  * The commitment transaction
14354  */
14355 struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
14356
14357 /**
14358  * The commitment transaction
14359  */
14360 void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
14361
14362 /**
14363  * The txid for the commitment transaction.
14364  *
14365  * This is provided as a performance optimization, instead of calling transaction.txid()
14366  * multiple times.
14367  */
14368 const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
14369
14370 /**
14371  * The txid for the commitment transaction.
14372  *
14373  * This is provided as a performance optimization, instead of calling transaction.txid()
14374  * multiple times.
14375  */
14376 void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14377
14378 /**
14379  * Constructs a new BuiltCommitmentTransaction given each field
14380  */
14381 MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
14382
14383 /**
14384  * Creates a copy of the BuiltCommitmentTransaction
14385  */
14386 struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
14387
14388 /**
14389  * Serialize the BuiltCommitmentTransaction object into a byte array which can be read by BuiltCommitmentTransaction_read
14390  */
14391 struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj);
14392
14393 /**
14394  * Read a BuiltCommitmentTransaction from a byte array, created by BuiltCommitmentTransaction_write
14395  */
14396 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser);
14397
14398 /**
14399  * Get the SIGHASH_ALL sighash value of the transaction.
14400  *
14401  * This can be used to verify a signature.
14402  */
14403 MUST_USE_RES struct LDKThirtyTwoBytes BuiltCommitmentTransaction_get_sighash_all(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_arg, struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
14404
14405 /**
14406  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
14407  * because we are about to broadcast a holder transaction.
14408  */
14409 MUST_USE_RES struct LDKSignature BuiltCommitmentTransaction_sign(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_arg, const uint8_t (*funding_key)[32], struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
14410
14411 /**
14412  * Frees any resources used by the CommitmentTransaction, if is_owned is set and inner is non-NULL.
14413  */
14414 void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
14415
14416 /**
14417  * Creates a copy of the CommitmentTransaction
14418  */
14419 struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
14420
14421 /**
14422  * Serialize the CommitmentTransaction object into a byte array which can be read by CommitmentTransaction_read
14423  */
14424 struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
14425
14426 /**
14427  * Read a CommitmentTransaction from a byte array, created by CommitmentTransaction_write
14428  */
14429 struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser);
14430
14431 /**
14432  * The backwards-counting commitment number
14433  */
14434 MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14435
14436 /**
14437  * The value to be sent to the broadcaster
14438  */
14439 MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14440
14441 /**
14442  * The value to be sent to the counterparty
14443  */
14444 MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14445
14446 /**
14447  * The feerate paid per 1000-weight-unit in this commitment transaction.
14448  */
14449 MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14450
14451 /**
14452  * Trust our pre-built transaction and derived transaction creation public keys.
14453  *
14454  * Applies a wrapper which allows access to these fields.
14455  *
14456  * This should only be used if you fully trust the builder of this object.  It should not
14457  *\tbe used by an external signer - instead use the verify function.
14458  */
14459 MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14460
14461 /**
14462  * Verify our pre-built transaction and derived transaction creation public keys.
14463  *
14464  * Applies a wrapper which allows access to these fields.
14465  *
14466  * An external validating signer must call this method before signing
14467  * or using the built transaction.
14468  */
14469 MUST_USE_RES struct LDKCResult_TrustedCommitmentTransactionNoneZ CommitmentTransaction_verify(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg, const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR channel_parameters, const struct LDKChannelPublicKeys *NONNULL_PTR broadcaster_keys, const struct LDKChannelPublicKeys *NONNULL_PTR countersignatory_keys);
14470
14471 /**
14472  * Frees any resources used by the TrustedCommitmentTransaction, if is_owned is set and inner is non-NULL.
14473  */
14474 void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
14475
14476 /**
14477  * The transaction ID of the built Bitcoin transaction
14478  */
14479 MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14480
14481 /**
14482  * The pre-built Bitcoin commitment transaction
14483  */
14484 MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14485
14486 /**
14487  * The pre-calculated transaction creation public keys.
14488  */
14489 MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14490
14491 /**
14492  * Get a signature for each HTLC which was included in the commitment transaction (ie for
14493  * which HTLCOutputInCommitment::transaction_output_index.is_some()).
14494  *
14495  * The returned Vec has one entry for each HTLC, and in the same order.
14496  */
14497 MUST_USE_RES struct LDKCResult_CVec_SignatureZNoneZ TrustedCommitmentTransaction_get_htlc_sigs(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg, const uint8_t (*htlc_base_key)[32], const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR channel_parameters);
14498
14499 /**
14500  * Get the transaction number obscure factor
14501  */
14502 uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
14503
14504 /**
14505  * Creates a copy of the InitFeatures
14506  */
14507 struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
14508
14509 /**
14510  * Creates a copy of the NodeFeatures
14511  */
14512 struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
14513
14514 /**
14515  * Creates a copy of the ChannelFeatures
14516  */
14517 struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
14518
14519 /**
14520  * Creates a copy of the InvoiceFeatures
14521  */
14522 struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
14523
14524 /**
14525  * Frees any resources used by the InitFeatures, if is_owned is set and inner is non-NULL.
14526  */
14527 void InitFeatures_free(struct LDKInitFeatures this_obj);
14528
14529 /**
14530  * Frees any resources used by the NodeFeatures, if is_owned is set and inner is non-NULL.
14531  */
14532 void NodeFeatures_free(struct LDKNodeFeatures this_obj);
14533
14534 /**
14535  * Frees any resources used by the ChannelFeatures, if is_owned is set and inner is non-NULL.
14536  */
14537 void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
14538
14539 /**
14540  * Frees any resources used by the InvoiceFeatures, if is_owned is set and inner is non-NULL.
14541  */
14542 void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
14543
14544 /**
14545  * Create a blank Features with no features set
14546  */
14547 MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void);
14548
14549 /**
14550  * Creates a Features with the bits set which are known by the implementation
14551  */
14552 MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void);
14553
14554 /**
14555  * Create a blank Features with no features set
14556  */
14557 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void);
14558
14559 /**
14560  * Creates a Features with the bits set which are known by the implementation
14561  */
14562 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void);
14563
14564 /**
14565  * Create a blank Features with no features set
14566  */
14567 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void);
14568
14569 /**
14570  * Creates a Features with the bits set which are known by the implementation
14571  */
14572 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void);
14573
14574 /**
14575  * Create a blank Features with no features set
14576  */
14577 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
14578
14579 /**
14580  * Creates a Features with the bits set which are known by the implementation
14581  */
14582 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
14583
14584 /**
14585  * Serialize the InitFeatures object into a byte array which can be read by InitFeatures_read
14586  */
14587 struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj);
14588
14589 /**
14590  * Serialize the NodeFeatures object into a byte array which can be read by NodeFeatures_read
14591  */
14592 struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
14593
14594 /**
14595  * Serialize the ChannelFeatures object into a byte array which can be read by ChannelFeatures_read
14596  */
14597 struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
14598
14599 /**
14600  * Serialize the InvoiceFeatures object into a byte array which can be read by InvoiceFeatures_read
14601  */
14602 struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
14603
14604 /**
14605  * Read a InitFeatures from a byte array, created by InitFeatures_write
14606  */
14607 struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser);
14608
14609 /**
14610  * Read a NodeFeatures from a byte array, created by NodeFeatures_write
14611  */
14612 struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
14613
14614 /**
14615  * Read a ChannelFeatures from a byte array, created by ChannelFeatures_write
14616  */
14617 struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser);
14618
14619 /**
14620  * Read a InvoiceFeatures from a byte array, created by InvoiceFeatures_write
14621  */
14622 struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
14623
14624 /**
14625  * Frees any resources used by the RouteHop, if is_owned is set and inner is non-NULL.
14626  */
14627 void RouteHop_free(struct LDKRouteHop this_obj);
14628
14629 /**
14630  * The node_id of the node at this hop.
14631  */
14632 struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14633
14634 /**
14635  * The node_id of the node at this hop.
14636  */
14637 void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14638
14639 /**
14640  * The node_announcement features of the node at this hop. For the last hop, these may be
14641  * amended to match the features present in the invoice this node generated.
14642  */
14643 struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14644
14645 /**
14646  * The node_announcement features of the node at this hop. For the last hop, these may be
14647  * amended to match the features present in the invoice this node generated.
14648  */
14649 void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
14650
14651 /**
14652  * The channel that should be used from the previous hop to reach this node.
14653  */
14654 uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14655
14656 /**
14657  * The channel that should be used from the previous hop to reach this node.
14658  */
14659 void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
14660
14661 /**
14662  * The channel_announcement features of the channel that should be used from the previous hop
14663  * to reach this node.
14664  */
14665 struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14666
14667 /**
14668  * The channel_announcement features of the channel that should be used from the previous hop
14669  * to reach this node.
14670  */
14671 void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
14672
14673 /**
14674  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
14675  * For the last hop, this should be the full value of the payment (might be more than
14676  * requested if we had to match htlc_minimum_msat).
14677  */
14678 uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14679
14680 /**
14681  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
14682  * For the last hop, this should be the full value of the payment (might be more than
14683  * requested if we had to match htlc_minimum_msat).
14684  */
14685 void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
14686
14687 /**
14688  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
14689  * expected at the destination, in excess of the current block height.
14690  */
14691 uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14692
14693 /**
14694  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
14695  * expected at the destination, in excess of the current block height.
14696  */
14697 void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
14698
14699 /**
14700  * Constructs a new RouteHop given each field
14701  */
14702 MUST_USE_RES struct LDKRouteHop RouteHop_new(struct LDKPublicKey pubkey_arg, struct LDKNodeFeatures node_features_arg, uint64_t short_channel_id_arg, struct LDKChannelFeatures channel_features_arg, uint64_t fee_msat_arg, uint32_t cltv_expiry_delta_arg);
14703
14704 /**
14705  * Creates a copy of the RouteHop
14706  */
14707 struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
14708
14709 /**
14710  * Frees any resources used by the Route, if is_owned is set and inner is non-NULL.
14711  */
14712 void Route_free(struct LDKRoute this_obj);
14713
14714 /**
14715  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
14716  * last RouteHop in each path must be the same.
14717  * Each entry represents a list of hops, NOT INCLUDING our own, where the last hop is the
14718  * destination. Thus, this must always be at least length one. While the maximum length of any
14719  * given path is variable, keeping the length of any path to less than 20 should currently
14720  * ensure it is viable.
14721  */
14722 void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val);
14723
14724 /**
14725  * Constructs a new Route given each field
14726  */
14727 MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg);
14728
14729 /**
14730  * Creates a copy of the Route
14731  */
14732 struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
14733
14734 /**
14735  * Serialize the Route object into a byte array which can be read by Route_read
14736  */
14737 struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
14738
14739 /**
14740  * Read a Route from a byte array, created by Route_write
14741  */
14742 struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
14743
14744 /**
14745  * Frees any resources used by the RouteHint, if is_owned is set and inner is non-NULL.
14746  */
14747 void RouteHint_free(struct LDKRouteHint this_obj);
14748
14749 /**
14750  * The node_id of the non-target end of the route
14751  */
14752 struct LDKPublicKey RouteHint_get_src_node_id(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14753
14754 /**
14755  * The node_id of the non-target end of the route
14756  */
14757 void RouteHint_set_src_node_id(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14758
14759 /**
14760  * The short_channel_id of this channel
14761  */
14762 uint64_t RouteHint_get_short_channel_id(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14763
14764 /**
14765  * The short_channel_id of this channel
14766  */
14767 void RouteHint_set_short_channel_id(struct LDKRouteHint *NONNULL_PTR this_ptr, uint64_t val);
14768
14769 /**
14770  * The fees which must be paid to use this channel
14771  */
14772 struct LDKRoutingFees RouteHint_get_fees(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14773
14774 /**
14775  * The fees which must be paid to use this channel
14776  */
14777 void RouteHint_set_fees(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
14778
14779 /**
14780  * The difference in CLTV values between this node and the next node.
14781  */
14782 uint16_t RouteHint_get_cltv_expiry_delta(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14783
14784 /**
14785  * The difference in CLTV values between this node and the next node.
14786  */
14787 void RouteHint_set_cltv_expiry_delta(struct LDKRouteHint *NONNULL_PTR this_ptr, uint16_t val);
14788
14789 /**
14790  * The minimum value, in msat, which must be relayed to the next hop.
14791  */
14792 struct LDKCOption_u64Z RouteHint_get_htlc_minimum_msat(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14793
14794 /**
14795  * The minimum value, in msat, which must be relayed to the next hop.
14796  */
14797 void RouteHint_set_htlc_minimum_msat(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14798
14799 /**
14800  * The maximum value in msat available for routing with a single HTLC.
14801  */
14802 struct LDKCOption_u64Z RouteHint_get_htlc_maximum_msat(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14803
14804 /**
14805  * The maximum value in msat available for routing with a single HTLC.
14806  */
14807 void RouteHint_set_htlc_maximum_msat(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14808
14809 /**
14810  * Constructs a new RouteHint given each field
14811  */
14812 MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, struct LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, struct LDKCOption_u64Z htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg);
14813
14814 /**
14815  * Creates a copy of the RouteHint
14816  */
14817 struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
14818
14819 /**
14820  * Gets a route from us (payer) to the given target node (payee).
14821  *
14822  * If the payee provided features in their invoice, they should be provided via payee_features.
14823  * Without this, MPP will only be used if the payee's features are available in the network graph.
14824  *
14825  * Extra routing hops between known nodes and the target will be used if they are included in
14826  * last_hops.
14827  *
14828  * If some channels aren't announced, it may be useful to fill in a first_hops with the
14829  * results from a local ChannelManager::list_usable_channels() call. If it is filled in, our
14830  * view of our local channels (from net_graph_msg_handler) will be ignored, and only those
14831  * in first_hops will be used.
14832  *
14833  * Panics if first_hops contains channels without short_channel_ids
14834  * (ChannelManager::list_usable_channels will never include such channels).
14835  *
14836  * The fees on channels from us to next-hops are ignored (as they are assumed to all be
14837  * equal), however the enabled/disabled bit on such channels as well as the
14838  * htlc_minimum_msat/htlc_maximum_msat *are* checked as they may change based on the receiving node.
14839  */
14840 struct LDKCResult_RouteLightningErrorZ get_route(struct LDKPublicKey our_node_id, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKPublicKey payee, struct LDKInvoiceFeatures payee_features, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, struct LDKLogger logger);
14841
14842 /**
14843  * Frees any resources used by the NetworkGraph, if is_owned is set and inner is non-NULL.
14844  */
14845 void NetworkGraph_free(struct LDKNetworkGraph this_obj);
14846
14847 /**
14848  * Creates a copy of the NetworkGraph
14849  */
14850 struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
14851
14852 /**
14853  * Frees any resources used by the LockedNetworkGraph, if is_owned is set and inner is non-NULL.
14854  */
14855 void LockedNetworkGraph_free(struct LDKLockedNetworkGraph this_obj);
14856
14857 /**
14858  * Frees any resources used by the NetGraphMsgHandler, if is_owned is set and inner is non-NULL.
14859  */
14860 void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
14861
14862 /**
14863  * Creates a new tracker of the actual state of the network of channels and nodes,
14864  * assuming a fresh network graph.
14865  * Chain monitor is used to make sure announced channels exist on-chain,
14866  * channel data is correct, and that the announcement is signed with
14867  * channel owners' keys.
14868  */
14869 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_new(struct LDKThirtyTwoBytes genesis_hash, struct LDKAccess *chain_access, struct LDKLogger logger);
14870
14871 /**
14872  * Creates a new tracker of the actual state of the network of channels and nodes,
14873  * assuming an existing Network Graph.
14874  */
14875 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_from_net_graph(struct LDKAccess *chain_access, struct LDKLogger logger, struct LDKNetworkGraph network_graph);
14876
14877 /**
14878  * Adds a provider used to check new announcements. Does not affect
14879  * existing announcements unless they are updated.
14880  * Add, update or remove the provider would replace the current one.
14881  */
14882 void NetGraphMsgHandler_add_chain_access(struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg, struct LDKAccess *chain_access);
14883
14884 /**
14885  * Take a read lock on the network_graph and return it in the C-bindings
14886  * newtype helper. This is likely only useful when called via the C
14887  * bindings as you can call `self.network_graph.read().unwrap()` in Rust
14888  * yourself.
14889  */
14890 MUST_USE_RES struct LDKLockedNetworkGraph NetGraphMsgHandler_read_locked_graph(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14891
14892 /**
14893  * Get a reference to the NetworkGraph which this read-lock contains.
14894  */
14895 MUST_USE_RES struct LDKNetworkGraph LockedNetworkGraph_graph(const struct LDKLockedNetworkGraph *NONNULL_PTR this_arg);
14896
14897 /**
14898  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
14899  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
14900  */
14901 struct LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14902
14903 /**
14904  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
14905  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
14906  */
14907 struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14908
14909 /**
14910  * Frees any resources used by the DirectionalChannelInfo, if is_owned is set and inner is non-NULL.
14911  */
14912 void DirectionalChannelInfo_free(struct LDKDirectionalChannelInfo this_obj);
14913
14914 /**
14915  * When the last update to the channel direction was issued.
14916  * Value is opaque, as set in the announcement.
14917  */
14918 uint32_t DirectionalChannelInfo_get_last_update(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14919
14920 /**
14921  * When the last update to the channel direction was issued.
14922  * Value is opaque, as set in the announcement.
14923  */
14924 void DirectionalChannelInfo_set_last_update(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint32_t val);
14925
14926 /**
14927  * Whether the channel can be currently used for payments (in this one direction).
14928  */
14929 bool DirectionalChannelInfo_get_enabled(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14930
14931 /**
14932  * Whether the channel can be currently used for payments (in this one direction).
14933  */
14934 void DirectionalChannelInfo_set_enabled(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, bool val);
14935
14936 /**
14937  * The difference in CLTV values that you must have when routing through this channel.
14938  */
14939 uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14940
14941 /**
14942  * The difference in CLTV values that you must have when routing through this channel.
14943  */
14944 void DirectionalChannelInfo_set_cltv_expiry_delta(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint16_t val);
14945
14946 /**
14947  * The minimum value, which must be relayed to the next hop via the channel
14948  */
14949 uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14950
14951 /**
14952  * The minimum value, which must be relayed to the next hop via the channel
14953  */
14954 void DirectionalChannelInfo_set_htlc_minimum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint64_t val);
14955
14956 /**
14957  * The maximum value which may be relayed to the next hop via the channel.
14958  */
14959 struct LDKCOption_u64Z DirectionalChannelInfo_get_htlc_maximum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14960
14961 /**
14962  * The maximum value which may be relayed to the next hop via the channel.
14963  */
14964 void DirectionalChannelInfo_set_htlc_maximum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14965
14966 /**
14967  * Fees charged when the channel is used for routing
14968  */
14969 struct LDKRoutingFees DirectionalChannelInfo_get_fees(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14970
14971 /**
14972  * Fees charged when the channel is used for routing
14973  */
14974 void DirectionalChannelInfo_set_fees(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
14975
14976 /**
14977  * Most recent update for the channel received from the network
14978  * Mostly redundant with the data we store in fields explicitly.
14979  * Everything else is useful only for sending out for initial routing sync.
14980  * Not stored if contains excess data to prevent DoS.
14981  */
14982 struct LDKChannelUpdate DirectionalChannelInfo_get_last_update_message(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14983
14984 /**
14985  * Most recent update for the channel received from the network
14986  * Mostly redundant with the data we store in fields explicitly.
14987  * Everything else is useful only for sending out for initial routing sync.
14988  * Not stored if contains excess data to prevent DoS.
14989  */
14990 void DirectionalChannelInfo_set_last_update_message(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
14991
14992 /**
14993  * Constructs a new DirectionalChannelInfo given each field
14994  */
14995 MUST_USE_RES struct LDKDirectionalChannelInfo DirectionalChannelInfo_new(uint32_t last_update_arg, bool enabled_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg, struct LDKRoutingFees fees_arg, struct LDKChannelUpdate last_update_message_arg);
14996
14997 /**
14998  * Creates a copy of the DirectionalChannelInfo
14999  */
15000 struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig);
15001
15002 /**
15003  * Serialize the DirectionalChannelInfo object into a byte array which can be read by DirectionalChannelInfo_read
15004  */
15005 struct LDKCVec_u8Z DirectionalChannelInfo_write(const struct LDKDirectionalChannelInfo *NONNULL_PTR obj);
15006
15007 /**
15008  * Read a DirectionalChannelInfo from a byte array, created by DirectionalChannelInfo_write
15009  */
15010 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ DirectionalChannelInfo_read(struct LDKu8slice ser);
15011
15012 /**
15013  * Frees any resources used by the ChannelInfo, if is_owned is set and inner is non-NULL.
15014  */
15015 void ChannelInfo_free(struct LDKChannelInfo this_obj);
15016
15017 /**
15018  * Protocol features of a channel communicated during its announcement
15019  */
15020 struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15021
15022 /**
15023  * Protocol features of a channel communicated during its announcement
15024  */
15025 void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
15026
15027 /**
15028  * Source node of the first direction of a channel
15029  */
15030 struct LDKPublicKey ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15031
15032 /**
15033  * Source node of the first direction of a channel
15034  */
15035 void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15036
15037 /**
15038  * Details about the first direction of a channel
15039  */
15040 struct LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15041
15042 /**
15043  * Details about the first direction of a channel
15044  */
15045 void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
15046
15047 /**
15048  * Source node of the second direction of a channel
15049  */
15050 struct LDKPublicKey ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15051
15052 /**
15053  * Source node of the second direction of a channel
15054  */
15055 void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15056
15057 /**
15058  * Details about the second direction of a channel
15059  */
15060 struct LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15061
15062 /**
15063  * Details about the second direction of a channel
15064  */
15065 void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
15066
15067 /**
15068  * The channel capacity as seen on-chain, if chain lookup is available.
15069  */
15070 struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15071
15072 /**
15073  * The channel capacity as seen on-chain, if chain lookup is available.
15074  */
15075 void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
15076
15077 /**
15078  * An initial announcement of the channel
15079  * Mostly redundant with the data we store in fields explicitly.
15080  * Everything else is useful only for sending out for initial routing sync.
15081  * Not stored if contains excess data to prevent DoS.
15082  */
15083 struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15084
15085 /**
15086  * An initial announcement of the channel
15087  * Mostly redundant with the data we store in fields explicitly.
15088  * Everything else is useful only for sending out for initial routing sync.
15089  * Not stored if contains excess data to prevent DoS.
15090  */
15091 void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
15092
15093 /**
15094  * Constructs a new ChannelInfo given each field
15095  */
15096 MUST_USE_RES struct LDKChannelInfo ChannelInfo_new(struct LDKChannelFeatures features_arg, struct LDKPublicKey node_one_arg, struct LDKDirectionalChannelInfo one_to_two_arg, struct LDKPublicKey node_two_arg, struct LDKDirectionalChannelInfo two_to_one_arg, struct LDKCOption_u64Z capacity_sats_arg, struct LDKChannelAnnouncement announcement_message_arg);
15097
15098 /**
15099  * Creates a copy of the ChannelInfo
15100  */
15101 struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
15102
15103 /**
15104  * Serialize the ChannelInfo object into a byte array which can be read by ChannelInfo_read
15105  */
15106 struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
15107
15108 /**
15109  * Read a ChannelInfo from a byte array, created by ChannelInfo_write
15110  */
15111 struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser);
15112
15113 /**
15114  * Frees any resources used by the RoutingFees, if is_owned is set and inner is non-NULL.
15115  */
15116 void RoutingFees_free(struct LDKRoutingFees this_obj);
15117
15118 /**
15119  * Flat routing fee in satoshis
15120  */
15121 uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
15122
15123 /**
15124  * Flat routing fee in satoshis
15125  */
15126 void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
15127
15128 /**
15129  * Liquidity-based routing fee in millionths of a routed amount.
15130  * In other words, 10000 is 1%.
15131  */
15132 uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
15133
15134 /**
15135  * Liquidity-based routing fee in millionths of a routed amount.
15136  * In other words, 10000 is 1%.
15137  */
15138 void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
15139
15140 /**
15141  * Constructs a new RoutingFees given each field
15142  */
15143 MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
15144
15145 /**
15146  * Creates a copy of the RoutingFees
15147  */
15148 struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
15149
15150 /**
15151  * Read a RoutingFees from a byte array, created by RoutingFees_write
15152  */
15153 struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
15154
15155 /**
15156  * Serialize the RoutingFees object into a byte array which can be read by RoutingFees_read
15157  */
15158 struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
15159
15160 /**
15161  * Frees any resources used by the NodeAnnouncementInfo, if is_owned is set and inner is non-NULL.
15162  */
15163 void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
15164
15165 /**
15166  * Protocol features the node announced support for
15167  */
15168 struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15169
15170 /**
15171  * Protocol features the node announced support for
15172  */
15173 void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
15174
15175 /**
15176  * When the last known update to the node state was issued.
15177  * Value is opaque, as set in the announcement.
15178  */
15179 uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15180
15181 /**
15182  * When the last known update to the node state was issued.
15183  * Value is opaque, as set in the announcement.
15184  */
15185 void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
15186
15187 /**
15188  * Color assigned to the node
15189  */
15190 const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
15191
15192 /**
15193  * Color assigned to the node
15194  */
15195 void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
15196
15197 /**
15198  * Moniker assigned to the node.
15199  * May be invalid or malicious (eg control chars),
15200  * should not be exposed to the user.
15201  */
15202 const uint8_t (*NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[32];
15203
15204 /**
15205  * Moniker assigned to the node.
15206  * May be invalid or malicious (eg control chars),
15207  * should not be exposed to the user.
15208  */
15209 void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15210
15211 /**
15212  * Internet-level addresses via which one can connect to the node
15213  */
15214 void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
15215
15216 /**
15217  * An initial announcement of the node
15218  * Mostly redundant with the data we store in fields explicitly.
15219  * Everything else is useful only for sending out for initial routing sync.
15220  * Not stored if contains excess data to prevent DoS.
15221  */
15222 struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15223
15224 /**
15225  * An initial announcement of the node
15226  * Mostly redundant with the data we store in fields explicitly.
15227  * Everything else is useful only for sending out for initial routing sync.
15228  * Not stored if contains excess data to prevent DoS.
15229  */
15230 void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
15231
15232 /**
15233  * Constructs a new NodeAnnouncementInfo given each field
15234  */
15235 MUST_USE_RES struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_new(struct LDKNodeFeatures features_arg, uint32_t last_update_arg, struct LDKThreeBytes rgb_arg, struct LDKThirtyTwoBytes alias_arg, struct LDKCVec_NetAddressZ addresses_arg, struct LDKNodeAnnouncement announcement_message_arg);
15236
15237 /**
15238  * Creates a copy of the NodeAnnouncementInfo
15239  */
15240 struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
15241
15242 /**
15243  * Serialize the NodeAnnouncementInfo object into a byte array which can be read by NodeAnnouncementInfo_read
15244  */
15245 struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj);
15246
15247 /**
15248  * Read a NodeAnnouncementInfo from a byte array, created by NodeAnnouncementInfo_write
15249  */
15250 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
15251
15252 /**
15253  * Frees any resources used by the NodeInfo, if is_owned is set and inner is non-NULL.
15254  */
15255 void NodeInfo_free(struct LDKNodeInfo this_obj);
15256
15257 /**
15258  * All valid channels a node has announced
15259  */
15260 void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
15261
15262 /**
15263  * Lowest fees enabling routing via any of the enabled, known channels to a node.
15264  * The two fields (flat and proportional fee) are independent,
15265  * meaning they don't have to refer to the same channel.
15266  */
15267 struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
15268
15269 /**
15270  * Lowest fees enabling routing via any of the enabled, known channels to a node.
15271  * The two fields (flat and proportional fee) are independent,
15272  * meaning they don't have to refer to the same channel.
15273  */
15274 void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
15275
15276 /**
15277  * More information about a node from node_announcement.
15278  * Optional because we store a Node entry after learning about it from
15279  * a channel announcement, but before receiving a node announcement.
15280  */
15281 struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
15282
15283 /**
15284  * More information about a node from node_announcement.
15285  * Optional because we store a Node entry after learning about it from
15286  * a channel announcement, but before receiving a node announcement.
15287  */
15288 void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
15289
15290 /**
15291  * Constructs a new NodeInfo given each field
15292  */
15293 MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
15294
15295 /**
15296  * Creates a copy of the NodeInfo
15297  */
15298 struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
15299
15300 /**
15301  * Serialize the NodeInfo object into a byte array which can be read by NodeInfo_read
15302  */
15303 struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj);
15304
15305 /**
15306  * Read a NodeInfo from a byte array, created by NodeInfo_write
15307  */
15308 struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
15309
15310 /**
15311  * Serialize the NetworkGraph object into a byte array which can be read by NetworkGraph_read
15312  */
15313 struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
15314
15315 /**
15316  * Read a NetworkGraph from a byte array, created by NetworkGraph_write
15317  */
15318 struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser);
15319
15320 /**
15321  * Creates a new, empty, network graph.
15322  */
15323 MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash);
15324
15325 /**
15326  * For an already known node (from channel announcements), update its stored properties from a
15327  * given node announcement.
15328  *
15329  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15330  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15331  * routing messages from a source using a protocol other than the lightning P2P protocol.
15332  */
15333 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
15334
15335 /**
15336  * For an already known node (from channel announcements), update its stored properties from a
15337  * given node announcement without verifying the associated signatures. Because we aren't
15338  * given the associated signatures here we cannot relay the node announcement to any of our
15339  * peers.
15340  */
15341 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_unsigned_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR msg);
15342
15343 /**
15344  * Store or update channel info from a channel announcement.
15345  *
15346  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15347  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15348  * routing messages from a source using a protocol other than the lightning P2P protocol.
15349  *
15350  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
15351  * the corresponding UTXO exists on chain and is correctly-formatted.
15352  */
15353 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_from_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg, struct LDKAccess *chain_access);
15354
15355 /**
15356  * Store or update channel info from a channel announcement without verifying the associated
15357  * signatures. Because we aren't given the associated signatures here we cannot relay the
15358  * channel announcement to any of our peers.
15359  *
15360  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
15361  * the corresponding UTXO exists on chain and is correctly-formatted.
15362  */
15363 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_from_unsigned_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg, struct LDKAccess *chain_access);
15364
15365 /**
15366  * Close a channel if a corresponding HTLC fail was sent.
15367  * If permanent, removes a channel from the local storage.
15368  * May cause the removal of nodes too, if this was their last channel.
15369  * If not permanent, makes channels unavailable for routing.
15370  */
15371 void NetworkGraph_close_channel_from_update(struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
15372
15373 /**
15374  * For an already known (from announcement) channel, update info about one of the directions
15375  * of the channel.
15376  *
15377  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15378  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15379  * routing messages from a source using a protocol other than the lightning P2P protocol.
15380  */
15381 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
15382
15383 /**
15384  * For an already known (from announcement) channel, update info about one of the directions
15385  * of the channel without verifying the associated signatures. Because we aren't given the
15386  * associated signatures here we cannot relay the channel update to any of our peers.
15387  */
15388 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
15389
15390 /* Text to put at the end of the generated file */